ESP8266的硬件定时器的使用也比较简单
1、设置定时器的时钟源和自动重装载
hw_timer_init(FRC1_SOURCE, 1);//设置时钟源 和定时器自动重装载
时钟源有两个 NMI 中断源 和 FRC1 中断
注意:
• 如果使⽤用 NMI 中断源,且为⾃自动填装的定时器,调⽤用 hw_timer_arm 时参数 val 必须⼤大于 100
• 如果使⽤用 NMI 中断源,那么该定时器将为最⾼高优先级,可打断其他 ISR
• 如果使⽤用 FRC1 中断源,那么该定时器⽆无法打断其他 ISR
• hw_timer.c 的接⼝口不能跟 PWM 驱动接⼝口函数同时使⽤用,因为⼆二者共⽤用了同⼀一个硬件定时器。
2、设置硬件定时器的回调函数
hw_timer_set_func(hw_tmer_callback);
使⽤用定时器,必须设置回调函数。用户可以在这个回调函数里面实现自己的程序,硬件定时器是比较精准的
3、使能硬件中断定时器
hw_timer_arm(1000000);
形参是设置定时器的定时长,因为在里面设置了 1us计数加1,所以这里设置计数个数为1000000,就是定时1s
• ⾃自动填装模式:
‣ 使⽤用 FRC1 中断源(FRC1_SOURCE),取值范围 : 50 ~ 0x7fffff;
‣ 使⽤用 NMI 中断源(NMI_SOURCE),取值范围 : 100 ~ 0x7fffff;
• ⾮非⾃自动填装模式,取值范围 : 10 ~ 0x7fffff;
4、回调函数
void ICACHE_FLASH_ATTR hw_tmer_callback(void)
{
os_printf("1s时间到\r\n");
}
在回调函数里面可以实现自己的代码