news 2026/5/15 8:47:09

《“叶”问手册——从零开始学习STM32中文参考手册》01

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《“叶”问手册——从零开始学习STM32中文参考手册》01

序言


提笔写这篇序言时,我正处于居家恢复的阶段,离开嵌入式开发的职场岗位已有一段时间。

我姓叶,所以这个栏目取名“叶”问手册。我是一个刚从深圳消费电子头部独角兽离职的嵌入式开发工程师,25年双非本科机器人专业毕业,带着两段ROBOCON比赛的热血、一年实习的沉淀,还有两个国奖、一个省奖,一个市奖等若干奖项和经历的底气,闯过宇树、云鲸、库玛动力等公司的面试场,最终握着年薪25w的offer,真正走进了嵌入式的实战世界。

之所以想做“叶”问手册这个系列,初衷很简单:一是不想让自己的手艺生疏,嵌入式的底层功底,不练不看,迟早完蛋;二是深知新手学STM32的痛点——市面上大多教程在新手的面前只会转化为“抄代码、用库函数”,却没人带着大家啃最核心参考手册。很多人学完教程,换个芯片、换个场景就手足无措,本质上就是没读懂手册,没搞懂寄存器的底层逻辑、外设的设计原理。

我不敢说自己是嵌入式领域的大神,也不敢保证每一句话都是绝对的真理,我只是一个刚出社会不久、踩过很多坑的“中小登”,想把自己从比赛、实习、职场中总结的经验,结合STM32中文参考手册,一点一点讲给大家听。

我始终相信“教学相长也”,写博客、后续录视频的过程,也是我重新梳理知识、查漏补缺的过程。如果你是刚入门STM32的新手,看不懂手册、摸不清底层逻辑,不妨跟着这个系列慢慢走;如果你有一定基础,想巩固底层功底、查漏补缺,也欢迎一起交流探讨。

如果你在学习过程中有疑问,不管是手册里的知识点、STM32的实操问题,还是比赛、面试、职场相关的困惑,都可以在评论区留言,我知无不言、言无不尽。

—— 叶,一个居家恢复、正在学习并打算持续学习嵌入式的中小登

前置知识(新手必看!!)

拆解手册

以STM32F103中文参考手册为例,整个手册分为29章,除了第一章介绍缩写,第二章介绍系统总线架构,剩下27章大部分为外设介绍。

每一章外设介绍可以大致分为几部分:

1.基本介绍

简单介绍该外设的作用,并列举该外设的各种特性,如各通信协议的通信模式,数据传输格式,最大通信速率;ADC/DAC的数据采集分辨率和模式,转换时间;定时器的计数器位数,能实现的计数功能等等。这里是开发者在开发某外设之前除芯片官网给出的宣传资料以外另一个可以确认外设基本信息的地方。

2.功能描述

详细分析外设各功能的实现原理,在寄存器上的实现逻辑及控制方法。如各通信协议的逻辑框图,收发电平示例,主从模式介绍,错误条件等等。这里是开发者在开发外设之前需要结合需求详细理解的地方。包括但不限于在寄存器上的实现逻辑,错误码的理解,电平的转换等等。

3.寄存器介绍

将外设对应的所有寄存器展开进行介绍,如CR(控制寄存器),SR(状态寄存器),DR(数据寄存器),BRR(波特率寄存器)。这里是开发者开发外设的唯一根据,所有的库函数,hal库都是在直接操作这里的寄存器,理解寄存器各位的作用,也就能一通百通玩转其他各型号芯片。

4.隐藏工具

Cortex-M3编程手册和技术参考手册。这两个手册在中文参考手册第二页文档使用说明中有放置链接。在涉及位带操作,SCB系统控制块操作,NVIC嵌套向量中断控制器,Systick系统滴答计时器等核心设备操作时需要参考这两份手册。

基础概念普及

一、内核

我们学习和使用的STM32,核心都是ARM架构的内核。ARM公司针对不同的应用场景,设计了不同细分系列的微架构内核,大家不用死记硬背,重点区分我们常用的即可:
- Cortex-A系列:多用于手机、平板、智能电视等复杂智能设备,主打高性能,能运行安卓等操作系统;

- Cortex-R系列:多用于汽车工业、工业控制等对实时性要求极高的场景,稳定性优先;

- Cortex-M系列:这是我们STM32最常用的内核(如Cortex-M3、M4、M7等),主打低功耗、低成本,广泛应用于智能家居、医疗设备、工业传感器等场景,也是我们后续解读手册的核心聚焦对象。


二、单片机位数

我们平常习惯说的“STM32”,其中“32”就是这个单片机的位数,核心含义是:它一次性可以处理的最大二进制位数,对应四字节(1字节=8位)。
与之对应的还有我们常见的其他位数单片机,方便大家对比理解:
- 8位机:如普通Arduino使用的ATmega328P、大学课本里的常客80C51,一次性只能处理8位二进制数据,性能和功能相对简单,适合入门练手;

- 32位机:也就是我们的STM32,性能更强,能处理更复杂的任务。

这里重点提醒:单片机的位数不只是一个“标签”,它和寄存器位数、指针位数、数据处理速度、数据对齐方式强相关。比如STM32的单个指针是32位、单个通用寄存器也是32位,后续会讲到的“位带操作”,也是基于32位地址映射实现的,理解这一点,后续解读寄存器会轻松很多。


三、总线(AHB/APB)

总线相当于STM32内部的“交通要道”,核心作用是连接内核和各个片上外设,传输数据和控制信号。STM32中最常用的是AHB和APB两类总线,差异主要在传输速度:

- AHB总线(高速总线):连接内核、存储器、DMA等高速设备,传输速度快;

- APB总线(低速总线):分为APB1和APB2,连接GPIO、UART、I2C等外设,其中APB2速度时APB1的2倍。

简单说:总线就是“数据通道”,不同速度的设备走不同的“通道”,避免拥堵,保证MCU稳定运行。


四、 时钟

时钟是MCU的“心跳”,STM32的所有内核、外设,都需要时钟信号支持才能工作(没有时钟,MCU就是一块“死板”)。不同的外设需要不同频率的时钟(比如串口需要低频率时钟,ADC需要中高频时钟),后续我们解读手册时钟树章节,会详细讲时钟的来源、倍频、分频,以及如何给不同外设分配时钟,这里主要解释一下时钟波形对MCU的作用:


作用一:


提供运行节拍CPU执行一条指令,通常需要若干步骤,最基本的三个步骤是:取指(从存储器拿指令)、译码(分析指令含义)、执行(完成指令操作)。
时钟的作用,就是为这些步骤提供统一的节奏。你可以把时钟想象成一个节拍器:每“滴答”一声,CPU就往前走一小步。单片机的主频率决定了“滴答”的速度——频率的倒数,就是一个时钟周期。

不同指令的效率不同:

有的指令可以在一个时钟周期内完成三步(比如简单寄存器操作);

有的指令需要多个时钟周期才能完成(比如访问外设或内存)。

CPU内部的各种执行器(取指单元、译码单元、执行单元)必须跟随时钟信号的变化来切换状态。
举个例子:
取指单元检测到第一个时钟上升沿后,开始执行取指任务。如果它在第二个上升沿到来之前就已经完成了取指,它会一直保持“完成但未继续”的状态,耐心等待第二个时钟上升沿的到来。
直到第二个上升沿出现,它才会把取指结果交给译码单元,然后自己开始准备下一轮取指。

为什么频率越高运行越快?
因为两个相邻上升沿之间的间隔越短,每个步骤就能越快地被推进。
就像工厂流水线,传送带走得快,产品就出得快。

单片机里也一样。CPU内部由晶体管组成,它们是“开关”:给高电平,开关接通。给低电平,开关断开。

从“通”到“断”或者反过来,需要时间——这就是晶体管翻转速度。
同时,电信号在芯片内部的导线上传输也需要时间(纳秒级)。

时钟的上升沿触发一次动作,CPU在上升沿“锁存”当前状态,然后在两个上升沿之间做运算,下一个上升沿来了,就“锁存”结果,并开始下一步。

如果时钟周期太短(频率太高):
运算还没完成,下一个上升沿就来了,结果就会被“锁存”一个错误的数据 → 然后CPU拿着错误的数据继续运行 → 轻则算错数,重则直接死机。

作用二:

众所周知,时钟信号一般为方波,有上升沿下降沿和中间的高电平区间,部分同步通信协议就需要通过检测这三个状态中特定的一种或几种来收发信息,如I2C数据总线只能在时钟线低电平时进行电平变化,在时钟线高电平时要保持稳定。


五、外设

外设是MCU实现各种功能的核心辅助单元,大体分为两种:片上外设和片外外设,用一个通俗的类比就能看懂:


1. 片上外设

指和CPU(内核)集成在同一块STM32芯片中的辅助功能单元,我们后续要解读的STM32中文参考手册后27章,所描述的所有外设都属于片上外设。

类比:如果把一块STM32 MCU看作一个人体,中间的Cortex-M系列内核就是“大脑”,那么这些片上外设就组成了人体的“手脚五官”——它们是内核感知外部环境、与外部进行交互的直接渠道,比如GPIO(相当于手脚,控制外部设备开关,也相当于眼睛耳朵,接收外部输入)、串口(相当于嘴巴耳朵,实现数据收发)。


2. 片外外设


指附加在STM32芯片外部的设备,比如陀螺仪、外置Flash、红外测距模块、OLED屏幕等。

类比:片外外设就相当于我们日常生活中的各类工具(手机、电脑、键盘等),内核(大脑)不能直接控制它们,必须通过“手脚”(片上外设)去操作——比如内核要读取陀螺仪的数据,就需要通过I2C或SPI(两种片上外设)与陀螺仪通信,才能获取信息。


六、寄存器

所有片上外设的功能,都由各自对应的寄存器直接控制。我们可以把寄存器看作一个“带很多开关的控制箱”:
- 每个“开关”对应外设的一个特定功能(比如某一位开关控制GPIO的输入/输出模式);

- 按照STM32 32位机的特性,每个通用寄存器都有32位(也就是32个“开关”),用来精准控制对应外设的各项功能;

- 我们不仅能通过“拨动开关”(写入数据)控制外设,还能通过“观察开关状态”(读取数据)了解外设的当前工作状态——这就是手册中常见的“CR控制寄存器”(控制功能)和“SR状态寄存器”(读取状态)的核心作用,其他寄存器(如数据寄存器DR、配置寄存器CFG)也都是基于这个逻辑设计的。

补充一个关键知识点:我们平时用的HAL库、标准库函数,本质上就是“封装好的操作指令”——把对寄存器的直接操作(写入/读取特定位),封装成了简单的函数接口(比如HAL_GPIO_WritePin),目的是降低使用难度。但弊端也很明显:不同型号的STM32,寄存器地址和配置逻辑可能不同,对应的库函数也会变化,这就是为什么很多人换个芯片就“不会用”,核心原因就是没读懂手册、没掌握寄存器的底层逻辑。

七、通信方式

MCU(内核+外设)与外部设备(片外外设、其他MCU)的交互,全靠通信方式实现。我们按3个核心维度分类讲解,结合STM32常用场景,避免抽象:


1. 按数据传输顺序分类


- 串行通信:数据一位一位地依次传输(类似排队过马路),占用引脚少、传输距离远,STM32常用的UART、I2C、SPI都属于串行通信;

- 并行通信:数据多位同时传输(类似多人并排过马路),传输速度快,但占用引脚多、传输距离近,STM32中较少直接使用(如早期的8位数据总线,现在多被串行通信替代)。

2. 按是否需要时钟同步分类


- 同步通信:需要一根专门的时钟线,发送方和接收方按照时钟节拍同步传输数据(类似跟着节拍跳舞),STM32常用的SPI、I2C属于同步通信;

- 异步通信:不需要时钟线,发送方和接收方约定好“波特率”(传输速度),各自按自己的节奏传输数据(类似两个人约定好说话速度,不用跟着同一个节拍),STM32常用的UART(串口)属于异步通信。

3. 按通信功能分类

- 全双工:发送和接收可以同时进行(类似打电话,双方可以同时说话、听对方说话),比如STM32的UART、SPI;

- 半双工:发送和接收不能同时进行,同一时间只能要么发送、要么接收(类似对讲机,一方说话时另一方只能听),比如I2C、单总线;

- 单工:只能单向传输(类似广播,只能听、不能反馈),比如红外遥控(STM32发送红外信号,接收端只能接收,不能回传)。

以上就是STM32手册解读前,必须掌握的基础概念。这些概念不用死记硬背,后续解读手册的过程中,我们会反复提到、结合实例拆解,慢慢就会熟练掌握。接下来,我们就正式进入STM32中文参考手册的解读,从手册的整体结构开始,一步一步啃透每一个知识点。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/15 8:46:14

Revelation光影包:5分钟打造电影级Minecraft视觉体验

Revelation光影包:5分钟打造电影级Minecraft视觉体验 【免费下载链接】Revelation An explorative shaderpack for Minecraft: Java Edition 项目地址: https://gitcode.com/gh_mirrors/re/Revelation 想让你的Minecraft方块世界瞬间拥有电影大片般的视觉效果…

作者头像 李华
网站建设 2026/5/15 8:46:08

多机器人协同路径规划:动态拓扑图与STALC框架解析

1. 多机器人协同路径规划的核心挑战与解决方案在复杂环境中协调多个机器人执行任务时,路径规划面临三个核心挑战:动态威胁评估、团队协作优化和计算效率平衡。传统方法通常将这些问题分开处理,导致解决方案难以适应真实场景的复杂性。动态拓扑…

作者头像 李华
网站建设 2026/5/15 8:40:54

Kubernetes配置质量守护者:kube-score静态分析与最佳实践

1. 项目概述:你的Kubernetes清单健康“体检官”如果你和我一样,日常工作中需要维护一堆Kubernetes的YAML清单,那你肯定也经历过这样的时刻:部署到集群后,Pod死活起不来,查了半天日志才发现是securityContex…

作者头像 李华
网站建设 2026/5/15 8:40:54

终极免费中文字体方案:Source Han Serif CN完全使用宝典

终极免费中文字体方案:Source Han Serif CN完全使用宝典 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为中文设计项目找不到专业又免费的字体而烦恼吗?So…

作者头像 李华
网站建设 2026/5/15 8:39:53

Revelation光影包:5分钟打造电影级Minecraft画面的终极指南

Revelation光影包:5分钟打造电影级Minecraft画面的终极指南 【免费下载链接】Revelation An explorative shaderpack for Minecraft: Java Edition 项目地址: https://gitcode.com/gh_mirrors/re/Revelation 想让你的Minecraft世界从简单的像素方块瞬间升级为…

作者头像 李华
网站建设 2026/5/15 8:39:15

大模型赋能金融智能化:小白程序员必备收藏指南

本文系统探讨了AI大模型对金融行业的变革,分析技术原理与落地实践,覆盖银行、证券、保险等核心领域。结合工商银行、湘财证券等案例,剖析智能投研、风险管理等场景的应用范式。直面数据隐私、算法偏见等挑战,展望“人机协同”与监…

作者头像 李华