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");
}
5.硬件定时器使能与关闭
使能TM1_DEGE_INT_ENABLE();
关闭TM1_DEGE_INT_DISABLE();
在回调函数里面可以实现自己的代码