我使用的是ESP8266-12F物联网开发板,编程软件是AiThinker_IDE。
软件定时器使用模板小结:
//!!!全局变量!!!
os_timer_t OS_Timer_1; //①:定义软件定时器(os_timer_t型结构体)
void ICACHE_FLASH_ATTR OS_Timer_1_cb(void) // ②:定义回调函数
{
...
//此处编写要执行的操作代码
}
void ICACHE_FLASH_ATTR OS_Timer_1_Init(u32 time_ms, u8 time_repetitive)
{
os_timer_disarm(&OS_Timer_1); // ③:关闭软件定时器
os_timer_setfn(&OS_Timer_1,(os_timer_func_t *)OS_Timer_1_cb, NULL); // ④:设置定时器、回调函数、回调函数的参数
os_timer_arm(&OS_Timer_1, time_ms, time_repetitive); // ⑤:使能定时器、设置定时时间、设置是否重复定时
}
void ICACHE_FLASH_ATTR user_init(void)
{
...
//其他的初始化操作
OS_Timer_1_Init(500,1); // 500ms(重复) //调用软件定时器
}
软件定时器例程:
user_main.c中:
// 头文件引用
//==================================================================================
#include "user_config.h" // 用户配置
#include "driver/uart.h" // 串口
#include "c_types.h" // 变量类型
#include "eagle_soc.h" // GPIO函数、宏定义
#include "ets_sys.h" // 回调函数
#include "os_type.h" // os_XXX
#include "osapi.h" // os_XXX、软件定时器
#include "user_interface.h" // 系统接口、system_param_xxx接口、WIFI、RateContro