第9章 定时器中断实验

第九章 定时器中断实验

1. 导入

定时器, 顾名思义就是用来计时的, 我们常常会设定计时或闹钟, 然后时间到了就告诉我们要做什么。 ESP32 也是这样, 通过定时器可以完成各种预设好的任务。 ESP32 定时器到达指定时间后也会产生中断, 然后在回调函数内执行所需功能, 这个和外部中断类似。

2. 硬件设计

本实验使用到硬件资源如下:

  • LED模块

  • ESP32 GPIO

LED模块电路前面已经介绍,此处不再重复

本章实验使用 ESP32 的 IO15 引脚, 接线如下所示:

屏幕截图 2024 08 06 103725

3. 软件设计

3.1 MicroPython函数使用

ESP32 内置 RTOS(实时操作系统) 定时器, 在 machine 的 Timer 模块中。通过 MicroPython 可以轻松编程使用。 我们也是只需要了解其构造对象函数和使用方法即可。

屏幕截图 2024 08 06 103849

ESP32 拥有 4 个定时器。 使用 machine.Timer 类通过设置 timer ID 号为0-3。 使用方法如下:

屏幕截图 2024 08 06 104200

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 第一次修订,后期不再维护

posted @ 2024-08-21 13:13  hazy1k  阅读(8)  评论(0编辑  收藏  举报