-
福利一海量deepseek资料包(持续更新)
-
福利二ComfyUI工作流&模型&插件
-
福利三AI工具集合包以及AI绘画解决方案
定时器,顾名思义就是用来计时的,我们常常会设置计时或闹钟,然后时间到了就告诉我们要做什么。ESP32 也是这样,通过定时器可以完成各种预设好的任务。ESP32 定时器到达指定时间后也会产生中断,然后在回调函数内执行所需功能,这个和外部中断类似。
ESP32 内置 4 个 64-bit 通用定时器。每个定时器包含一个 16-bit 预分频器和一个 64-bit 可自动重新加载向上/向下计数器。
使用计时器的好处,是实现类似并行处理的功能,也就是一个应用里只能有一个while True
,两个以上都是不可以的,但是如果使用定时器,就可以同时运行多个 while True
。
LED 的正极接开发板的 D2、D4 引脚,并串联一个电阻,负极接 GND,如下图:
ESP32 定时器位于 machine 模块当中。可以调用的定时器有 timer0-3 共 4 个定时器。
构造函数 class machine.Timer(id, ...)
:构造给定 id 的新计时器对象,可以是任意整数 n(这个整数会转化成 n % 4),但是最多调用 4 个,新调用的会抢占定时器。Timer.init(*, mode=Timer.PERIODIC, period=- 1, callback=None)
:定时器初始化,其中的参数:
mode
:2 种工作模式,Timer.ONE_SHOT(执行一次)、Timer.PERIODIC(周期性);period
:单位为 ms;callback
:定时器中断后的回调函数。Timer.deinit()
:销毁计时器。import time
from machine import Pin, Timer
# 定义 Pin 控制引脚
led_1 = Pin(2, Pin.OUT)
led_2 = Pin(4, Pin.OUT)
# 定义定时器中断的回调函数
def timer_irq(timer_pin):
led_1.value(not led_1.value())
# 定义定时器
timer = Timer(0)
# 初始化定时器
timer.init(period=500, mode=Timer.PERIODIC, callback=timer_irq)
while True:
led_2.value(not led_2.value())
time.sleep(1)
您可以与在线客服进行沟通获得帮助
工作日:8:00~22:00节假日:9:00~20:00
微信号: mpyos01
Q Q号: 1401211620