embassy book

Embassy STM32 HAL

Embassy STM32 HAL 基于 stm32-metapac 项目。

无限变体问题

STM32 微控制器有许多系列和变种,支持所有这些是一个巨大的工程。Embassy 利用了 STM32 外围设备版本在芯片系列之间共享的事实。Embassy 没有为每个 STM32 芯片系列重新实现 SPI 外围设备,而是拥有一个单一的 SPI 实现,该实现依赖于代码生成的寄存器类型,这些类型对于具有给定外围设备相同版本的 STM32 系列是相同的。

Metapac

stm32-metapac 模块使用预生成的芯片和寄存器定义,用于 STM32 芯片系列,以生成寄存器类型。这是在编译时基于 Cargo 特性标志完成的。

芯片和寄存器定义位于一个单独的模块 stm32-data 中,每当在定义中发现错误或添加对新芯片系列的支持时,都会修改该模块。

HAL

embassy-stm32 模块包含所有 STM32 系列的 HAL 实现。该实现使用自动派生的特性标志来支持给定芯片系列的给定外围设备的正确版本。

定时器驱动

STM32 定时器驱动程序默认以 32768 Hz 运行。