目录
硬件准备:
引脚图:
导包:
Timer库
注册引脚:
构造GPIO口的对象:
配置定时器:
例程:
(以下内容均为个人所学总结,希望对你有所帮助,感谢你的阅读!!!)
from Maix import GPIO #IO口
from fpioa_manager import fm #引脚
from machine import Timer #定时器对象 Timer 在 machine 模块下
#启动定时器
Timer.start()
#停止定时器
Timer.stop()
#注销定时器
Timer.deinit()
'''
【pin】芯片外部 IO
【function】芯片功能
【force】=True 则强制注册,清除之前的注册记录
'''
fm.register(pin,function,force=False)
'''
将外部 IO12 注册到内部 GPIO0
'''
fm.register(12, fm.fpioa.GPIO0)
'''
【ID】内部 GPIO 编号
【MODE】 GPIO 模式;
GPIO.IN :输入模式
GPIO.OUT :输出模式
【PULL】 GPIO.PULL_UP :上拉
GPIO.PULL_DOWN :下拉
GPIO.PULL_NONE :无
【value】GPIO 初始化电平
1:高电平
0:低电平
'''
GPIO(ID,MODE,PULL,VALUE)
#构建LED蓝灯的对象
LED_B = GPIO(GPIO.GPIO0, GPIO.OUT)
'''
【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】硬件分频器。
'''
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)
#定时器0初始化,周期1秒
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC, period=1000, callback=fun)
'''
main.py
通过定时器让 LED 周期性每秒闪烁 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)
#计数变量
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)