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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章