注意

这是最新开发分支配套的文档,可能包含已发布版本中尚未提供的功能。如果您要查看特定版本的文档,请使用左侧的下拉菜单并选择所需要的版本。

Timer 使用教程#

什么是 Timer?#

Timer(定时器)是一种用于按固定时间间隔执行任务的硬件模块。常见用途包括:

  • 周期性执行回调函数(如定时打印、定时采集)

  • 单次延迟触发事件(如启动延迟)

  • 实现软件计时器、时钟、任务调度等功能

K230 Timer 特性#

特性

描述

定时器数量

内置 6 个硬件定时器

时间精度

最小周期为 1 微秒

支持模式

单次模式(ONE_SHOT)、周期模式(PERIODIC

支持类型

硬件定时器 / 软件定时器(编号为 -1)

回调机制

超时时自动调用用户指定的函数

应用示例:定时打印任务#

以下示例展示如何使用 Timer 实现:

  1. 一次性延迟执行

  2. 周期性定时触发

  3. 资源释放

示例代码#

from machine import Timer
import time

# ========= 创建定时器 ========= #
tim = Timer(-1)  # -1 表示软件定时器

# ========= 单次模式:100ms 后触发 ========= #
tim.init(period=100, mode=Timer.ONE_SHOT, callback=lambda t: print("单次触发:1"))
time.sleep(0.2)  # 主程序延迟 200ms,确保回调触发

# ========= 周期模式:每秒触发一次 ========= #
tim.init(freq=1, mode=Timer.PERIODIC, callback=lambda t: print("周期触发:2"))
time.sleep(2)  # 主程序等待 2 秒,观察输出

# ========= 释放定时器 ========= #
tim.deinit()

关键参数说明#

参数名

类型

说明

period

整数 (ms)

定时周期(单位:毫秒),用于单次或周期定时。K230的最小 period 为 5ms 。

freq

整数 (Hz)

定时频率(单位:赫兹),1Hz 表示每秒触发

mode

常量

Timer.ONE_SHOT(单次)或 Timer.PERIODIC(周期)

callback

函数

定时器触发时自动调用的函数

模式详解#

1. 单次模式 Timer.ONE_SHOT#

tim.init(period=100, mode=Timer.ONE_SHOT, callback=func)
  • 定时器仅触发 一次

  • 时间到后自动停止

2. 周期模式 Timer.PERIODIC#

tim.init(freq=2, mode=Timer.PERIODIC, callback=func)
  • 0.5 秒 触发一次

  • 会持续运行,直到手动停止

使用注意事项#

注意点

说明

软件定时器编号

使用 Timer(-1) 创建的软件定时器,不占用硬件资源

回调函数执行时机

回调函数运行在系统中断上下文中,避免阻塞性操作或 sleep()

不可重复初始化

若 Timer 正在运行,重新 init() 会覆盖上一个设置

释放资源

使用 tim.deinit() 关闭并释放定时器资源

应用场景举例#

  • 实时定时控制:LED 闪烁、蜂鸣器报警

  • 周期采样:传感器数据读取

  • 超时控制:任务执行超时处理

  • 系统心跳:定时打印“alive”标志

提示

Timer 模块详细用法请参考 K230 Timer API 文档

评论列表
条评论
登录