上一篇 MaixPy IDE Maix Bit K210点灯
介绍
硬件定时器,可以用来定时触发任务或者处理任务,设定时间到了后可以触发中断(调用回调函数),精度比软件定时器高。 需要注意的是,定时器在不同的硬件中可能会有不同的表现。MicroPython 的 Timer 类定义了在给定时间段内(或在一段延迟后执行一次回调)执行回调的基本操作,不能移植到其他板)。
此板子共有 3 个定时器, 每个定时器有 4 个通道可以使用。
定时器常量
TIMER0: Timer0 id
TIMER1: Timer1 id
TIMER2: Timer2 id
CHANNEL0: Timer 通道 0
CHANNEL1: Timer 通道 1
CHANNEL2: Timer 通道 2
CHANNEL3: Timer 通道 3
MODE_ONE_SHOT: Timer 只运行一次(回调一次)
MODE_PERIODIC: Timer 始终运行(连续回调)
MODE_PWM: 定时器不用来回调函数,用以产生PWM
UNIT_S: 单位秒 (s)
UNIT_MS: 单位毫秒 (ms)
UNIT_US: 单位微秒 (us)
UNIT_NS: 单位纳秒 (ns)
使用方法
构造函数
tim = machine.Timer(id, channel, mode=Timer.MODE_ONE_SHOT, period=1000, unit=Timer.UNIT_MS, callback=None, arg=None, start=True, priority=1, div=0)
创造Timer对象
打开 MaixPy IDE,将以下代码复制并运行
from machine import Timer
from Maix import GPIO
from board import board_info
from fpioa_manager import fm
i = 0
#将将LED外部IO注册到内部GPIO,K210引脚支持任意配置
fm.register(12, fm.fpioa.GPIO0)
fm.register(13, fm.fpioa.GPIO1)
fm.register(14, fm.fpioa.GPIO2)
#构建LED对象,并初始化输出高电平,关闭LED
LED_B = GPIO(GPIO.GPIO0, GPIO.OUT,value=1)
LED_G = GPIO(GPIO.GPIO1, GPIO.OUT,value=1)
LED_R = GPIO(GPIO.GPIO2, GPIO.OUT,value=1)
def on_timer(timer):
global i
i = (i+1)%4
if i == 0:
LED_R.value(0)
LED_G.value(1)
LED_B.value(1)
print("R")
elif i == 1:
LED_R.value(1)
LED_G.value(0)
LED_B.value(1)
print("G")
elif i == 2:
LED_R.value(1)
LED_G.value(1)
LED_B.value(0)
print("B")
elif i == 3:
LED_R.value(1)
LED_G.value(1)
LED_B.value(1)
print("OFF")
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC, period=1000, callback=on_timer, arg=on_timer)
Maix Bit K210 MaixPy IDE定时器流水灯
此时可以看到板子上的RGB以1S的周期进行流水并熄灭。