发布于 1 天前
摘要
硬件映射表、错误码枚举映射、DMA+回调通知、纯格式化+回调分发、直接寄存器——BSP 层 10 个驱动的五种模式。
硬件映射表、错误码枚举映射、DMA+回调通知、纯格式化+回调分发、直接寄存器——BSP 层 10 个驱动的五种模式。
从状态机引擎内部视角看 psh_task_once 完整执行流、sm_* 子流程注册模式、事件系统解耦、子阶段枚举、状态切换全链路。
三层隔离:GPIO bit-bang 时序、AT24C02 芯片协议、统一接口。展示了 BSP 层设计的四个核心原则。
同一个 STM32 项目同时支持 GCC ARM 和 LLVM/Clang。GCC 日常开发,LLVM 发布优化。两个工具链文件不到 70 行。
任务通知比信号量快约 40%。项目中 xTaskNotifyGive 承担了状态推送、ISR 唤醒、UART 驱动三种不同模式。
IWDG 保证死机后能重启。通信看门狗保证没死但聋了时能报警。两层互补覆盖嵌入式设备最常见的两类无声故障。
5A A5 帧格式在 STM32 上的收发、日志推送封装、参数读写映射。与 HMI 上位机共享一路 USART 的设计权衡。
项目初期所有参数都是 #define。要从编译期宏迁移到运行时 EEPROM 持久化,需要一条安全的四步路径。
来自一个 STM32+FreeRTOS 工业控制项目的真实复盘。中断快照、协议回复时机、残余 done、隐式斩杀、超时错觉……每一个都踩过。
一张声明式表格描述每个状态对应的全部执行器输出。MotorTask 周期遍历,一次性下发。新增状态只需加一行表。