K210定时器官网资料

machine.Timer
硬件定时器,可以用来定时触发任务或者处理任务,设定时间到了后可以触发中断(调用回调函数),精度比软件定时器高。 需要注意的是,定时器在不同的硬件中可能会有不同的表现。MicroPython 的 Timer 类定义了在给定时间段内(或在一段延迟后执行一次回调)执行回调的基本操作,并允许特定的硬件上定义更多的非标准行为(因此不能移植到其他板)。

共有 3 个定时器, 每个定时器有 4 个通道可以使用

1. 构造函数
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)
通过指定的参数新建一个 Timer 对象

1.1. 参数
id: Timer ID, [0~2] (Timer.TIMER0~TIMER2)
channel: Timer 通道, [Timer.CHANNEL0~Timer.CHANNEL3]
mode: Timer 模式, MODE_ONE_SHOT 或者 MODE_PERIODIC 或者 MODE_PWM
period: Timer 周期, 在启动定时器后 period 时间, 回调函数将会被调用,(0,~)
unit: 设置周期的单位,默认位毫秒(ms),Timer.UNIT_S 或者 Timer.UNIT_MS 或者 Timer.UNIT_US 或者Timer.UNIT_NS
callback: 定时器回调函数, 定义了两个参数, 一个是定时器对象Timer, 第二个是在定义对象是希望传的参数arg,更多请看arg参数解释
注意:回调函数是在中断中调用的,所以在回调函数中请不要占用太长时间以及做动态分配开关中断等动作

arg: 希望传给回调函数的参数,作为回调函数的第二个参数
start: 是否在对象构建成功后立即开始定时器, True:立即开始, False:不立即开启,需要调用start()函数来启动定时器
priority: 硬件定时器中断优先级, 与特定的CPU相关, 在K210中,取值范围是[1,7], 值越小优先级越高
div: 硬件定时器分频器,取值范围[0,255], 默认为0, clk_timer(定时器时钟频率) = clk_pll0(锁相环0频率)/2^(div+1)
clk_timer*period(unit:s) 应该 < 2^32 并且 >=1

2. 方法
2.1. init
类似构造函数

Timer.init(id, channel, mode=Timer.MODE_ONE_SHOT, period=1000, unit=Timer.UNIT_MS, callback=None, arg=None, start=True, priority=1, div=0)
参数
类似构造函数

返回值
无

2.2. callback_arg
获取设置的传给回调函数的参数,只能是 Timer 对象调用, 类 Timer 不能调用

2.3. callback
获取或者设置回调函数

Timer.callback(callback)
参数
callback: 设置的回调函数,可选参数, 如果不传参数,则只返回先有的回调函数
返回值
当前的回调函数

例子
def on_timer(timer):
    print("time up:",timer)
    print("param:",timer.callback_arg())

tim.callback(on_timer)
print(on_timer, tim.callback())
2.4. period
获取或者设置定时周期

Timer.period(period)
参数
period: 可选参数,配置周期, 如果不传参数, 则只返回当前周期值
返回值
当前周期值

例子
tim.period(2000)
print( tim.period() )
2.5. start
启动定时器

Timer.start()
参数
无

返回值
无

例子
tim.start()
2.6. stop
停止定时器

Timer.stop()
参数
无

返回值
无

2.7. restart
重新开启定时器

Timer.restart()
参数
无

返回值
无

2.8. deinit/_del_
注销定时器,并且注销硬件的占用,关闭硬件的时钟

Timer.deinit()
参数
无

返回值
无

例子
tim.deinit()
或者

del tim
3. 常量
TIMER0: Timer0 id
TIMER1: Timer1 id
TIMER2: Timer2 id
CHANNEL0: Timer 通道 0
CHANNEL1: Timer 通道 1
CHANNEL2: Timer 通道 2
CHANNEL3: Timer 通道 3
MODE_ONE_SHOT: Timer 只运行一次(回调一次)
MODE_PERIODIC: Timer 始终运行(连续回调)
MODE_PWM: 定时器不用来回调函数,用以产生PWM
UNIT_S: 单位秒 (s)
UNIT_MS: 单位毫秒 (ms)
UNIT_US: 单位微秒 (us)
UNIT_NS: 单位纳秒 (ns)
4. 例程
4.1. 例程 1
定时3秒后打印信息

from machine import Timer

def on_timer(timer):
    print("time up:",timer)
    print("param:",timer.callback_arg())

tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_ONE_SHOT, period=3000, callback=on_timer, arg=on_timer)
print("period:",tim.period())
4.2. 例程 2
每隔 1 秒打印消息, 停止 5 秒后再重启, 5 秒后关闭并注销定时器

import time
from machine import Timer

def on_timer(timer):
    print("time up:",timer)
    print("param:",timer.callback_arg())

tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PERIODIC, period=1, unit=Timer.UNIT_S, callback=on_timer, arg=on_timer, start=False, priority=1, div=0)
print("period:",tim.period())
tim.start()
time.sleep(5)
tim.stop()
time.sleep(5)
tim.restart()
time.sleep(5)
tim.stop()
del tim
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于K210定时器,它是一种硬件设备,用于在特定的时间间隔内生成一个周期性的时间信号或触发一个中断。K210芯片上有多个定时器可供使用,其中最常用的是SysTick定时器和Timer0定时器。 SysTick定时器K210内核级别的定时器,它用于系统级别的时间管理。它可以用来实现精确的延时、定时中断以及系统时钟的计数等功能。SysTick定时器的时钟源可以选择为外部时钟或内核时钟,其计数值可以在32位计数器中进行配置。 Timer0定时器K210 SOC级别的定时器,它可以用于各种应用场景,如PWM控制、周期性任务触发等。Timer0定时器有多个工作模式可选,包括定时模式、PWM输出模式等。它可以配置为不同的时钟源,并且具有多个预分频系数和比较值来实现不同的定时时间。 在使用K210定时器之前,你需要进行相应的初始化和配置。一般来说,你需要设置定时器的工作模式、时钟源、预分频系数、比较值等参数。然后,你可以启动定时器开始计数,当达到设定的比较值时,定时器会触发相应的中断或产生输出信号。 需要注意的是,K210定时器使用时需要谨慎,避免与其他功能模块冲突,同时合理规划定时器的使用和中断处理程序的编写,以保证系统的稳定性和可靠性。 希望这些信息能够对你有所帮助!如果你还有其他问题,欢迎继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值