ESP32 Micropython 定时器中断的使用示例
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESP32 Micropython 定时器中断的使用示例相关的知识,希望对你有一定的参考价值。
ESP32 Micropython 定时器中断的使用示例
- 本示例基于
Thonny
平台代开发
定时器
ESP32 Micropython 定时器位于machine模块当中。可以调用的定时器有
timer0-3
共4个定时器。
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)
以上是关于ESP32 Micropython 定时器中断的使用示例的主要内容,如果未能解决你的问题,请参考以下文章
MicroPython ESP32利用中断控制电机正反转示例
利用中断在 ESP32 MicroPython 程序中读取AM2302
ESP32玩转MicroPython(三) 延时、计时 和GPIO操作