ESP32 Micropython 定时器中断的使用示例

ESP32 Micropython 定时器中断的使用示例


  • 本示例基于Thonny平台代开发

定时器

ESP32 Micropython 定时器位于machine模块当中。可以调用的定时器有timer0-3共4个定时器。需要注意的是ESP32C3,只能使用0和2号定时器。

1. 创建一个Timer类的对象

tim0 = Timer(0) #创建定时器对象 tim0~3 共四个类

2. handleInterrupt中断回调函数

def handle_callback(timer): #定时器中断服务函数
    global interruptCounter
    interruptCounter +=1
    print('interruptCounter:',interruptCounter,end='\n')
    led.value(led.value()^1 )

3. 初始化定时器


tim0.init(period=3000, mode=Timer.PERIODIC, callback=handle_callback) #周期性模式 最小单位为ms

示例程序

from machine import Pin,Timer
from time import sleep

led = Pin(22,Pin.OUT)
led2 = Pin(23,Pin.OUT)

interruptCounter = 0 #声明一个计数器
def handle_callback(timer): #定时器中断服务函数
    global interruptCounter
    interruptCounter +=1
    print('interruptCounter:',interruptCounter,end='\n')
    led.value(led.value()^1 )

tim0 = Timer(0) #创建定时器对象 tim0~3 共四个类
# 开启定时器0中断,每隔5秒触发一次
tim0.init(period=3000, mode=Timer.PERIODIC, callback=handle_callback) #周期性模式 最小单位为ms

# 使用回调函数

   
while True:
    led2.value(led2.value()^1 )
    sleep(1)

使用lambda表达式替代回调函数

注意:lambda表达式并不适和有多行任务的执行。

from machine import Pin,Timer
from time import sleep

led = Pin(22,Pin.OUT)
led2 = Pin(23,Pin.OUT)

tim0 = Timer(0) #创建定时器对象 tim0~3 共四个类
# 开启定时器0中断,每隔5秒触发一次
tim0.init(period=3000, mode=Timer.PERIODIC, callback=lambda t:led.value(not led.value())) #周期性模式 最小单位为ms


# 使用回调函数

   
while True:
    led2.value(led2.value()^1 )
    sleep(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值