Skip to content

ST-Forge 总体规划

ST-Forge 的目标不是再做一份零散的 STM32 笔记,而是做成一个可以长期生长的 STM32 学习工坊:新手能跟着点亮第一颗 LED,进阶者能理解时钟、总线、中断、DMA、文件系统和 RTOS,贡献者能围绕实验、模板、板卡适配和文档一起把项目打磨成社区级资源。

项目定位

ST-Forge 面向喜欢单片机、希望真正理解 STM32 的学习者。第一阶段聚焦 STM32F103C8T6 Blue Pill,使用开放工具链构建可复现的学习体验:

维度规划
主控STM32F103C8T6,优先适配 Blue Pill
主线C 语言、CMake、ARM GCC、OpenOCD、GDB、VS Code
驱动层次从寄存器意识出发,以 HAL 快速落地,关键章节补充寄存器视角
内容形态文档教程、可编译工程、实验代码、板卡说明、排障手册
目标用户初学者、Arduino 迁移者、C 语言学习者、嵌入式入门者、教学组织者

原则上,ST-Forge 不把学习者锁进单一 IDE。Keil/MDK、STM32CubeMX 等内容会作为对照材料和迁移知识出现;仓库主线以 CMake 工程和命令行可验证流程为准。

内容编排与改编原则

ST-Forge 的内容覆盖一条完整的 STM32 学习链:基础工具、C 语言硬件编程、GPIO、串口、定时器、DMA、ADC、DAC、IIC、SPI、CAN、USB、文件系统、RTOS 和综合实验。原则是“重新组织、而非逐字搬运”——每篇教程都围绕一个可验证的实验展开,目标是更适合 GitHub 文档站阅读、更适合复制运行、更适合社区维护。

主题到处理方式的编排如下:

主题方向ST-Forge 处理方式
入门路线、STM32 初识、工具准备改写为学习路线、硬件清单、环境配置
寄存器工程、HAL、CubeMX、启动与 map以 CMake / VS Code 为主线,保留 MDK / CubeMX 作为对照说明
时钟树、delay、USART、GPIO作为第一批核心基础章节
按键、中断、串口、看门狗、定时器、OLED做成小实验阶梯,每章必须有硬件连接、代码、验证、排障
LCD、RTC、低功耗、DMA、ADC、DAC、传感器做成进阶外设模块,按 Blue Pill 可实现性筛选
IIC、SPI、RS485、CAN、触摸、红外、温湿度、Flash、SD、FATFS做成总线与存储专题,明确额外模块和成本
汉字 / 图片显示、手写、输入法、DSP、IAP、USB作为高级专题或展示项目,避免过早进入主线
RTOS、信号量、队列、综合实验作为第二阶段收束项目

仓库产品形态

ST-Forge 应该同时是文档站和代码仓库。建议最终形成以下结构:

text
ST-Forge/
├── boards/                         # 板卡定义、引脚图、调试器接线
├── documentations/                 # VitePress 文档源
│   ├── tutorial/                   # 正式教程
│   └── planning/                   # 项目规划与路线图
├── examples/                       # 每章可编译实验工程
├── firmware/                       # 通用启动文件、链接脚本、HAL/CMSIS 封装
├── tools/                          # 脚本、校验、生成器
├── site/                           # VitePress 站点配置
├── project.config.ts               # 站点项目信息
└── README.md                       # GitHub 门面

examples/ 是明星仓库的关键。文档能讲清楚,示例能跑起来,学习者才会愿意 star、fork、提 issue。

课程路线图

ST-Forge 的课程先分成两条线:基础篇先落地,实战篇先规划。

基础篇服务当前阶段,目标是让学习者从零跑通 Blue Pill 的完整开发闭环;实战篇服务未来阶段,目标是把已经学到的外设能力组合成可以展示、可以扩展的小作品。

篇章阶段定位当前策略
基础篇v0.1 主线立即落地,章节、示例工程、排障一起做
外设篇v0.2-v0.3 主线跟随基础篇逐步扩展,不急于铺满
实战篇v0.4+ 主线先做远期规划,等基础篇稳定后选择首批项目
排障篇持续补充从真实学习过程和 issue 中沉淀
模板篇持续补充服务示例工程复用和社区贡献

基础篇 v0.1:从零跑通一块 Blue Pill

基础篇是 ST-Forge 的第一根主梁。它不追求炫技,而是追求小白能跟着走、每章都能验证、每个关键问题都能解释清楚。

基础篇的完成标准:

  • 用户知道该买什么硬件、怎么接线、怎么判断板子和调试器正常。
  • 用户能在 Windows 或 WSL/Linux 下完成工具链配置。
  • 用户能编译、烧录、调试一个 CMake 工程。
  • 用户理解 main.c、启动文件、链接脚本、HAL/CMSIS、CMake 之间的关系。
  • 用户能独立完成 GPIO、串口、中断、定时器这几类最常用能力。
  • 用户遇到烧录失败、串口乱码、HardFault、时钟异常时,有基本排查路径。

计划章节如下:

编号章节交付物
0.0学习路线与硬件清单Blue Pill、ST-Link、USB-TTL、杜邦线、面包板清单
0.1板卡认识与接线供电、BOOT0/BOOT1、SWD 接线、常见假板风险
0.2Windows 环境配置ARM GCC、CMake、OpenOCD、Git、VS Code
0.3WSL/Linux 环境配置gcc-arm-none-eabi、openocd、USB/udev 注意事项
0.4第一次编译CMake configure/build、.elf/.bin/.hex 产物解释
0.5第一次烧录OpenOCD 烧录、ST-Link 连接验证、失败排查
0.6第一次调试GDB、断点、单步、变量、寄存器观察

基础篇 v0.1:芯片与工程基本功

目标:学习者知道代码如何从复位进入 main,知道外设为什么要开时钟,知道寄存器、HAL 和 C 代码之间的关系。

计划章节:

编号章节核心实验
1.1Cortex-M3 与 STM32F103 内存映射手算 GPIO 寄存器地址
1.2启动文件、链接脚本与 map 文件看懂 Flash/RAM 占用
1.3CMake 工程结构新建最小工程
1.4C 语言硬件基础位操作、宏、结构体、指针、volatile
1.5HAL 与寄存器的关系用 GPIO 例子对照 HAL 调用和寄存器变化
1.6时钟树HSI/HSE/PLL 与 72 MHz 配置
1.7map 文件与内存占用从构建产物反推代码进入芯片的方式

基础篇 v0.1:最小外设能力

目标:从“能点灯”走到“能写一个小型交互程序”。这一段是基础篇最重要的实操部分,每章都必须配套示例工程。

编号章节核心实验
2.1GPIO 输出板载 LED 闪烁
2.2GPIO 输入按键读取、上拉下拉、软件消抖
2.3SysTick 与 delay微秒/毫秒延时、阻塞式延时的代价
2.4USART 输出printf、串口工具、乱码排查
2.5USART 输入回环、简单命令解析
2.6EXTI 外部中断按键中断、NVIC、优先级
2.7基本定时器周期中断、非阻塞闪烁
2.8PWM 入门呼吸灯、占空比调节
2.9调试与故障分析断点、单步、HardFault、看门狗式排查思路

基础篇收官项目:Blue Pill Mini Console

基础篇最后用一个不依赖额外模块的小项目收束。它要足够简单,保证新手能完成;也要足够完整,让学习者感受到自己真的写出了一个小设备。

项目功能:

功能涉及知识
串口命令 led on/off/toggleUSART、命令解析、GPIO 输出
串口命令 blink 100/500/1000定时器、状态机、非阻塞逻辑
串口命令 pwm 0-100PWM、参数解析、占空比
按键切换运行状态GPIO 输入、消抖、EXTI
串口打印当前状态printf、结构化状态输出
调试观察变量变化GDB、断点、watch、寄存器

项目交付物:

  • examples/99_bluepill_mini_console 示例工程。
  • 一篇项目教程,按“需求 -> 设计 -> 实现 -> 调试 -> 扩展”组织。
  • 一份命令清单和预期串口输出。
  • 一份常见问题排障表。

外设篇 v0.2-v0.3:基础之外的能力扩展

外设篇不急着在第一阶段铺满。它的作用是为实战篇准备零件库,让学习者逐渐掌握更多传感器、总线、存储和通信能力。

模块章节方向实验
ADC单通道、多通道、采样时间电位器采样、电池电压测量
DMA内存搬运、外设搬运USART DMA、ADC DMA
I2C24C02、OLED参数保存、屏幕显示
SPIW25Q64、OLED/TFTFlash 读写、图片显示
RTC时间、备份寄存器小时钟、掉电时间保持
低功耗Sleep/Stop/Standby待机唤醒实验
1-WireDS18B20温度采集
单总线时序DHT11温湿度采集
红外NEC 协议遥控器解码
RS485/CAN工业通信入门多板通信
Flash 与参数区内部 Flash 擦写保存配置
Bootloader/IAP固件升级串口升级应用
FATFSSD 卡与文件系统数据记录器
USBCDC、MSC虚拟串口、U 盘设备
RTOS任务、队列、信号量、定时器多任务采集与显示

实战篇远期规划:把知识变成作品

实战篇先不作为近期交付压力,而是作为远期项目地图。等基础篇稳定后,再从中选择 2-3 个成本低、效果直观、资料好维护的项目进入实现。

候选项目:

项目核心看点依赖知识优先级
OLED 小仪表盘有屏幕、有页面、容易展示I2C/SPI、字体、按键菜单
桌面环境监测站温湿度、光照、电压集中显示DHT11/DS18B20、ADC、OLED
迷你数据记录仪真正有“产品感”的小设备RTC、SD、FATFS、CSV
红外遥控学习器协议解析有趣,现象直观定时器输入捕获、状态机
PWM 灯光/舵机控制器适合演示定时器能力PWM、按键、串口调参
USB 工具棒和电脑交互,传播性强USB CDC/MSC、Flash
简易 Bootloader工程深度强Flash、IAP、链接脚本、启动跳转
RTOS Sensor Hub作为高级收束项目RTOS、队列、互斥、定时器

实战篇的原则:

  • 优先选择低成本、好买、好接线的模块。
  • 每个项目都必须能拍图、录屏或保存串口日志,方便 README 展示。
  • 项目教程不堆外设,而是讲清楚需求拆分、模块边界、调试过程和扩展方向。
  • 如果某个项目需要复杂硬件,必须提供简化版本。

文档写作标准

每一篇教程固定采用同一套结构:

  1. 本章目标:读完能做什么。
  2. 硬件准备:模块、引脚、接线图、注意事项。
  3. 概念解释:只讲完成实验必须理解的内容。
  4. 工程改动:新增文件、关键代码、CMake 变化。
  5. 编译烧录:命令、预期输出、产物位置。
  6. 现象验证:用户应该看到什么。
  7. 常见问题:错误日志、原因、修复。
  8. 延伸练习:一到三个可完成的小改造。

文风要保持“友好但准确”:少一点术语堆砌,多一点工程现场感;但所有寄存器、时钟、引脚、命令都必须可核对。

示例工程标准

每个实验工程应满足:

标准要求
可编译cmake --build 必须通过
可烧录OpenOCD 配置明确
可调试VS Code launch 配置或 GDB 命令明确
可复用公共启动文件、链接脚本、HAL/CMSIS 不重复散落
可验证文档中说明预期串口输出、LED 状态或测量结果

建议先建立一个 examples/00_blink_cmake 黄金模板。后续所有章节从模板复制演进,避免每篇教程重新发明工程结构。

社区与传播规划

要成为明星仓库,除了内容完整,还需要让人愿意参与。

方向规划
GitHub 门面README 写清楚愿景、快速开始、路线图、贡献方式
Issue 模板区分环境问题、教程错误、板卡适配、功能建议
PR 规则文档、示例、板卡三类贡献路径
Good First Issue从错别字、截图补充、模块验证、排障条目开始
版本路线v0.1 跑通环境,v0.2 基础外设,v0.3 总线模块,v1.0 完整课程
展示材料每个明星实验保留图片/GIF/串口日志,方便 README 展示

第一批里程碑

各里程碑的可勾选行动项已展开到行动路线图,下面是各里程碑的目标与完成标准。

Milestone 1:基础篇骨架

  • 完成 README 项目门面。
  • 完成基础篇目录设计。
  • 统一“基础篇 / 外设篇 / 实战篇 / 排障篇 / 模板篇”的站点结构。
  • 明确 Blue Pill 硬件清单、供电方式、启动模式、ST-Link 接线。
  • 确定基础篇每章的示例工程命名规则。

Milestone 2:黄金模板

  • 新增 examples/00_blink_cmake
  • 建立公共 firmware/templates/ 结构。
  • 支持 cmake configure/build/flash/debug 基础闭环。
  • 文档覆盖 Windows 与 WSL/Linux。

Milestone 3:基础篇核心章节

  • GPIO 输出、GPIO 输入、SysTick、USART、EXTI、基本定时器、PWM。
  • 每章配套示例工程。
  • 每章增加常见错误和排障。
  • 每章都能从“现象验证”回到“工程结构”和“芯片机制”。

Milestone 4:基础篇收官项目

  • 完成 Blue Pill Mini Console
  • 串口命令、GPIO、按键、中断、定时器、PWM 串成一个完整工程。
  • 增加调试章节:如何用断点和变量观察理解项目运行。
  • README 增加基础篇完成后的学习成果说明。

Milestone 5:实战篇首批项目选择

  • 从 OLED 小仪表盘、桌面环境监测站、迷你数据记录仪中选择首批项目。
  • 建立外设模块购买清单与引脚占用表。
  • 整理贡献指南,开始面向社区征集验证反馈。

当前决策

  1. ST-Forge 主线采用 CMake + ARM GCC + OpenOCD + GDB。
  2. 基础篇作为 v0.1 的近期目标,先保证小白能从零跑通 Blue Pill。
  3. 教程内容围绕可验证的实验重新组织,强调适合工程实践与社区维护。
  4. HAL 作为第一阶段落地 API,关键章节补充寄存器视角。
  5. Blue Pill 是第一目标板卡,所有实验先评估是否能在 Blue Pill 上低成本复现。
  6. 实战篇先做远期规划,不抢基础篇的落地节奏。
  7. 文档和示例工程同等重要;没有可运行工程的教程不算完成。

近期行动清单

详细的、可勾选的行动项已拆解到行动路线图,按里程碑组织。当前最该动手的三件事:

  • [ ] 新增 examples/00_blink_cmake 黄金模板与 firmware/ 公共底座,跑通编译烧录调试闭环(Win + WSL)。
  • [ ] 落地八段式章节模板,后续所有章节按模板扩写。
  • [ ] 补齐 Blue Pill 板卡文档:引脚、供电、启动模式、ST-Link 接线。

完整进度见 roadmap.md

  • [ ] 为 Blue Pill Mini Console 写需求草案和命令清单。

Built with VitePress