赞
踩
定时器,顾名思义就是用来计时的,我们常常会设定计时或闹钟,然后时间到了就告诉我们要做什么了。单片机也是这样,通过定时器可以完成各种预设好的任务。
定时器是在 machine 的 Timer 模块。通过 MicroPython 可以轻松编程使用。
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 对象在 machine 模块下。
【id】定时器编号, [Timer.TIMER0~TIMER2] 定时器 0-2;
【channel】Timer 通道,[Timer.CHANNEL0~Timer.CHANNEL3] 【mode】定时器模式
MODE_ONE_SHOT: 一次性
MODE_PERIODIC: 周期性
MODE_PWM
【period】定时器为周期性模块时每个周期时间值
【unit】周期的单位
Timer.UNIT_S:秒
Timer.UNIT_MS:毫秒
Timer.UNIT_US:微妙
Timer.UNIT_NS:纳秒
【callback】定时器中断执行的回调函数;注意:回调函数是在中断中调用
的,所以在回调函数中请不要占用太长时间以及做动态内存分配开关中断等
动作。 【arg】回调函数第 2 个参数
【start】是否在构建对象后立即开始定时器,
=True: 立即开始;
=False: 不立即开始,需要调用 start()来开启。
【priority】硬件中断优先级,在 K210 中,取值范围是[1,7],值越小优先级越高
【div】硬件分频器。
参数虽然有很多,但是用到的也就那几个
Timer.callback(fun)
定义回调函数。
Timer.period([value])
配置周期。
Timer.start()
启动定时器。
Timer.stop()
停止定时器。
Timer.deinit()
注销定时器。
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循环亮灭。 #定时器0初始化,周期1秒 tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC, period=1000, callback=fun)
控制亮灭采用的奇偶数取余,这个方法挺好用的。
有人可能会认为使用延时延时也可以实现这个功能,但相比于延时函数,定时器的好处就是不占用过多的 CPU 资源。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。