#hal #arm #cortex-m #hardware-abstraction #stm32f3xx

no-std stm32f3xx-hal-v2

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

2个不稳定版本

0.6.0 2021年1月8日
0.5.0 2020年10月31日

#1365嵌入式开发

0BSD 许可证

370KB
7K SLoC

stm32f3xx-hal

Build Status Crate Docs

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用户会期望它能这样做。

选择正确芯片的详细步骤

  1. 从您的数据手册、用户手册或其它来源获取您使用的芯片的全称。

    示例:

    我们想使用STM32F3Discovery套件。用户手册Usermanual告诉我们它使用STM32F303VC芯片。

  2. 在上面的列表中找到您的芯片作为特性。

    示例:

    在寻找我们STM32F303VC芯片的正确特性时,我们首先找到stm32f301xb。这是错误的芯片,因为我们不是在寻找f301,而是在寻找f303

    继续寻找,我们发现stm32f303xc。这与STM32F303VC相匹配(注意VC → xc)。

  3. 将芯片名称作为特性添加到您的cargo调用中。

    示例:

    使用STM32F303VC芯片,我们运行cargo check --features stm32f303xc

许可证

0-clause BSD许可证.

依赖项

~26MB
~734K SLoC