第9章 定时器中断实验
第九章 定时器中断实验
1. 导入
定时器, 顾名思义就是用来计时的, 我们常常会设定计时或闹钟, 然后时间到了就告诉我们要做什么。 ESP32 也是这样, 通过定时器可以完成各种预设好的任务。 ESP32 定时器到达指定时间后也会产生中断, 然后在回调函数内执行所需功能, 这个和外部中断类似。
2. 硬件设计
本实验使用到硬件资源如下:
-
LED模块
-
ESP32 GPIO
LED模块电路前面已经介绍,此处不再重复
本章实验使用 ESP32 的 IO15 引脚, 接线如下所示:
3. 软件设计
3.1 MicroPython函数使用
ESP32 内置 RTOS(实时操作系统) 定时器, 在 machine 的 Timer 模块中。通过 MicroPython 可以轻松编程使用。 我们也是只需要了解其构造对象函数和使用方法即可。
ESP32 拥有 4 个定时器。 使用 machine.Timer 类通过设置 timer ID 号为0-3。 使用方法如下:
3.2 代码分析
from machine import Pin
from machine import Timer
led1 = Pin(15, Pin.OUT) # 定义LED1引脚
led1_state = 0 # 初始化led1
# 定时器0中断函数
def time0_irq(time0):
global led1_state
led1_state =not led1_state # 翻转LED1状态
led1.value(led1_state) # 设置LED1状态
# 主函数
if __name__ == "__main__" :
led1.value(led1_state) # 熄灭LED1
time0 = Timer(0) # 创建time0定时器对象
time0.init(period=500, mode=Timer.PERIODIC, callback=time0_irq) # 参数说明:周期为500ms,模式为周期性,回调函数为time0_irq
while True:
pass
2024.8.21 第一次修订,后期不再维护