1.16.1. 介绍
Esp32内置4个硬件定时器。对于需要精确定时的场合,硬件定时器是必然的选择。
1.16.2. 基础测试
Machine模块下的Timer模块,支持对4个硬件定时器的操作,命令行模式下,运行效果如下所示:
源代码:
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技术。
----*----*----*----*----*----*----*----*----*----*----*----
史久超
email:shijiuchao1983@163.com
tel:15999550975 微信同号
qq:157185173 经常不在线,尽量微信