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外部中断使用示例

MicroPython ESP32利用中断控制电机正反转示例

利用中断在 ESP32 MicroPython 程序中读取AM2302

ESP32玩转MicroPython(三) 延时、计时 和GPIO操作

MicroPython ESP32 GPIO引脚输入输出示例

MicroPython ESP32machine.Pin类函数以及参数详解