筆者在 ESP8266 ESP-12E 模塊上編寫第一個程式是閃動 LED 燈,使用了樂鑫(Espressif)的 NONOS SDK 原程碼(ESP8266 NONOS_SDK v2.0.0_20160810),由於 ESP8266 NONOS SDK 是需要使用計時器來執行程式,一般 C 語言的閉環 while 的方式來是不能使用,程式裏面涉及到的函數有三個,user_init{} 是入口函數,相當於 main 函數,user_rf_pre_init{} 是 SDK1.1.0 及之後版本需要增加的函數,暫時沒有用,timer_callback{} 是一個回調函數,下面的計時器會用到。
ESP8266 第一個程式 LED 閃燈 |
ESP8266 LED 閃燈程式:
#include "osapi.h"
#include "at_custom.h"
#include "user_interface.h"
#include "gpio.h"
// 計時器結構體 */
LOCAL os_timer_t timer;
char led = 1;
//射頻初始化函數,留空
void
user_rf_pre_init(){}
// 計時器回調函數
void timer_callback(){
if(led == 1){
GPIO_OUTPUT_SET(GPIO_ID_PIN(5), 0);
led = 0;
}else{
GPIO_OUTPUT_SET(GPIO_ID_PIN(5), 1);
led = 1;
}
}
// 初始化程式
void
ICACHE_FLASH_ATTR
user_init(void)
{
char buf[64] = {0};
at_customLinkMax = 5;
at_init();
os_sprintf(buf,"compile time:%s
%s",__DATE__,__TIME__);
at_set_custom_info(buf);
at_port_print("\r\nBugWorkShop
Ready\r\n");
at_cmd_array_regist(&at_custom_cmd[0],
sizeof(at_custom_cmd)/sizeof(at_custom_cmd[0]));
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,
FUNC_GPIO5);
// LED模組初始化程式
// 關閉該計時器
os_timer_disarm(&timer);
// 配置該計時器回調函數
os_timer_setfn(&timer,(os_timer_func_t*)timer_callback,NULL);
// 啟動該計時器
os_timer_arm(&timer, 1000, 1);
}
|
操作系統:Windows 7
開發環境:安可信(Ai-Thinker)的 IDE (整合開發環境)
原程碼:ESP8266 NONOS_SDK v2.0.0_20160810
安可信(Ai-Thinker)的 IDE (整合開發環境) |
程式編譯完成
|
※ 從版本 ESP8266_NONOS_SDK_V1.5.0 起,AT 固件所需空間增大,無法再使用 4Mbit (512KB) Flash,請使用 8Mbit (1MB) 或以上容量 Flash。
2017年 2月 2日 天氣報告
氣溫:16.9度 @ 21:00
相對濕度:百分之 81%
天氣:多雲
沒有留言:
張貼留言