ESP8266固件SDK开发之点亮开发板上的LED灯(基于ESP-12F)

一、硬件部分

如下图,这是我ESP-12F的电路原理图关于LED灯的部分:
在这里插入图片描述
对应ESP-12F的管脚:
在这里插入图片描述

二、SDK版本

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

发布了597 篇原创文章 · 获赞 1061 · 访问量 182万+

猜你喜欢

转载自blog.csdn.net/morixinguan/article/details/101177982