如下图,这是我ESP-12F的电路原理图关于LED灯的部分:
对应ESP-12F的管脚:
SDK版本(之前移植的NONOS_SDK-2.2.0版本)
https://blog.csdn.net/morixinguan/article/details/101000989
一上来就要操作,不会怎么办,安信可官方已经提供了完善的文档,写得非常详细,这点完全不担心。
https://wiki.ai-thinker.com/esp8266/docs
我们在上门这个网站找到这个文档,下载中文版本的。
打开这个手册的外设驱动接口的GPIO接口部分:
通过文档说明,我们了解到要利用ESP-12F驱动一个LED灯,需要完成如下步骤:
1、管脚功能选择
2、将管脚设置为输出模式
3、输出对应的电平
关于第一个,eagle_soc.h文件的这个宏可以用来实现管脚功能的选择
#define PIN_FUNC_SELECT(PIN_NAME, FUNC) do { \
WRITE_PERI_REG(PIN_NAME, \
(READ_PERI_REG(PIN_NAME) \
& (~(PERIPHS_IO_MUX_FUNC<
其中参数一PIN_NAME表示管脚名称、参数二FUNC表示管脚功能。
参考esp8266_pin_list.xls文档描述,PIN_NAME中关于GPIO4的管脚名称和管脚功能为如下
#define PERIPHS_IO_MUX_GPIO4_U (PERIPHS_IO_MUX + 0x3C)
#define FUNC_GPIO4 0
根据ESP8266 SDK编程手册关于GPIO管脚状态的设置:
根据示例提供,下面这句话的意思是将GPIO4设置为IO口。
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4);
接下来要点灯了,我们看到GPIO输入输出相关的宏定义:
根据前面的原理图,我们只需要把GPIO4管脚拉低就可以点亮该管脚的LED灯啦,就是输出一个低电平,所以我们选用的是GPIO_OUTPUT_SET这个宏定义,这个宏的意识是将相应的管脚设置为输出模式并输出对应的电平。
注意区别上图几个参数:
1、PIN_NAME:指的是管脚名称
2、FUNC:指的是管脚功能 功能序号-1
3、gpio_no:指的是 IO端口序号 GPIO_ID_PIN(IO端口序号)
例如GPIO14,那么就是GPIO_ID_PIN(14)
所以设置IO为低电平也很简单,这里是GPIO4。
GPIO_OUTPUT_SET(GPIO_ID_PIN(4),0);
接下来修改user_main,实现闪灯:
void ICACHE_FLASH_ATTR
delay_ms(int ms)
{
os_delay_us(ms*1000);
}
/******************************************************************************
* FunctionName : user_init
* Description : entry of user application, init user function here
* Parameters : none
* Returns : none
*******************************************************************************/
void ICACHE_FLASH_ATTR
user_init(void)
{
u8 led_status = 1;
os_printf("SDK version:%s\n", system_get_sdk_version());
os_printf("Hello Yangyuanxin\n");
os_printf("Build this SDK from 20190922\n");
//1、选中GPIO4管脚
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4);
//2、设置GPIO4管脚输出高电平,先熄灭
GPIO_OUTPUT_SET(GPIO_ID_PIN(4),1);
while(1)
{
//开始进来要喂狗,防止ESP8266复位
system_soft_wdt_feed();
//设置GPIO输出
GPIO_OUTPUT_SET(GPIO_ID_PIN(4),led_status);
//状态取反
led_status = ! led_status ;
//延时200ms
delay_ms(200);
}
}
编译完成后将生成的文件下载到ESP-12F开发板中。
可以看到,开发板上的LED灯每200ms会翻转一次:
串口输出,默认波特率为74800。
工程源码下载:
链接:https://pan.baidu.com/s/1TbrLJ7R_3g0CBshsU6Aa_A
提取码:jfj7