赞
踩
如下图,这是我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<<PERIPHS_IO_MUX_FUNC_S))) \
|( (((FUNC&BIT2)<<2)|(FUNC&0x3))<<PERIPHS_IO_MUX_FUNC_S) ); \
} while (0)
其中参数一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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。