ESP8266-SDK的硬件定时器

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chen244798611/article/details/51471267

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");
}

在回调函数里面可以实现自己的代码




展开阅读全文

没有更多推荐了,返回首页