1、首先不可逾越的文档阅读:https://wiki.ai-thinker.com/esp8266/docs
2、学习点滴,查漏补缺
1)运行模式和烧录模式
2)管脚定义
3)ESP8266EX管脚清单(ESP8266_Pin_List.xls)
2.1 GPIO端口各种模式的区别 (参考:https://blog.csdn.net/baidu_37366055/article/details/80060962 和 https://blog.csdn.net/weixin_42108484/article/details/80511568)
2.2 GPIO 输出寄存器
a) 输出使能寄存器 GPIO_ENABLE_W1TS
b) 输出禁用寄存器 GPIO_ENABLE_W1TC
c) 输出使能状态寄存器 GPIO_ENABLE
d) 输出低电平寄存器 GPIO_OUT_W1TC
e) 输出高电平寄存器 GPIO_OUT_W1TS
f)输出状态寄存器 GPIO_OUT
2.3 GPIO 输入寄存器
输入状态寄存器 GPIO_IN
2.4 GPIO 中断寄存器
a) 中断类型寄存器 GPIO_PIN12 (中断禁用,上升沿触发,下降沿触发,双沿触发,低电平,高电平)
b) 中断状态寄存器 GPIO_STATUS
c) 清中断寄存器 GPIO_STATUS_W1TC
2.5 GPIO16 对应接口
GPIO16(XPD_DCDC) 不属于通用GPIO模块,属于RTC模块。可以用来在深度睡眠时候唤醒整个芯片,可以配置为输入或者输出模式,但无法触发 IO 中断。使用接口如下:
a). gpio16_output_conf(void): 将 GPIO16 配置为输出模式。
b). gpio16_output_set(uint8 value):
从 GPIO16 输出高电平/低电平,需要先配置为输出模式。
c). gpio16_input_conf(void)
将 GPIO16 的输入电平状态,需要先配置为输入模式。
d). gpio16_input_get(void)
读取 GPIO16 的输入电平状态,需要先配置为输入模式。
3 参数配置
应用场景
1) 配置 MTDI 输出高电平,并能使其上拉;
2) 配置 MTDI 为输入模式,并获取其电平状态;
3) 配置 MTDI 为下降沿触发中断。
3.1 应用场景1参数配置
Step 1) 配置 MTDI 为 GPIO 模式
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12);
该语句的作用是向 PERIPHS_IO_MUX_MTDI_U 寄存器的第4位、第5位写1。
PERIPHS_IO_MUX_MTDI_U 寄存器的第4位和第5位置1表示将 MTDI 配置为 GPIO 功能。 PERIPHS_IO_MUX_MTDI_U 寄存器。
Step 2) 配置 MTDI 输出高电平
GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1);
该语句有两个作用:
向 GPIO_ENABLE_W1TS 的寄存器第12位写1,该位置1表示使能 MTDI 的输出功能。
向 GPIO_OUT_W1TS 的寄存器第12位写1,该位置1表示将 MTDI 输出为高电平。
备注:需要 MTDI 配置输出低电平,将该函数额第二个参数设置为0即可。
Step 3) 使能 MTDI 上拉
PIN_PULLUP_EN(PERIPHS_IO_MUX_MTDI_U);
该语句作用是向 PERIPHS_IO_MUX_MTDI_U 的第7位写1.该位置 1 表示使能MTDI 的上拉功能。
备注:如果需要关闭 MTDI 的上拉功能,请使用如下语句
PIN_PULLUP_DIS(PERIPHS_IO_MUX_MTDI_U);
3.2 应用场景2参数配置
Step 1) 配置 MTDI 为 GPIO 模式
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12);
该语句的作用: 向 PERIPHS_IO_MUX_MTDI_U 寄存器的第4位、第5位写 1。PERIPHS_IO_MUX_MTDI_U 寄存器的第4位和第5位置1 表示 将 MTDI 配置为 GPIO 功能。
Step 2) 配置 MTDI 为输入模式
GPIO_DIS_OUTPUT(GPIO_ID_PIN(12));
Step 3) 获取 MTDI 管脚的电平状态
Uint8 level = 0;
level = GPIO_INPUT_GET(GPIO_ID_PIN(12));
GPIO_INPUT_GET(GPIO_ID_PIN(12)) 语句实际是获取 GPIO_IN 寄存器第 12 位的状态,该寄存器的值反映的是对应的管脚的输入电平(必须使能对应的管脚的输入功能,该寄存器的状态才有效)。
备注:
如果 MTDI 的电平为高电平,那么 GPIO_INPUT_GET 的返回值为 1,level = 1;
如果 MTDI 的电平为低电平,那么 GPIO_INPUT_GET 的返回值为 0,level = 0;
————————————————
12-F
3)AT指令:见文档,很详细 https://wiki.ai-thinker.com/esp8266/examples/at_demo
4)常见问题:
4)模型选择及内存分配