开发板:K210 AIRV R3版 widora
开发环境:MaixPy IDE 矽速家的
必须的参考网站:
https://cn.maixpy.sipeed.com/zh/api_reference/Maix/fpioa.html
https://cn.maixpy.sipeed.com/zh/api_reference/Maix/gpio.html
https://cn.maixpy.sipeed.com/zh/api_reference/machine/timer.html
同样的新建一个文件,_4tim.py
代码用上一节的,只保留LED相关的配置
先把定时器调用进来
from machine import Timer
看看定时器怎么配置
class 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)
定时300ms
tim1 = Timer(Timer.TIMER0, Timer.CHANNEL0,
mode=Timer.MODE_PERIODIC,period=300,
callback=on_timer, arg=on_timer,start=False)
id: Timer.TIMER0 #定时器0
channel: Timer.CHANNEL0, #通道0
mode:
MODE_ONE_SHOT
: Timer 只运行一次(回调一次)MODE_PERIODIC
: Timer 始终运行(连续回调)MODE_PWM
: 定时器不用来回调函数,用以产生PWM
period: 定时周期
unit没填,默认是ms毫秒
callback回调函数 on_timer
arg回调函数的参数
start=False我自己手动开启,不需要自动开启
同样的,跟按键一样,再定时器回调函数上面,闪烁LED灯
def on_timer(timer):
global i
if(i==0):
i=1
else :
i=0
print("time up:", timer)
led1.value(i)
然后再开启TIM1定时器
tim1.start()
整体代码如下
import utime
from Maix import FPIOA
from Maix import GPIO
from machine import Timer
def on_timer(timer):
global i
if(i==0):
i=1
else :
i=0
print("time up:", timer)
led1.value(i)
fpioa = FPIOA()
fpioa.set_function(17,fpioa.GPIOHS0)
fpioa.set_function(18,fpioa.GPIOHS1)
led1 = GPIO(GPIO.GPIOHS0,GPIO.OUT)
led2 = GPIO(GPIO.GPIOHS1,GPIO.OUT)
led1.value(0)
led2.value(0)
tim1 = Timer(Timer.TIMER0, Timer.CHANNEL0,
mode=Timer.MODE_PERIODIC,period=300,
callback=on_timer, arg=on_timer,start=False)
global i
i=0
tim1.start()
代码敲好后 连接开发板,然后运行
现象:就一个LED灯在不停的闪(300ms)