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)

1660

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



