1.16.1. 介绍

Esp32内置4个硬件定时器。对于需要精确定时的场合,硬件定时器是必然的选择。

1.16.2. 基础测试

Machine模块下的Timer模块,支持对4个硬件定时器的操作,命令行模式下,运行效果如下所示:

wps56

源代码:

 1 from machine import Timer
 2 
 3 i=0
 4 
 5 def tc(self):
 6     global i
 7     print(i)
 8     i=i+1
 9 
10 tim = Timer(0)
11 tim.init(period=1000,mode=Timer.PERIODIC,callback = tc)

 

注意:period的单位是ms。

1.16.3. 实例

例程描述:要求Led严格安装1Hz的频率闪烁,亮、灭时间各占一半。

需求分析:精确延时500ms,回调函数中翻转LED。

 1 from machine import Timer
 2 from machine import Pin
 3 
 4 led = Pin(2,Pin.OUT)
 5 
 6 def tc(self):
 7     led.value(1-led.value())
 8 
 9 tim = Timer(0)
10 tim.init(period=500,mode=Timer.PERIODIC,callback = tc)

 

注意:这与使用while True+sleep函数实现的效果略有不同,定时器是靠硬件实现的,所以单片机执行完后进入等待下一条指令的就绪状态,而while True+sleep函数是靠软件实现的,单片机陷入到循环中无法接受下一条指令,另一个靠硬件实现的技术是PWM技术。

posted on 2022-07-24 11:23  史久超  阅读(185)  评论(0编辑  收藏  举报
知识改变命运