2个不稳定版本
0.6.0 | 2021年1月8日 |
---|---|
0.5.0 | 2020年10月31日 |
#1365 在 嵌入式开发
370KB
7K SLoC
stm32f3xx-hal
stm32f3xx-hal
包含了对STMicro STM32F3系列微控制器的外设访问API之上的多设备硬件抽象。通过功能门选择MCU,通常由板级支持crate指定。目前支持的配置包括
- stm32f301
- stm32f318
- stm32f302
- stm32f303
- stm32f373
- stm32f378
- stm32f334
- stm32f328
- stm32f358
- stm32f398
这个crate的目的是为了简化那些MCU上各种外设之间细微的差异,以便可以为一个系列的所有芯片编写HAL,而不必为每个型号粘贴crate。
欢迎对这个crate进行合作,也欢迎pull request!
这个crate依赖于Adam Greig出色的stm32f3
crate以提供适当的寄存器定义,并实现了一组embedded-hal
traits。
几乎所有的实现都是从stm32f30x-hal
crate中无耻地改编的,作者是Jorge Aparicio。
变更日志
选择合适的芯片
这个crate需要你指定你的目标芯片作为功能。
示例:STM32F3Discovery板有一个STM32F303VCT6芯片。因此,你想要在cargo
的调用中添加--features stm32f303xc
。
可能的芯片
注意:x
表示 [a-z] 中的任何字符
- stm32f301xb
- stm32f301xc
- stm32f301xd
- stm32f301xe
- stm32f318
- stm32f302xb
- stm32f302xc
- stm32f302xd
- stm32f302xe
- stm32f302x6
- stm32f302x8
- stm32f303xb
- stm32f303xc
- stm32f303xd
- stm32f303xe
- stm32f303x6
- stm32f303x8
- stm32f373
- stm32f378
- stm32f334
- stm32f328
- stm32f358
- stm32f398
背景
对于某些stm32f3xx芯片,存在一些子变体,这些变体在功能、外设使用以及因此“内部实现”方面有所不同。为了在特定子变体上充分利用所有外设,同时又不允许代码在其它子变体上运行,它们是需要指定的一些独立特性。
由于此包仍在基础开发中,预计在未来会有更多子变体取代普通变体,因为我们将实现更多功能。我们不希望允许使用普通变体,因为这会导致混淆。例如:stm32f303xc有gpio_e引脚组,而stm32f303x6没有。因此,我们不希望在所有stm32f303(即在指定特性stm32f303时)上暴露gpio_e引脚组,尽管stm32f303xc用户会期望它能这样做。
选择正确芯片的详细步骤
-
从您的数据手册、用户手册或其它来源获取您使用的芯片的全称。
示例:
我们想使用STM32F3Discovery套件。用户手册Usermanual告诉我们它使用STM32F303VC芯片。
-
在上面的列表中找到您的芯片作为特性。
示例:
在寻找我们STM32F303VC芯片的正确特性时,我们首先找到
stm32f301xb
。这是错误的芯片,因为我们不是在寻找f301
,而是在寻找f303
。继续寻找,我们发现
stm32f303xc
。这与STM32F303VC相匹配(注意VC → xc)。 -
将芯片名称作为特性添加到您的cargo调用中。
示例:
使用STM32F303VC芯片,我们运行
cargo check --features stm32f303xc
。
许可证
依赖项
~26MB
~734K SLoC