環境及工具與第一章相同,這裏就不在重複!web
代碼基於第一章,將原軟件定時器實現的功能改成硬件定時器實現,user_main.c代碼示例以下api
#include "ets_sys.h" #include "osapi.h" #include "gpio.h" #include "user_interface.h" #include "user_devicefind.h" #include "user_webserver.h" #if ESP_PLATFORM #include "user_esp_platform.h" #endif void user_rf_pre_init(void) { } /******************************************************************************* * 自定義引腳運行函數_定時器回調 *******************************************************************************/ void Task_Run(void){ static bool status = false; if(GPIO_INPUT_GET(14)){//讀取GPIO14的引腳電平 if (status == true){ status = false; GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 0);//GPIO12輸出低電平 }else{ status = true; GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1);//GPIO12輸出高電平 } }else{ GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1);//GPIO12輸出高電平 } } /****************************************************************************** * FunctionName : user_init * Description : entry of user application, init user function here * Parameters : none * Returns : none *******************************************************************************/ void user_init(void) { /*設置串口波特率*/ uart_init(115200,9600); /*打印版本信息*/ os_printf("\r\n");os_printf("SDK version:%s\n", system_get_sdk_version()); /*配置GPIO12*/ PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12); /*配置GPIO14*/ PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U,FUNC_GPIO14); /*配置 硬件定時器*/ hw_timer_init(0,1);//初始化ISR硬件定時器,自動填裝 hw_timer_set_func(Task_Run);//設置定時器回調函數 hw_timer_arm(1000000);//使能硬件中判定時器,定時1秒 }