MicroPython 开发ESP32应用教程 之 Timer、GPIO中断

随着我们课程的递进,大家会发现,我们之前课程中的例子,虽然功能都能实现,但总觉得体验感不够好,比如按键控制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输出


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远的元子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值