随着我们课程的递进,大家会发现,我们之前课程中的例子,虽然功能都能实现,但总觉得体验感不够好,比如按键控制GRB灯珠的时候,很容易出现按键后,灯珠没有反应,还有蓝牙发送指令控制灯珠的时候也会出现延迟等问题,今天,我们就讲解如何改善这类现象。
要想改善这类现象,需要用到Timer、GPIO中断,我们先分别介绍一下这些知识。
一、Timer
在 MicroPython 中,Timer类用于实现硬件定时器功能,可以用于周期性任务、定时中断、PWM 生成等。以下是 Timer 的常见应用场景和示例:
1. 基本概念
定时器 ID: ESP32S3 支持 4 个定时器
定时器模式:
Timer.PERIODIC:周期性执行回调函数。
Timer.ONE_SHOT:单次执行回调函数。
回调函数:定时器触发时调用的函数。 2. 基本用法
2、初始化定时器、停止定时器
from machine import Timer
# 初始化定时器(ID=0,模式为周期性)
tim = Timer(0)
tim.init(period=1000, mode=Timer.PERIODIC, callback=lambda t: print("Timer triggered!"))
tim.deinit() # 停止并关闭定时器
参数说明:
period:定时周期(单位:毫秒)。
mode:Timer.PERIODIC 或 Timer.ONE_SHOT。
callback:定时器触发时调用的函数(需接受一个参数,通常是定时器对象)。
3、应用举例
from machine import Timer, Pin
led = Pin(2, Pin.OUT) # 假设我们用 GPIO2 连接 LED
def toggle_led(t):
led.value(not led.value()) # 切换 LED 状态
# 初始化定时器,每 500ms 触发一次
tim = Timer(0)
tim.init(period=500, mode=Timer.PERIODIC, callback=toggle_led)
4、PWM输出

最低0.47元/天 解锁文章
2124

被折叠的 条评论
为什么被折叠?



