Skip to content

第 1 章 · 1 读手册的能力

1.0 引子:流水灯会闪了,然后呢?

设想你刚跟着网课点亮了一盏 LED。一行代码敲下去,灯亮了,成就感拉满。

然后你想加个按钮:按一下,灯反过来。你搜「STM32 按键」,抄了一段代码,能用。再然后你想接一块 I²C 的 OLED——这次搜不到现成代码了,你盯着 GPIO_Mode_AF_OD 这个枚举发呆:AF 是啥?OD 又是啥?为什么接 I²C 要用它,接 SPI 就不要?

你卡住的那一刻,问题其实不在 OLED,而在一个更底层的地方:你一直在吃别人嚼过的结论,从没自己翻开过那本能告诉你答案的说明书。

ST 给 STM32F103 配了四本说明书(注意,是四本,不是一本)。它们分工明确,但长得都像天书,新手根本不知道该翻开哪本。这一节先把这四本的「角色」搞清楚——这是整个单片机硬件学习的地基。


1.1 四本说明书,四个工种

我给这四本各打一个比方,你只要记住这个比方,以后就知道该翻谁。

数据手册(datasheet,DS5319)——「身份证 + 体检报告」

datasheet 回答的是「这颗芯片是什么、能承受什么」。它讲的是芯片作为一个物理实体的硬指标:

  • 它长什么样、几个脚、每个脚叫什么(引脚定义,第 3 章);
  • 它能扛多少电压、吃多少电流、IO 能灌入/吸出多少毫安(电气特性,第 5 章);
  • 绝对不能超过的红线在哪(绝对最大额定值,5.2 节)。

什么时候翻它? 任何时候涉及到「电压、电流、电平、引脚位置、封装尺寸、温度」这种物理量,答案只在 datasheet 里。你想知道「这个 IO 脚最大能输出多少电流」——别去翻 reference manual,它不管这个,翻 datasheet 第 5 章。

文档号:DS5319 Rev 20(2025-07),114 页,覆盖 STM32F103x8/xB 中密度型号(我们的 C8T6 就在这一档)。

参考手册(reference manual,RM0008)——「操作说明书」

如果 datasheet 是「这芯片是什么」,RM0008 就是「这芯片怎么用」。它是一千多页的巨型文档,把每一个外设(GPIO、定时器、ADC、USART、I²C……)的工作原理、每一个寄存器的每一位是什么意思,全列了出来。

  • 想知道 GPIO 的几种工作模式内部是怎么接的?第 9 章(p157);
  • 想知道时钟树怎么配?第 7 章(p89,中密度型号走这章);
  • 想知道 ADC 怎么采样?第 11 章(p215)。

什么时候翻它? 任何「这个外设怎么工作、寄存器怎么配、为什么这段代码要写这一步」的问题。它是你写代码、调外设时的主战场。

文档号:RM0008 Rev 21(2021-02),1136 页。注意它覆盖 F101/F102/F103/F105/F107 全家,所以里面有些章节(比如第 8 章的 RCC)是给 connectivity line 用的,F103 中密度看第 7 章就行——这种「一家人共用一本」的坑,后面会专门讲。

编程手册(programming manual,PM0056)——「大脑解剖图」

datasheet 讲芯片整体,RM0008 讲外设,而内核(Cortex-M3 这个 CPU 本身)这件事,它俩都不细讲——那是 PM0056 的地盘。它讲的是寄存器组、中断/异常模型、栈、指令集、启动流程这些「CPU 怎么思考和响应」的东西。

  • 想知道 Cortex-M3 有哪些寄存器、复位后第一件事干啥?第 2 章(程序员模型、异常模型);
  • 想知道中断向量表长什么样?2.3.4 节。

什么时候翻它? 当问题深入到「内核行为」——中断嵌套、栈、HardFault 这种玄学、启动文件里那段汇编在干嘛——才需要它。新手早期用得少,但一旦你开始碰 RTOS、bootloader、调试死活查不出来的问题,它就是圣经。

文档号:PM0056(2024-12 版),156 页。它覆盖 F10x/20x/21x/L1x 几个系列——只要内核是 Cortex-M3,这本就对得上号。

勘误表(errata,ES096)——「召回公告」

这一本,90% 的新手不知道它存在,但它可能是最该先读的一本。

errata 是 ST 自己承认的「这颗芯片有哪些已知 bug」。是的,芯片和软件一样有 bug——硅片流片出来,有些设计缺陷改不了,只能在文档里告诉你「这个功能别这么用,这么用会出问题,变通办法是……」。

  • 它按芯片的硅片版本号(silicon revision,代码里有 A / B / Z / Y / X / 1 / 2 / 3 等好几版)分别列出 bug 清单——同一型号不同批次的坑还不一样;
  • 每个 bug 标一个状态:A = 有变通方案、P = 部分变通、N = 无变通、- = 该版本无此问题。

什么时候翻它? 当你遇到「明明配置全对,行为就是不对」的玄学问题——先查 errata,很可能那是个官方记录在案的坑。也强烈建议在项目刚选定芯片时把它通读一遍,提前知道哪些雷区不能踩。

文档号:ES096 Rev 15(2022),31 页,专门针对 STM32F103x8/B 中密度——和我们的 C8T6 完全对口。


1.1.1 一张表收尾:四本各管什么

手册文档号回答什么典型问题篇幅
datasheetDS5319芯片是什么、能扛什么「IO 最大输出多少电流?」「这个脚在哪?」114p
reference manualRM0008外设怎么用、寄存器怎么配「GPIO 几种模式怎么选?」「时钟树怎么配?」1136p
programming manualPM0056内核怎么工作「中断怎么嵌套?」「启动文件在干嘛?」156p
errataES096芯片有哪些已知 bug「为什么这功能不正常?」31p

踩坑提醒:新手最常犯的错,是抱着 reference manual 找电气参数(「这个 IO 能灌多少电流?」在 RM0008 里翻半天找不到——因为它在 datasheet 第 5 章),或者在 datasheet 里找寄存器定义(datasheet 只给引脚和电气特性,寄存器全在 RM0008)。记住一句口诀:物理量找 datasheet,寄存器找 RM0008,内核找 PM0056,玄学问题找 errata。 这四句话能帮你省下无数个小时。


1.1.2 要点

  • STM32F103 有四本核心文档,不是一本:DS5319 / RM0008 / PM0056 / ES096,分工互补、谁都替代不了谁。
  • datasheet 管「是什么 / 能扛什么」(物理量),RM0008 管「怎么用」(外设与寄存器),PM0056 管「内核怎么工作」,errata 管「有哪些 bug」。
  • 四本的文档号、修订号、对应型号范围都要对得上——尤其 datasheet 和 errata 是按密度 / 型号分册的,下错版本会张冠李戴(我们的 C8T6 是中密度,认准 x8/B 这档)。
  • 后面四节会分别拆解前三本的「怎么读、怎么查」,以及 errata「为什么必读」。

参考说明:参考 ST 官方文档 DS5319 Rev 20(2025-07)、RM0008 Rev 21(2021-02)、PM0056(2024-12)、ES096 Rev 15(2022),仅作理解线索与页码指路;本文为结合自己理解重新整理的学习笔记,不涉及对原文档的复制或翻译。

7c8f671 · 7c8f671 · 2026-07-04