#tick #timer #rate #async #duration #elapsed-time #driver

no-std embassy-time

为嵌入式无std系统提供即时和Duration,支持异步定时器

5个不稳定版本

0.3.2 2024年8月5日
0.3.1 2024年6月6日
0.3.0 2024年1月11日
0.2.0 2023年12月4日
0.0.0 2020年10月31日

28嵌入式开发 中排名

Download history 3815/week @ 2024-05-04 4349/week @ 2024-05-11 5523/week @ 2024-05-18 5317/week @ 2024-05-25 5790/week @ 2024-06-01 5194/week @ 2024-06-08 4452/week @ 2024-06-15 5883/week @ 2024-06-22 5053/week @ 2024-06-29 5093/week @ 2024-07-06 7038/week @ 2024-07-13 6342/week @ 2024-07-20 5824/week @ 2024-07-27 7006/week @ 2024-08-03 8135/week @ 2024-08-10 4658/week @ 2024-08-17

每月下载量 26,394
81 个库中(直接使用 68 个)使用

MIT/Apache

135KB
2K SLoC

embassy-time

计时、延迟和超时。

使用系统启动以来的经过时间进行计时。时间以tick表示,tick速率由驱动器(在固定速率tick的情况下)或用户通过tick速率特性选择。所选tick速率适用于embassy-time中的所有内容,因此决定了(1 / tick_rate)的最大时间分辨率。

tick计数为64位。默认的1MHz tick速率支持表示长达约584558年的时间跨度,这对于所有实际用途来说已经足够大,并且可以避免溢出的问题。

全局时间驱动器

time模块由在构建时指定的全局“时间驱动器”支持。程序中只能有一个驱动器处于活动状态。

所有方法和结构体都透明地调用活动驱动器。这使得库能够在无需泛型参数的情况下以驱动器无关的方式使用embassy_time

有关更多详细信息,请参阅embassy_time_driver库。

瞬间和持续时间

Instant 表示一个给定的时间点(相对于系统启动),而 Duration 表示一段时间跨度。它们实现了您预期的数学操作,如加法和减法。

延迟和超时

Timer 允许执行异步延迟。 Ticker 允许在时间推移过程中不发生漂移的周期性延迟。

Delay 为与生态系统中库的兼容性提供了 embedded-hal 延迟特性的实现。

系统时间

time 模块仅处理单调递增的滴答计数。因此,它没有直接支持系统时间(例如 2021-08-24 13:33:21 这样的“现实生活中的”日期时间)。

如果不需要跨重启持久性,可以通过存储“自启动以来经过的秒数”与“自 Unix 纪元以来的秒数”之间的偏移量,在 embassy_time 的基础上构建支持。

依赖项

~1.3–3.5MB
~59K SLoC