参考教程:ESP32 Timers & Timer Interrupt Tutorial (Arduino IDE) – DeepBlue
这个教程中有两个实验
1.通过定时器产生一个周期性的中断,来实现一个翻转信号控制一个LED的亮灭
2.通过定时器测量两个外部事件之间的时间。
ESP32 定时器
ESP32系列有4个硬件定时器,每个定时器是一个64位,向上/向下的计数器,并带有一个16位的分频器。ESP32C3只有2个定时器,每个定时器是54位。(对比STM32的定时器是16位的)同时ESP32的定时器在最后一个技术周期可以配置自动装载。
ESP32定时器功能描述
每个ESP32定时器都是使用APB时钟(一般是80MHz)作为基础时钟。这时钟可以被一个16位的分频器进行分频后作为 基本的tick 时间。这样我们就可以通过控制分频系数来实现不同的tick time。
16位的预分频器可以把APB_CLK除以2到65536的系数。如果设置为1或者2的话,系数位2.如果设置0的话,分频系数位65536;
ESP32 定时器告警生成
ESP32定时器可以触发警报事件,根据你的配置,决定定时器进行重载或者进行中断。当你保存在警报寄存器与当前寄存器的值相同的时候,就会触发警报。这个在接下来的项目中执行周期性的逻辑非常有用。
ESP32 定时器公式
我们将使用告警事件生成以及定时器的预分频器来实现所需的中断周期性。下面的定时器方程有 3 种特殊情况,分别是预分频器值 = 0、1 和 2 时。当 Prescaler=1or2 时,它将如下所示 [T外= 计

本文介绍了如何使用ESP32的定时器功能在ArduinoIDE中实现周期性中断控制LED亮灭,包括设置定时器、预分频、警报事件和自定义中断处理。教程还展示了如何调整定时器频率以实现不同周期的LED控制效果。

4164

被折叠的 条评论
为什么被折叠?



