Mbed OS 文档翻译 之 参考(贡献(移植目标(微秒 ticker)))

微秒 ticker

实施微秒自动收录器使 Mbed OS 能够执行需要精确计时的操作。您可以使用此 API 来安排事件,记录已用时间并执行亚毫秒延迟。

假设

定义的行为

  • 据报道频率介于 250KHz 和 8MHz 之间。
  • 有一个至少 16 位宽的计数器。
  • ticker_init 函数可以安全地重复调用。
  • ticker_init 函数允许自动收报机继续计数并禁用自动收报机中断。
  • Ticker 频率非零,计数器至少为 8 位。
  • ticker 以(1 << 位)滚动并从 0 开始继续计数。
  • ticker 按指定频率加上或减去 10% 计算。
  • ticker 每增加 1 个滴答。
  • ticker 时间增加到或超过 ticker_set_interrupt 设置的值时,ticker 中断才会触发。
  • 在调用处理程序之前重复调用 ticker_set_interrupt 是安全的。
  • 函数 ticker_fire_interrupt 导致 ticker_irq_handler 立即从中断上下文调用。
  • ticker 操作 ticker_read,ticker_clear_interrupt,ticker_set_interrupt 和 ticker_fire_interrupt 完成时间不到 20us。

未定义的行为

  • 在 ticker 初始化之前调用除 ticker_init 之外的任何函数。
  • 如果时间包装并且再次与 ticker_set_interrupt 设置的值匹配,则是否第二次调用 ticker_irq_handler。
  • 使用大于支持的位数的值调用 ticker_set_interrupt。
  • 调用 us_ticker_free 后调用 us_ticker_init 以外的任何函数。

注意

实现此 API 时,请注意以下常见故障区域:

  • 重复计划时,ticker 不会漂移
  • 当它滚动时,ticker 会继续计数
  • 当比较值设置为 0 并发生溢出时,ticker 中断将触发

依赖

要实现此 API,器件必须具有硬件计数器,其计数值至少为 16 位宽,并且可以在 250KHz 和 8MHz 之间工作。

实现微秒 ticker API

您可以在以下头文件中找到微秒 ticker API 的 API 和规范:

微秒 Ticker

要在 Mbed OS 中启用微秒 ticker 支持,请在 targets.json 文件的目标部分的 device_has 选项中添加 USTICKER 标签。

测试

Mbed OS HAL 为微秒 ticker 提供了一组一致性测试。您可以使用这些测试来验证实现的正确性。要运行微秒 ticker HAL 测试,请使用以下命令:

mbed test -t <toolchain> -m <target> -n tests-mbed_hal-common_ticker*,tests-mbed_hal-us_ticker*

您可以阅读有关测试用例的更多信息:

微秒 Ticker

Ticker 测试

微秒 Ticker 测试

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值