K210定时器中断
目的:用定时器中断让蓝灯每1s闪烁一次
步骤如下:
- 导入相关模块,包括Maix的GPIO,fpioa_manager的fm,machine的Timer
- 编写回调函数
- 设置Timer的相关参数
两种方式可以实现:
方式1.
from Maix import GPIO
from fpioa_manager import fm
from machine import Timer
#注册IO和构建LED对象
fm.register(12,fm.fpioa.GPIO0)
LED_B=GPIO(GPIO.GPIO0,GPIO.OUT)
#led的状态
state=1
#设置回调函数
def fun(time):
global state
state=not state
LED_B(state)
#设置定时器的参数
time=Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC,
period=1000, callback=fun)
至此,可以实现蓝灯每一秒闪烁一次的功能,而教材的程序如下:
方式2.
from Maix import GPIO
from fpioa_manager import fm
from machine import Timer
#注册IO和构建LED对象
fm.register(12,fm.fpioa.GPIO0)
LED_B=GPIO(GPIO.GPIO0,GPIO.OUT)
#计数变量
Counter=0
#定时器回调函数
def fun(tim):
global Counter
Counter = Counter + 1
print(Counter)
LED_B.value(Counter%2)#LED 循环亮灭
#设置定时器的参数
time=Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC,
period=1000, callback=fun)
可以看出差别有两处:
- 采用计数的方式,并把计数打印出来,以便记录闪烁次数
- 利用计数次数实现01切换,Counter%2,计数除以2的余数。