#hal #hardware-abstraction #cortex-m #arm #stm32-hal #stm32f4xx

无 std stm32f4xx-hal

STM32F4系列微控制器的外设访问API

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嵌入式开发

Download history 2691/week @ 2024-05-04 1925/week @ 2024-05-11 1863/week @ 2024-05-18 2272/week @ 2024-05-25 1915/week @ 2024-06-01 1774/week @ 2024-06-08 2110/week @ 2024-06-15 2617/week @ 2024-06-22 2163/week @ 2024-06-29 2117/week @ 2024-07-06 1801/week @ 2024-07-13 1645/week @ 2024-07-20 1533/week @ 2024-07-27 1449/week @ 2024-08-03 1307/week @ 2024-08-10 1204/week @ 2024-08-17

5,804 每月下载量
43 crates 中使用

0BSD 许可证

1MB
23K SLoC

stm32f4xx-hal

Crates.io Crates.io Released API docs Minimum Supported Rust Version dependency status Continuous integration

stm32f4xx-hal 包含了在STMicro STM32F4系列微控制器外设访问API之上的多设备硬件抽象。MCU的选择是通过功能门实现的,通常由板级支持crate指定。目前支持以下配置

  • stm32f401
  • stm32f405
  • stm32f407
  • stm32f410
  • stm32f411
  • stm32f412
  • stm32f413
  • stm32f415
  • stm32f417
  • stm32f423
  • stm32f427
  • stm32f429
  • stm32f437
  • stm32f439
  • stm32f446
  • stm32f469
  • stm32f479

这个crate背后的想法是简化那些MCU上各种外设之间细微的差异,以便为同一系列的所有芯片编写HAL,而无需为每个型号粘贴crate。

其他可选功能

  • rtic1 — 支持 RTICv1框架
  • rtic2 — 支持 RTICv2框架(与rtic1不兼容,需要nightly编译器)。
  • defmt — 实现公共枚举和结构的defmt::Format。见defmt
  • can — bxCAN外设支持。见bxcan
  • i2s — I2S外设支持。见stm32_i2s_v12x
  • usb_fsusb_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/configmemory.x复制到您的项目中,并确保大小与数据表匹配。请注意,可能存在不同类型的内存,它们并不相等;为了安全起见,只指定指定地址的第一个块的大小。

快速启动

为了更快地创建空项目,您可以使用cargo generate命令。请参阅stm32-template

$ cargo generate --git https://github.com/burrbull/stm32-template/

请注意,您需要知道您的芯片的全名。

许可证

0-clause BSD许可证.

依赖项

~53MB
~1.5M SLoC