2个不稳定版本
0.1.0 | 2024年1月11日 |
---|---|
0.0.0 | 2021年4月21日 |
1500 在 嵌入式开发 中排名
1,864 每月下载量
用于 8 crate
1.5MB
37K SLoC
Embassy STM32 HAL
embassy-stm32 HAL旨在为所有STM32系列提供安全、惯用的硬件抽象层。HAL实现了许多外设的阻塞和异步API。在适当的情况下,实现了embedded-hal v0.2和v1.0的阻塞和异步版本的特性,以及来自embedded-io[-async]的串行特性。
- crates.io上的embassy-stm32
- 文档 (重要:使用docs.embassy.dev而不是docs.rs查看您所使用芯片的特定文档!)
- 源代码
- 示例
embassy-stm32支持所有STM32芯片系列
STM32微控制器有多种系列和类型,支持所有这些系列是一项艰巨的任务。Embassy利用STM32外设版本在芯片系列之间共享的事实。例如,而不是为每个STM32芯片系列重新实现SPI外设,Embassy有一个单一的SPI实现,该实现依赖于代码生成的寄存器类型,对于具有相同外设版本的STM32系列是相同的。
实际上,它是这样工作的
- 您使用特性标志告诉编译器您正在使用哪个芯片
- stm32-metapac模块在编译时根据stm32-data模块中的数据为该芯片生成寄存器类型
- embassy-stm32 HAL根据自动生成的特性标志为每个外设选择正确的实现,并对HAL在该芯片上运行所需的任何其他调整
请注意,尽管embassy-stm32力求一致地支持所有芯片的所有外设,但这种方法可能导致不同系列上的API和功能略有不同。请查阅您所使用的特定芯片的文档以确认确切可用内容。
嵌入式-hal
《embassy-stm32》HAL 实现了来自 embedded-hal(v0.2 和 1.0)和 embedded-hal-async,以及 embedded-io 和 embedded-io-async 的特性。
embassy-time
时间驱动器
如果启用了 time-driver-*
功能,embassy-stm32 提供了一个用于与 embassy-time 一起使用的时间驱动器。您可以通过 time-driver-tim*
功能选择内部使用的硬件定时器,或者使用 time-driver-any
由 embassy 选择。
embassy-time 的默认滴答频率为 1MHz,这足以导致与 embassy-stm32 时间驱动器当前支持的 16 位定时器(特别是,如果临界区延迟了超过 32ms 的中断请求)出现问题。为了避免这种情况,建议选择较低的滴答频率。对于许多用途,32.768kHz 是一个合理的默认值。
互操作性
此包可以在任何执行器上运行。
可选地,一些需要 embassy-time
的功能可以通过 time
功能激活。如果您启用它,必须在您的项目中链接一个 embassy-time
驱动器。
low-power
功能特别与 embassy-executor
集成,目前不能在其他执行器上使用。
依赖关系
~166MB
~5.5M SLoC