主题

STM32 firmware

STM32 firmware 表示项目把 STM32 系 MCU 作为正式固件目标来维护,并围绕工具链、.ioc 硬件配置、刷写后端、板级职责和与其他 MCU/外设的分工建立了稳定契约。这里的主语不是“用了 STM32”,而是 STM32 固件在系统中的角色。

  • 硬件

目录

Definition

STM32 firmware 表示项目把 STM32 系 MCU 作为正式固件目标来维护,并围绕工具链、.ioc 硬件配置、刷写后端、板级职责和与其他 MCU/外设的分工建立了稳定契约。这里的主语不是“用了 STM32”,而是 STM32 固件在系统中的角色。

它通常会和 Embedded Rust、Async embedded、USB PD 一起出现,但不替代这些 Topic:STM32 firmware 解释 STM32 侧固件职责、硬件配置真相源和刷写/bring-up 习惯,其他 Topic 解释运行时、协议或器件语义(projects/loadlynx.md、projects/pd-sink-stm32g431cbu6-rs.md、projects/sk150c-kit.md)。

When to use

当 README、project snapshot、Cargo.toml、.ioc 文件、刷写配置或目录结构明确表明 STM32 是当前系统的正式 MCU 目标时使用。若 STM32 只是历史目录、单次实验或外围工具引用,则不应直接命中。

如果一个改动会影响 STM32 侧运行时、外设配置、.ioc/CubeMX 真相源、刷写参数、双 MCU 分工、保护逻辑、显示/PD 等板级职责,就应该命中 STM32 firmware。若问题主要在协议或器件层,则应再借助 USB PD、Display driver 等相邻 Topic。

Habits / defaults

  • Many repos keep .ioc files next to Rust to preserve hardware configuration provenance (projects/sk150c-kit.md, projects/pd-sink-stm32g431cbu6-rs.md)
  • Tooling/automation often includes Make/Just wrappers and agent tooling (projects/loadlynx.md)
  • Firmware repos are commonly “device-product” shaped (docs + models + scripts alongside code) (projects/ups120.md)
  • .ioc 或同类硬件配置文件应被视为真相源之一,而不是多余生成物;它们记录了 GPIO/外设分配和板级约束,后续不能只靠 Rust 代码反推。
  • 刷写后端、probe 参数和工具封装同样属于主题知识。probe-rs、目标芯片名、速度、reset 策略若不写清,STM32 bring-up 很容易变成靠个人记忆。
  • 在分体式设备里,STM32 常承担快速闭环、保护或硬实时路径;Topic 回答里要把它与 ESP32/Web/UI 等较慢平面分开(projects/loadlynx.md)。
  • STM32 firmware 往往是“device-product” 形仓库的一部分,docs/models/scripts 与代码一起决定系统真相;不能只盯 src/。
  • 回答此 Topic 时,应先写 STM32 负责哪条物理职责链,再写 runtime/tooling。否则 MCU 标签会过宽,失去指导性。

Reference implementations

  • projects/loadlynx.md:最适合说明 STM32 在双 MCU 系统里承担快速闭环与保护职责。
  • projects/pd-sink-stm32g431cbu6-rs.md:适合说明 .ioc、probe-rs 参数和 USB PD/显示/保护如何共同定义 STM32 固件边界。
  • projects/sk150c-kit.md:适合补充开发指南、模型和脚本一并构成设备固件知识面的那一面。
  • projects/stm32g4-flash-programmer.md:适合说明 STM32 附属刷写工具如何与固件主题相邻但不等同。

Failure modes

  • 只因为用了 STM32 crate 或板子名就打 STM32 firmware,却没有当前 MCU 目标、刷写或职责证据,会让 Topic 失去判别力。
  • 把 STM32 firmware 当成整个仓库的总括标签,忽略 Embedded Rust、Async embedded、USB PD 等相邻 Topic,会让后续 Agent 无法判断真正该看的是 MCU 运行时、协议还是器件层。
  • 不写 .ioc/probe 参数/目标芯片信息,会让最常见的 bring-up 和刷写问题完全脱离知识库。
  • 在双 MCU 系统里不写分工,也会让维护者在错误的控制面上改动核心逻辑。

Evidence index

  • projects/display-ambient-light-board-rs.md
  • projects/loadlynx.md
  • projects/pd-sink-stm32g431cbu6-rs.md
  • projects/sk150c-kit.md
  • projects/stm32g4-flash-programmer.md
  • projects/ups120.md
  • skills/style-playbook/references/data/topics/stm32-firmware.json