39个版本 (20个破坏性更新)
0.21.0 | 2024年5月30日 |
---|---|
0.20.0 | 2024年1月14日 |
0.19.0 | 2023年12月11日 |
0.18.0 | 2023年11月20日 |
0.2.5 | 2018年11月17日 |
#12 在 嵌入式开发
5,804 每月下载量
在 43 crates 中使用
1MB
23K SLoC
stm32f4xx-hal
stm32f4xx-hal 包含了在STMicro STM32F4系列微控制器外设访问API之上的多设备硬件抽象。MCU的选择是通过功能门实现的,通常由板级支持crate指定。目前支持以下配置
|
|
|
这个crate背后的想法是简化那些MCU上各种外设之间细微的差异,以便为同一系列的所有芯片编写HAL,而无需为每个型号粘贴crate。
其他可选功能
rtic1
— 支持 RTICv1框架。rtic2
— 支持 RTICv2框架(与rtic1
不兼容,需要nightly编译器)。defmt
— 实现公共枚举和结构的defmt::Format
。见defmt。can
— bxCAN外设支持。见bxcan。i2s
— I2S外设支持。见stm32_i2s_v12x。usb_fs
或usb_hs
— USB OTG FS/HS外设支持。见synopsys-usb-otg。fsmc_lcd
— 通过FMC/FSMC外设支持LCD。见display-interface。sdio-host
— SDIO外设支持。见sdio-host。
欢迎对这个库进行协作,同样也欢迎提交pull请求!
该库依赖于Adam Greig的出色stm32f4库,以提供适当的寄存器定义,并实现了一部分嵌入式HAL特性。
部分实现直接借鉴了Jorge Aparicio最初启动的stm32f1xx-hal库。
设置您的项目
检查您的板子是否在stm32-rs页面上有BSP。如果有,则stm32f4xx-hal
库应该已经包含在内,因此您可以将其用作项目的BSP。
手动
否则,像往常一样使用cargo init
创建一个新的Rust项目。嵌入式开发的“Hello World”通常是闪烁LED。执行此操作的代码位于examples/delay-syst-blinky.rs。将此文件复制到您的项目的main.rs
。
您还需要在您的Cargo.toml
中添加一些依赖项
[dependencies]
embedded-hal = "0.2"
nb = "1"
cortex-m = "0.7"
cortex-m-rt = "0.7"
# Panic behaviour, see https://crates.io/keywords/panic-impl for alternatives
panic-halt = "0.2"
[dependencies.stm32f4xx-hal]
version = "0.21.0"
features = ["stm32f407"] # replace the model of your microcontroller here
# and add other required features
我们还需要告诉Rust如何链接我们的可执行文件以及如何在内存中布局结果。为了完成所有这些,将stm32f4xx-hal
存储库中的.cargo/config和memory.x复制到您的项目中,并确保大小与数据表匹配。请注意,可能存在不同类型的内存,它们并不相等;为了安全起见,只指定指定地址的第一个块的大小。
快速启动
为了更快地创建空项目,您可以使用cargo generate
命令。请参阅stm32-template。
$ cargo generate --git https://github.com/burrbull/stm32-template/
请注意,您需要知道您的芯片的全名。
许可证
依赖项
~53MB
~1.5M SLoC