环境及工具与第一章相同,这里就不在重复!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秒 }