1、ESP8266定时器
有两种,一种是不太准确的系统软件定时器,一种是准确定时的硬件定时器。
注意:请勿频繁调⽤定时器,建议频率不⾼于每 5 ms ⼀次(微秒计时器则为 100 μs)
2、软件定时器
软件定时器默认是毫秒单位的延时,也可以通过重新初始化设置为微秒单位的延时。
2.1、步骤
- 关闭定时器
- 配置定时器回调函数
- 使能定时器,配置定时的周期,是否重复定时
3、代码
每500ms翻转一次LED(GPIO4)的电平。
//通过结构体定义自己的软件定时器
os_timer_t my_os_timer;
//系统定时器回调函数
void ICACHE_FLASH_ATTR My_OS_Timer_cb(void)
{
static u8 LED = 0;
LED = !LED; //翻转LED状态
GPIO_OUTPUT_SET(GPIO_ID_PIN(4),LED);
}
void ICACHE_FLASH_ATTR user_init(void) //用户初始化函数
{
//初始化LED,默认不亮
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U,FUNC_GPIO4);
GPIO_OUTPUT_SET(GPIO_ID_PIN(4),1);
//关闭定义的这个软件定时器
os_timer_disarm(&my_os_timer);
//设置定时器回调函数
os_timer_setfn(&my_os_timer,(os_timer_func_t *)My_OS_Timer_cb,NULL);
//使能定时器,配置周期等
os_timer_arm(&my_os_timer,500,1); //500ms,1代表循环定时
}