定时器应该是一个单片机的标准配置,所以k210也是有的,拥有3个定时器,具体的使用方法我们往下看:
分步介绍:
首先是相关模块的使用
构造函数:
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() 注销定时器
然后就是示例程序代码了:
'''
通过定时器让 LED 周期性每秒闪烁 1 次
'''
from Maix import GPIO # 导入GPIO模块
from fpioa_manager import fm # 导入fm模块
from machine import Timer # 导入定时器模块
fm.register(12, fm.fpioa.GPIO0) # 注册外部12口为内部低速GPIO0口
led = GPIO(GPIO.GPIO0,GPIO.OUT) # 创建led对象为内部GPIO0口,输出模式
Count = 0 # 创建计数变量
#创建定时器回调函数
def HuiDiao(x):
global Count # 声明Count为全局变量
Count += 1 # count+1
print(Count) # 输出计数结果
led.value(Count%2) # led灯的值设置为计数的结果对2取余,也就是不是0就是1
# 调用定时器
x = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC,
period=1000, callback=HuiDiao)
如果有表达错误的地方希望路过的大佬能给予及时的纠正,小的在此感激不尽了!
如果对您的学习有那么丁点帮助的话,希望能把您免费的小爱心留下!谢谢!