开发板:STM32F103ZET6
工具链:Keil MDK + VSCode + STM32CubeMX + HAL 库
1:嵌入式行业的宏观认识
1.1计算机发展的底层驱动力
1946 年 2 月 14 日,第一台计算机 ENIAC(埃尼阿克) 在美国宾夕法尼亚大学诞生,由美国陆军军械部出资,旨在计算炮弹弹道轨迹,主导设计者是物理学家约翰・莫奇利和年仅 25 岁的电气工程师普雷斯珀・埃克特。
- 占地约 170 平方米,重 30 吨,功耗约 150 千瓦
- 内部使用约 18,800 个电子管,每秒 5,000 次加法运算
- 参与了氢弹研制的早期计算,运行了世界上第一个数值天气预报程序
二战结束后进入美苏冷战阶段,科技发展的原始动力就是国家间的斗争 —— 军备竞赛和科技竞赛。计算机正是在这样的背景下诞生和发展的。
核心结论:计算机发展的底层驱动力是相关主导国家间的斗争。
1.2军转民:技术保持领先的发展模式
新科技在初期基本以国家为主导,主要应用于军工领域:
| 电子计算机 | 算弹道、破密码 | 个人 PC、服务器 |
| 互联网(ARPANET) | 核战争下分散指挥 | 万维网、移动互联网 |
| GPS | 三军实时定位导航 | 民用导航、共享单车定位 |
| 喷气式客机 | B-47 轰炸机、KC-135 加油机技术 | 波音 707 等民航客机 |
| 集成电路 / 微处理器 | 导弹制导、航天计算机 | 消费电子、工业控制 |
实力相近叫斗争,差距巨大就叫碾压。科技发展中你稍有领先,对手立马跟进,最终技术趋同。要一直领先就必须持续性投入,单靠政府投入不可持续,因此必须通过军转民增加新的收入增长点。
核心结论:军转民是国家间技术保持领先的一种重要发展模式。
当然也有反向的情况 —— 新技术由民间产生,反而影响军工,比如无人机。
1.3摩尔定律:小型化的可能
1965 年,英特尔联合创始人戈登・摩尔在《电子学》杂志上发表文章,观察到芯片上可容纳的晶体管数量大约每隔 12 个月翻一番。1975 年修正为约每两年翻一番(业界广泛接受 18-24 个月)。
摩尔定律:集成电路上可容纳的晶体管数目,约每隔 18-24 个月便会增加一倍。
核心结论:摩尔定律为计算机小型化提供了可能。
1.4通用与专用计算机
计算机在民用过程中,形态完全取决于需求:
- 通用计算机(个人 PC):听歌、看电影、上网、打游戏、写文档、写代码,一台机器全部解决
- 超级计算机:成千上万个高性能计算单元通过高速网络连接,解决核聚变控制、天气预报、基因分析、密码破译等超大规模计算
- 专用计算机(嵌入式系统):电视、冰箱、洗衣机、无人机、空调、汽车 ECU、机械臂…… 只需要稳定、高效、低功耗地完成特定任务
| 通用计算机 | 个人 PC | 一台机器干无数种事,由用户安装的软件决定 |
| 超级计算机 | 高性能计算机 | 解决人类级别的计算难题 |
| 专用计算机 | 嵌入式系统 | 冰箱、空调、无人机、汽车 ECU,低功耗、实时性、稳定性 |
核心结论:专用计算机(嵌入式系统)的诞生目的就是为了低成本解决一个一个特定领域的问题。
1.5嵌入式系统的诞生
嵌入式系统最初用于军工领域,经过军转民才成为现在的样子:
- 1970 年代:嵌入式系统的含义是把计算机嵌入到导弹、战斗机、潜艇、雷达里
- 制导系统:实时解算弹道、控制舵面
- 火控系统:雷达和武器瞄准
- 密码破译与通信
- 1980 年代中后期:民用领域开始出现极少量使用 MCU 的产品(高级洗衣机、电子琴)
1.6为什么叫“嵌入式”
一个计算机系统被 "嵌入" 到更大的设备或系统中,成为不可分割的一部分,而不是作为独立的通用计算机存在:
- 不是独立产品:没人单独买嵌入式系统,买的是智能空调、无人机、手环
- 藏身在内部:设备内部的芯片和电路板,用户看不见摸不着
- 功能单一且固定:微波炉的全部使命就是控制面板、定时、火力,永远不会变成 MP3
- 软硬件高度定制:精确设计硬件和软件,多余的都不会有(关系到成本和可靠性)
这种 "嵌入" 特性带来了独特的设计哲学:
- 实时性:汽车刹车踩下必须几毫秒内响应
- 资源受限:空调内置计算机可能只有几 KB 到几百 KB 内存
- 低功耗与低成本:电池供电或市场竞争力的要求
核心结论:通用计算机是 "站出来让你用的",嵌入式是 "蹲在里面替你干的"。
2:计算机的形态与嵌入式定位
2.1个人电脑PC
台式机和笔记本。对程序员来说是 "生产力工具",是 "吃饭的家伙事"。
注意:台式机的本体是 "机箱",不是 "显示器"。
2.2智能手机/平板电脑
两者共用相同的系统和软件生态。平板电脑更像屏幕大一些的手机。目前手机算力已大幅提升,相当于 PC 端几年前的水平,但受限于软件生态,仍无法承担 "生产力工具" 的重任。
2.3 服务器
日常使用的软件 / 网站几乎都和服务器密切相关:
- C/S 结构(Client/Server):客户端 / 服务器架构
- B/S 结构(Browser/Server):浏览器 / 服务器架构
服务器硬件配置高,运算和存储能力远超个人电脑,对温度湿度要求苛刻,通常托管在专业机房。
上古时期的计算机分类:超算、大型机、中型机、小型机、微机(PC)。随着时代发展,"大型机 / 中型机 / 小型机" 逐渐演化为现在的 "高性能服务器"。服务器可以认为是 "一人之下,万人之上"—— 超算之下算力第一。
2.4 单片机MCU
与服务器的 "高性能、昂贵" 相对,单片机意味着 "性能低、成本低"。
生活中很多设备内部都嵌入了小型计算机,称为单片机,也叫 Microcontroller Unit(MCU,微型控制单元) 或 Single Chip Microcomputer(单片微型计算机)。
广泛应用于:家居设备、工业、汽车、航空航天、通信、医疗等领域。
单片机 vs 嵌入式系统:
- 关系:单片机是构建嵌入式系统的核心硬件,绝大多数嵌入式系统以单片机作为 "大脑"
- 区别:单片机是具体的、可编程的硬件芯片;嵌入式系统是完整的概念系统,包含单片机、电路、传感器、软件等
- 类比:老板和公司的关系、手机处理器和整个手机的关系
3:嵌入式系统的四大技术方向
3.1 MCU 方向
MCU(Microcontroller Unit):将处理器内核、存储器(Flash/RAM)、外设接口(UART/SPI/I2C/ADC/Timer 等)集成在单一芯片上的微型处理器。强调实时性、低功耗、低成本,通常运行裸机程序或轻量级 RTOS。
| ST(意法半导体) | STM32F103/F407/H743 |
| NXP | LPC1768、i.MX RT1062 |
| Microchip | ATmega328P、SAM D21 |
| TI | MSP430G2553、MSP432E401Y |
| Espressif(乐鑫) | ESP32、ESP32-C3/S3 |
| 兆易创新 | GD32F103、GD32E230 |
应用领域:消费电子(遥控器、小家电、智能手表)、工业控制(电机驱动、传感器采集)、汽车电子(车窗控制、BMS 系统)、物联网终端、通信设备。
3.2应用处理方向
以高性能 CPU 核心为主,集成 GPU、NPU、ISP、视频编解码器等多媒体 / 计算加速模块。通常运行 Linux、Android 等复杂操作系统,需要外部 DDR 和 eMMC/SD 存储。
| NXP | i.MX6ULL、i.MX8M Plus |
| 瑞芯微 | RK3568、RK3588 |
| 全志 | H616 |
| 高通 | 骁龙 8 Gen 3 |
| 联发科 | 天玑 9300 |
| 华为海思 | Hi3516DV300 |
| 博通 | BCM2711(树莓派 4)、BCM2712(树莓派 5) |
应用领域:智能终端、车载信息娱乐、工业互联网(边缘计算网关、HMI 智能屏)、机器人 / 无人机(视觉导航、SLAM)、智慧大屏。
3.3FPGA方向
FPGA(Field-Programmable Gate Array,现场可编程门阵列):内部包含大量可编程逻辑块(CLB)、可编程互连线和 I/O 模块的半导体器件。通过编写 HDL 代码(Verilog/VHDL)定义硬件逻辑,实现任意数字电路功能。核心特点是硬件可重构、并行执行、纳秒级延迟。
| Xilinx(AMD) | Spartan-7、Artix-7、Kintex-7、Zynq-7000、Versal |
| Intel(Altera) | Cyclone IV/V、Stratix 10 |
| Lattice | iCE40、ECP5 |
| 高云半导体 | GW1N、GW2A、GW5A(国产) |
| 安路科技 | EF2、EG4、PH1(国产) |
应用领域:通信 / 5G(基带信号处理)、视频图像处理、工业控制(多轴伺服)、航空航天、AI 推理加速、芯片原型验证。
3.3DSP方向
DSP(Digital Signal Processor,数字信号处理器):专门为数字信号处理算法优化的处理器,硬件架构针对乘累加运算、循环寻址、零开销循环做了特殊设计,单时钟周期内完成乘加运算。
| TI | TMS320C6000(C6748/C6657)、TMS320C2000(F28335/F28379D) |
| ADI | ADSP-21489、ADSP-SC589 |
| CEVA | CEVA-XM4/BX4(授权 IP 核) |
| Cadence | Tensilica HiFi 5、Vision P6(授权 IP 核) |
应用领域:音频处理(主动降噪、语音编解码)、电机控制(FOC 矢量控制)。
重要趋势:独立 DSP 芯片市场已严重萎缩,越来越多 DSP 功能以 IP 核形式集成到 SoC 中(如手机 SoC 内置 HiFi DSP),或由 MCU+DSP 指令集(如 Cortex-M4F/M7)替代。DSP 易用性不如 MCU 和应用处理器,实时性又不如 FPGA,这是市场份额减少的原因。
3.5多技术融合
复杂嵌入式系统通常组合使用多种技术,单芯片内部也实现了融合:
| MCU + DSP 指令 | ST 的 STM32F4(Cortex-M4F 带 DSP/SIMD 指令) |
| FPGA + MCU | Intel 的 FPGA(添加 NIOS 软核) |
| FPGA + CPU | Xilinx 的 Zynq 系列(内置 Cortex-A53 硬核) |
| CPU + MCU | TI 的 AM6254(Cortex-A53 + Cortex-M4) |
| CPU + DSP | TI 的 66AK2G02(Cortex-A15 + C66x) |
| MCU + DSP | TI 的 F28388D(Cortex-M4 + C28x) |
| CPU+MCU+DSP | 全志 T527(Cortex-A55 + HiFi4 DSP + RISC-V MCU) |
核心结论:嵌入式开发有很多方向,偏软的、偏硬的,MCU 开发其实是偏向软件开发范畴的方向。后续主要集中在 MCU 方面。
4:ARM与意法半导体生态
4.1需求拉动产量
芯片必须依附于用户能接触到的终端产品才能大量发展。
Intel 芯片与电脑:
- 1950 年代末:仙童半导体第一个重要客户是 IBM,为 B70 轰炸机提供晶体管,一颗 150 美元
- 1960 年代中期:芯片从 20 美元降到 2 美元,进入计算器和助听器
- 1968 年:诺伊斯和摩尔创办英特尔
- 1981 年:IBM 选择英特尔 8088 作为 IBM PC 的大脑,芯片找到 "亿级出货量" 的终极宿主
- 英特尔 + 微软 MS-DOS 形成 "Wintel" 联盟
- 1980 年代台式机统治办公室,1990 年代笔记本爆发(SpeedStep 降频技术),2000 年代 PC 进入亿级存量市场
ARM 芯片与手机:
- 1990 年代:依附苹果牛顿 PDA 和诺基亚功能手机,核心卖点是低功耗
- 2000 年代:功能手机全球出货量冲破 10 亿级,到 2005 年全球 98% 的手机里有 ARM 芯片
- 2007 年:iPhone 发布,智能手机时代开启,ARM 找到比 PC 更强大的终端宿主
- 2010 年代至今:智能手机饱和,但 ARM 版图外扩到智能手表、TWS 耳机、智能音箱、智能电视、汽车座舱
核心结论:时代发展产生新的需求,新的需求诞生新的设备,新的设备让芯片需求激增。
4.2ARM发展历史与商业模式
- 1983 年:Acorn 被英特尔拒绝授权 x86,被迫自研低功耗 RISC 芯片
- 1990 年:因资金匮乏,ARM 公司成立时选择不造芯片,只卖 IP 授权
- 1997 年:诺基亚功能机采用 ARM 芯片,拿下第一个亿级终端市场
- 2004 年:Cortex-M 系列发布,ARM 开始统治嵌入式 MCU 领域
- 2007 年:iPhone 搭载 ARM 处理器引爆智能手机时代,ARM 出货量首次超越英特尔
ARM 的商业模式:只设计 CPU 核心 IP,不制造 CPU,通过 IP 授权和收取版权费用盈利。
Intel 的模式是 IDM(Integrated Device Manufacturer,集成设备制造商)—— 自己设计自己制造。ARM 作为后发者选择了轻量级模式,把自己变成所有人的朋友,最后成为所有人离不开的基础设施。
4.3SoC片上系统
SoC(System on a Chip,片上系统):把一个完整的电子系统集成到单个芯片上。
传统电脑主板像一个城市,各功能部件独立(CPU = 市政府、内存 = 图书馆、显卡 = 美术馆、声卡 = 音乐厅、网卡 = 邮局),通过总线 "高速公路" 连接,距离远、速度慢、功耗大。
SoC 把所有关键部门塞进同一栋大楼,内部专用电梯直接连通。
通用领域(电脑):主板上有独立 CPU、独立 GPU、独立内存条,通过总线连接,各芯片分开。
专用领域(手机、手表、无人机、路由器):空间有限、功耗敏感,把 CPU、GPU、内存控制器、NPU、ISP、DSP、视频 / 音频处理器、各类接口控制器(USB、PCIe、蓝牙、Wi-Fi 基带等)全部塞进一颗芯片。
注意:集成的是控制和处理类芯片,真正的外设(传感器、麦克风、摄像头、屏幕、扬声器)仍在外部。
CPU vs SoC:
- CPU 是负责通用计算的处理器核心
- SoC 是一颗芯片,包含 CPU + GPU + 内存控制器 + NPU + ISP + DSP + 接口控制器等
- CPU 是 SoC 的一部分,SoC = CPU + 很多其他功能模块
集成的好处:电路板走线短 → 电池续航更长、更低发热、高带宽与低延迟、节省空间与成本、更高可靠性。
核心结论:手机体积小、电池容量受限,必须把所有核心芯片从 "主板上分散" 变成 "一个硅片上集成",这就是 SoC 的本质。集成 SoC 本质就是在追求:用户用得爽,厂商造得省。
4.4ARM的CPU IP核心矩阵
为了满足不同领域、不同需求的场景,ARM 提供了不同种类的 CPU IP 核:
| Cortex-A | Application | 应用处理器,运行复杂 OS(Linux/Android) | 手机、平板、高性能设备 |
| Cortex-X | Extreme(非官方) | 超级大核,极致性能优先 | 手机旗舰芯片的大核 |
| Cortex-M | Microcontroller | 微控制器,小而低功耗、资源受限 | 嵌入式 MCU、智能家电、工业控制 |
| Cortex-R | Real-time | 实时处理器,响应时间严格要求 | 硬盘控制器、汽车电子 |
Cortex 本意是大脑皮层,ARM 借此比喻这些处理器核心是智能设备的 "大脑" 或 "计算中枢"。
ARM 的业务版图扩张到四个关键领域:
核心结论:ARM 因为需求种类不同,主流提供 4 种 CPU IP 核,我们未来使用的是 Cortex-M 系列。
4.5意法半导体ST定位
意法半导体(STMicroelectronics,简写 ST)是由意大利 SGS 和法国 Thomson 两家公司合并而来的欧洲半导体巨头,总部设在瑞士。
- 全球官网:www.st.com
- 中文官网:www.st.com.cn
- ST MCU 中文官网:www.stmcu.com.cn(工程师重点看的)
意法半导体的角色: 从 Arm 获得 Cortex 系列 CPU 核心授权,利用自身在混合信号、存储器等方面的专有技术,将其设计、封装成一颗颗功能完整的 MCU,最著名的便是 STM32 系列。
供应链模式:Arm 提供核心 IP → 意法半导体等芯片公司设计制造为标准化 MCU → 终端公司直接选用
其他 MCU 厂商:恩智浦(NXP)、德州仪器(TI)、英飞凌(Infineon)、兆易创新(GigaDevice)、乐鑫科技(Espressif)等。
为什么关注意法半导体? 因为它几乎是事实上的行业基准:
- 做得早,市占率高
- 围绕 STM32 积累了最庞大的开发生态(官方文档、教程、开源项目、开发工具、第三方库)
- 大量硬件工程师的学习路径从 STM32 开始
- 后来者(如兆易创新)在技术上与意法保持兼容(引脚兼容、寄存器兼容、工具链兼容),因为迁移成本太高
核心结论:意法半导体从 Arm 买核心,做成 MCU 卖给终端公司。做得早、生态完整,后来者都得兼容它。所以学 MCU 从它开始,是主流选择。
5:MCU与STM32家族
5.1MCU是什么
MCU(Microcontroller Unit,微控制单元),中文常称为单片机(Single Chip Microcomputer)。
- 从功能上看:把处理器(CPU 核心)、存储器(Flash、RAM)、各种输入输出接口(定时器、ADC、串口等)集成在一起,形成一个芯片
- 从制造上看:在极纯的硅片上,经过光刻、刻蚀、沉积、离子注入等上百道工序,把各模块的晶体管一层层堆叠并连通
核心结论:MCU 内部除了 CPU,还有其他模块。MCU 就已经是一台被集成在同一芯片上的微型计算机了。
MCU 与 SoC 的关系: MCU 可以看作是一种功能特定、高度集成的 "SoC"。SoC 是更宽泛的概念,MCU 是这个概念下非常经典的一个分支。
MCU 为什么存在?
- 以手机应用处理器为例的 SoC 主要解决算力问题
- 以 MCU 为例的 SoC 主要解决控制问题
- 类比:大脑负责复杂计算,小脑负责精细动作的实时协调与控制
MCU 是一种专用计算机,专门低成本解决实时控制问题。物理世界中的控制需求是海量的、多样化的,通用处理器无法同时满足所有控制场景的低成本、低功耗和硬实时要求。
如果硬给空调塞一颗手机应用处理器:
- 太贵:应用处理器几十美元,MCU 只要几毛到几美元
- 太耗电:应用处理器瓦级,MCU 毫瓦甚至微瓦级
- 太复杂:需要操作系统、驱动、内存管理;MCU 几十行代码就能跑
- 没必要:空调不需要图像处理和 5G 基带
- 实时性:MCU 能提供可靠的实时性(处理过程快 + 处理过程耗时可预知)
核心结论:MCU 是产业细分之后,一种为低成本实时控制而生的专用计算机。
5.2 STM32家族
STM32 是意法半导体生产的 32 位 MCU 系列的总称:
- ST = 意法半导体(SGS + Thomson)
- M = 微控制器(Microcontroller)
- 32 = 32 位
类比:MCU 相当于 "手机",STM32 相当于 "华为手机"。
STM32 不是单一芯片,而是庞大家族,针对不同应用场景设计了不同定位的子系列:
| F | Foundation(基础 / 通用) | 最基础系列,应用最广泛,STM32 的基石 |
| G | General-purpose(通用型) | 主流高性价比系列 |
| L | Low-power(低功耗) | 专门为低功耗设计 |
| U | Ultra-low-power(超低功耗) | 比 L 系列功耗更低 |
| H | High-performance(高性能) | 性能最强的产品 |
STM32 各子系列应用场景:
| 超低功耗系列 | Cortex-M0+/M3/M4/M33 | STM32L0/L1/L4/L5/U0/U3/U5 | 休眠电流低至 280nA,支持动态电压调节 | 智能手表、手环、血糖仪、水表、气表、温湿度传感器 |
| 主流型系列 | Cortex-M0/M3/M4 | STM32F0/F1/F3/G0/G4 | 性价比突出,外设丰富 | 家电控制、工业传感器、HMI、空调控制板、洗衣机面板、电子烟、数字电源、电动工具 |
| 高性能系列 | Cortex-M7/M4/M33 | STM32F2/F4/F7/H5/H7 | 主频达 600MHz,支持 DSP/FPU | 协作机器人关节控制器、PLC 模块、无人机飞控、音频效果器 |
| 无线系列 | Cortex-M0+/M33 | STM32WB/WL/WBA | 集成 BLE/Zigbee/LoRa 射频 | 智能门锁、温控器、资产追踪标签、无线传感器节点、智能灯泡 |
| 边缘 AI 系列 | Cortex-M7+NPU | STM32N6 | 算力 600GOPS,支持神经网络推理 | 智能摄像头、语音唤醒家电、瑕疵检测设备 |
| MPU 混合系列 | Cortex-A7/A35 + M4/M33 | STM32MP1/MP2 | 双核异构,支持 Linux/RTOS | 工业边缘网关、车联网 T-Box、自助售货机、HMI 一体机 |
注意:意法的主要产品线包括 STM32 MCU、STM32 Wireless、STM32 MPU、STM8 MCU。我们只要关心 STM32 MCU 就足够了。
5.3常见其他MCU
| 51 单片机(Intel 8051) | 8 位 | Intel / 宏晶 STC 等 | 结构简单,串口编程不需仿真器 | 风光不再,仅遥控器、电子温度计等简单场景 |
| MSP430 | 16 位 | TI(德州仪器) | 主打低功耗 | 基本退出历史舞台 |
| GD32 | 32 位 | 兆易创新(国产) | 和 STM32 兼容,成本低 20%-30% | 学会 STM32 自然就会 |
| ESP32 | 32 位 | 乐鑫科技(国产) | 内置 Wi-Fi 和蓝牙,物联网理想选择 | 市场份额增长迅速 |
| 树莓派 | – | 博通 | 严格说不是 MCU,是卡片计算机,Cortex-A,可跑 Linux | DIY 爱好者喜爱,企业级应用有限 |
6:STM32F103ZET6的命名规则
STM32F103 作为意法半导体的经典 Cortex-M3 内核 MCU,累计出货 10 多亿片,凭借高性价比、丰富外设和成熟生态,是 ARM 嵌入式领域的 "国民级" 标杆芯片。
6.1命名拆解
STM32 F1 03 Z E T 6
│ │ │ │ │ │ │
│ │ │ │ │ │ └── 工作温度范围
│ │ │ │ │ └───── 封装类型
│ │ │ │ └──────── Flash容量
│ │ │ └─────────── 引脚数目
│ │ └─────────────── 子系列产品线
│ └─────────────────── 产品系列
└───────────────────────── 意法半导体32位MCU
6.2各部分详细含义
STM32:意法半导体设计生产的 32 位 MCU。意法也有 8 位 MCU 产品 STM8 系列,但影响力小很多。
F1:归属于 "主流"(Mainstream)产品线,使用 Cortex-M3 的 CPU 内核。
Cortex-M 系列下有 M0、M3、M4、M7、M33 等,数字越大性能越高,类似于 Intel CPU 的 i3/i5/i7/i9 划分。
03:STM32F1 子系列中具体的产品线(增强型)。
6.3 Z:引脚数目
Z 表示这个 MCU 有 144 个 pin(针脚 / 引脚)。一条边 36 个,4 条边共计 144 个。
| T | 36 |
| C | 48 |
| R | 64 |
| V | 100 |
| Z | 144 |
6.4 E:Flash容量
E 表示内部 Flash 容量为 512 KB。
| 4 | 16 KB |
| 6 | 32 KB |
| 8 | 64 KB |
| B | 128 KB |
| C | 256 KB |
| D | 384 KB |
| E | 512 KB |
| F | 768 KB |
| G | 1024 KB |
为什么 MCU 内部会有 Flash?因为裸机开发时,编译生成的二进制程序直接烧写到 MCU 内部的 Flash 中,由 CPU 执行。不同 Flash 容量代表能烧写的不同程序体积,本质对应不同规模的产品。
6.5 T:封装类型
T 表示采用 LQFP 封装(Low-profile Quad Flat Package,低轮廓四边扁平封装)。
| T | LQFP | Low-profile Quad Flat Package | 低轮廓四边扁平封装 |
| H | BGA | Ball Grid Array | 球栅阵列封装 |
| U | VFQFPN | Very Thin Fine-pitch Quad Flat No-lead Package | 超薄细间距四边扁平无引脚封装 |
6.6 6:工作温度范围
6 表示工作温度范围 -40℃ 到 +85℃。
| 6 | -40℃ 到 +85℃ |
| 7 | -40℃ 到 +105℃ |
为什么型号中把温度作为核心指标?
- 可靠性:夏天暴晒的户外(70-80℃)或靠近发热元件,必须选择 7(105℃)甚至更高级别
- 性能降级:温度超过 85℃时,普通 6 型号可能最高主频降低、ADC 精度下降、内部 LDO 或 Flash 擦写可靠性受影响
特殊领域(如石油钻头勘探)有极端温度场景,所以 MCU 需要标识清楚工作温度范围。
7:STM32F103ZET6引脚详解
7.1引脚布局与编号
引脚布局属于硬件,在《数据手册》的 "Pinouts and pin description" 章节可以找到。
实物图上有一个实心圆点,通过这个圆点明确引脚从哪里开始编号:从圆点最近的引脚开始,编号从 1 开始,逆时针递增。
引脚分为两类:
- 特殊功能引脚:功能由 MCU 芯片硬件永久固定,不可通过软件更改。必须按数据手册规定连接(电源、地、时钟、复位),MCU 才能正常启动
- 普通引脚:MCU 的 "可编程接口",功能完全由软件决定。可配置为输入(读按键)、输出(控 LED)或复用为 UART/I2C/SPI/PWM/ADC 等
后续编程主要设置的是普通引脚。

7.2 特殊功能引脚
7.2.1 VDD与VSS
- VDD(Voltage Drain Drain):芯片正电源输入引脚,STM32F103 系列通常连接 +3.3V
- VSS(Voltage Source Source):芯片公共地,连接到 GND(地线)
其中存在退耦电容,用于保持供电稳定。
为什么单片机供电是 3.3V? 3.3V 是为适应芯片工艺进步和低功耗需求而历史形成的行业标准。
7.2.2NRST复位引脚
通常接一个按钮。"复位"(Reset)指让单片机强制回归初始状态,相当于 "重启"。
- NRST = Not Reset(或 Negative-Reset),N 代表 Negative/Not,强调低电平有效
- 引脚为低电平(0V,接地)时:处于复位状态
- 引脚为高电平(3.3V)时:正常运行
未来把程序烧写到 MCU 内部后,需要按下复位按键来完成启动新程序的效果。
7.2.3 VBAT备用电池
当 VDD 异常(掉电)时,VBAT 自动为 MCU 供电(主要是 RTC 实时时钟和备份寄存器),确保时间不丢失、数据不丢失,但 MCU 整体停止运行。
类似电脑关机拔掉电源后,主板电池仅维持 BIOS 时钟和设置,电脑本身不能运行,但下次开机时间还是准的。
7.2.4 BOOT0启动模式选择
启动模式描述了单片机复位后,从谁提供的软件指令开始执行。
| 接 GND | 运行已烧录的程序 | 正常开机,执行你烧录的程序。99% 场景都是这个 |
| 接 3.3V | 进入 Bootloader,等待串口下载 | 进入刷机模式,执行意法提供的 Bootloader。无法烧录时可强制烧写 |
Bootloader是 ST 公司固化在芯片系统存储器里的不可修改程序,作用是用串口等接口烧录 / 恢复固件。
NRST vs BOOT0 的区别:
- NRST 复位引脚:不改变启动源,只是从头开始运行指定的软件
- BOOT0 启动模式选择:不触发重启,只决定重启后运行谁
- 类比 Windows:NRST 决定是否重启,BOOT0 决定开机从哪个盘启动
BOOT1 也存在,但一般做板子时直接焊死接地,永远是低电平 0。
7.2.5 其他特殊引脚
- OSC_IN / OSC_OUT:外部高精度时钟输入 / 输出引脚
- VREF 系列:高精度 ADC/DAC 的参考电压
- NC(No Connect):未进行任何连接的引脚
7.3 普通引脚
通过字母对普通引脚分组,再使用数字对每组引脚编号:
| PA | PA0 – PA15 | 16 个 | 完整引脚组 |
| PB | PB0 – PB15 | 16 个 | 完整引脚组 |
| PC | PC0 – PC15 | 16 个 | 完整引脚组 |
| PD | PD0 – PD15 | 16 个 | 完整引脚组 |
| PE | PE0 – PE15 | 16 个 | 完整引脚组 |
| PF | PF0 – PF15 | 16 个 | 完整引脚组 |
| PG | PG0 – PG15 | 16 个 | 完整引脚组 |
A-G = 7 组,0-15 = 16 个,一共 7 × 16 = 112 个普通引脚。
注意:这些引脚在 MCU 上的排列不一定是连续的。"完整引脚组" 指该组字母拥有从 0 到 15 的全部 16 个编号引脚。
144 pin 总数 = 112 个普通引脚 + 32 个特殊功能引脚。
后续编程中,主要就是控制这些引脚来输入 / 输出电信号。
8:开发工具
| C 语言 + Keil MDK + 标准外设库(SPL) | 标准库 2017 年已弃用,陈旧做法,不建议 |
| C 语言 + Keil MDK + STM32CubeMX + HAL 库 | Keil 写代码难受,不建议 |
| C 语言 + Keil MDK + VSCode + STM32CubeMX + HAL 库 | 企业大量在用,我们采用这种方式 |
| C 语言 + STM32CubeIDE + HAL 库 | 集成化太高,不利于学习,不建议 |
| C 语言 + IAR + STM32CubeMX + HAL 库 | IAR 正版授权贵,不适合新手 |
我们采用的方案:C 语言 + Keil MDK + VSCode + STM32CubeMX + HAL 库
| Keil MDK | Arm 公司 | 编译、链接、调试,生成机器码 |
| VS Code | 微软 | 现代化代码编辑器,通过插件扩展开发环境 |
| STM32CubeMX | 意法半导体(ST) | 图形化配置引脚、时钟,自动生成初始化代码 |
| HAL 库 | 意法半导体(ST) | 提供硬件抽象层 API,屏蔽寄存器操作,提升代码可移植性 |
关于 HAL 库:
- 标准库已经淘汰,手写配置只出现在维护老项目中
- HAL 库根据配置自动生成配置代码(注意是配置代码,不是业务代码),提高开发效率
- 但图形化界面导致配置细节没有直接体现,会提高理解成本
- 解决方案:通过穿插 HAL 库生成的源码阅读,解决配置陌生问题
9:仿真器与硬件链接
9.1 仿真器简介
仿真器是一种硬件调试工具,通过仿真器连接开发板和 PC,从而通过 PC 上的开发工具对 MCU 进行烧录、调试。
烧录本质:把编译生成的可执行程序,通过仿真器写入到 STM32 片上 Flash 中。
常见仿真器:
| ST-Link | ST 官方 | STM32&STM8 的官方仿真器,闭源,较贵 |
| J-Link | SEGGER | 业界标准专业调试器,正版上千元 |
| DAP(DAPLink) | ARM 开源 | 完全开源免费,我们课程使用 |
| U-Link | ARM/Keil | 主要配合 Keil MDK 开发环境 |
9.2 DAPLink详解
DAP 仿真器的官方名称叫 DAPLink(旧称 CMSIS-DAP),是由 Arm 公司官方主导并维护的开源项目。
- DAP全称:Debug Access Port(调试访问端口),是一个物理仿真器
- 开源体现在两个层面:
- 软件 / 固件开源:全部固件源码在 GitHub 公开(Apache-2.0 许可证)
- 硬件开源:官方提供参考电路设计
官方开源仓库:
- GitHub:https://github.com/ARMmbed/DAPLink
- Gitee 镜像:shturl.cc/xFy9QX1LPEW2UupuABd9C
DAPLink 自己本身就是一个单片机系统。正因为开源,很多人可以自己做 DAPLink。
为什么使用 DAP 而不是 ST-Link/J-Link?
- DAP 完全开源免费,ST-Link/J-Link 正版动辄上千元,不适合初学者
- DAP 用法和 ST-Link 非常相似,熟悉 DAP 后未来企业中使用 ST-Link 几乎不需要学习成本
为什么用仿真器烧写而不是 BOOT0 串口烧写? 因为仿真器最核心的价值在于在线调试(断点、单步、监控变量等),而不仅仅是烧写。
10:首次实验:编译和烧录
10.1 下载测试工程
访问码云仓库:shturl.cc/15I8BS0zMwF0MQQts7HxLNlDO7ZqLWNM3lS
通过 git 克隆到本地:
git clone shturl.cc/15I8BS0zMwF0MQQts7HxLNlDO7ZqLWNM3lS.git
不熟悉 git 的也可以直接下载 zip 压缩包。
10.2 打开测试工程
下载到本地后,进入 MDK-ARM 目录,使用 Keil 运行该工程文件。
10.3 编译
点击工具栏中的 Build 按钮触发编译。
如果提示 0 Errors, 0 Warnings,说明编译成功。此时在 MDK-ARM 目录下会生成二进制可执行程序和一系列.o、.d 等中间代码文件。
.hex 就是未来烧写到 MCU 内部的二进制程序。
常见报错及解决: 如果报错提示目标程序默认需要 AC5(ARM Compiler 5)但当前不可用:
- 在魔术棒(Options for Target)中修改 ARM Compiler 为 version 6(使用 default 编译器 AC6)
10.4 烧录配置
在仿真器连接好电脑和开发板且开发板供电正常的情况下,打开 Keil,在魔术棒(Options for Target)中配置:
如果一切顺利,会提示烧录成功。
所谓烧录:把编译生成的.hex 二进制程序,通过 DAP 传输到 STM32 内置的 Flash 中。于是 STM32 就可以读取 Flash 中的程序并执行了。
10.5 运行结果
烧录成功后,可以看到开发板上的 LED 开始闪烁,说明首次实验成功完成!
11:STM32文档体系
11.1理解文档化逻辑
产业世界建立在分工和协作之上。分工产生知识壁垒,文档打破知识壁垒。看懂文档,就是嵌入式的通用语言。
文档化是嵌入式行业的常态,阅读文档是工程师必然的学习过程。
11.2各层级提供的文档
| ARM | 《技术参考手册》(TRM) | 告诉 MCU 厂商如何集成 ARM 核心,偏硬件设计,普通开发者通常不需直接查阅 |
| MCU 厂商(ST) | 《数据手册》(Datasheet/DS) | MCU 芯片 "体检表"(引脚、电压、地址),硬件工程师画板用 |
| MCU 厂商(ST) | 《参考手册》(Reference Manual/RM) | MCU 操作说明书(寄存器每位含义),软件工程师写驱动用,后续深度关心 |
| 板级设计公司 | 《板原理图.pdf》 | 表明 MCU 芯片引脚与板级外设如何连接,后续深度关心 |
我们作为基于板子的软件 / 驱动开发者,最关心的是 MCU 提供的《参考手册》和比特提供的《原理图》,其他按需参考。
11.3文档分类详解
| 数据手册(DS) | 物理规格、引脚排列、电气特性、内存大小、封装信息 | 硬件工程师选型和画原理图时 | 告诉硬件工程师 "这芯片长什么样,怎么通电才不会烧" |
| 参考手册(RM) | 所有外设的功能详解、工作模式、寄存器地址和每一位含义 | 软件工程师写底层驱动时 | 告诉软件工程师 "芯片里每个零件该怎么操作" |
| 勘误手册(ES) | 芯片已知问题列表和避坑指南 | 软件工程师调试遇到诡异现象时 | 官方承认的设计缺陷清单,告诉你 "这事儿得这么绕过去" |
| 编程手册(PM) | 内部 Flash 的操作指南(解锁、擦除、写入) | 底层工程师实现 IAP 或保存参数时 | 指导如何安全地给芯片内置 "硬盘" 读写数据 |
| 应用笔记(AN) | 特定主题的官方实战教程或设计方案 | 任何角色需要实现特定功能时 | 官方手把手教你 "如何用这颗芯片实现某个具体功能" |
| 用户手册(UM) | 开发板操作指南,或 HAL/LL 库的 API 函数字典 | 软件工程师使用官方开发板或库函数时 | 配套软硬件的 "开箱指南" 和 API 查询手册 |
| 内核相关文档(ARM) | CPU 内核本身的文档(TRM 硬件实现、GUG 内核编程模型) | 需要操作 CPU 核心寄存器时 | 操作 CPU 内部那部分寄存器得看 ARM 家的 |
之所以文档这么多,是因为信息必须 "按需定制":数据手册不讲编程只谈物理特性,参考手册不讲 Bug 只谈理想逻辑,勘误手册只告诉你哪里会翻车。
11.4意法半导体相关官网
| 意法全球官网 | www.st.com | 面向全世界用户,全部产品线 |
| 意法中文官网 | www.st.com.cn | 中国区官方网站,ST 全线产品 |
| ST MCU 中文官网 | www.stmcu.com.cn |
ST MCU 产品中文技术门户,专注 STM32/STM8,工程师重点看 |
12:总结
12.1知识体系回顾
行业宏观认知
├── 计算机发展驱动力(冷战 → 军转民 → 摩尔定律)
├── 通用 vs 专用计算机
└── 嵌入式系统的本质(专用、实时、低功耗、低成本)
计算机形态与定位
├── PC / 手机 / 服务器 / 单片机
└── 嵌入式四大方向(MCU / 应用处理器 / FPGA / DSP)
生态与供应链
├── ARM发展史与IP授权模式
├── SoC的概念
├── ARM CPU IP核矩阵(A/X/M/R)
└── 意法半导体的行业基准地位
芯片与选型
├── MCU的本质(低成本实时控制)
├── STM32家族(F/G/L/U/H系列)
└── STM32F103ZET6命名与规格
硬件细节
├── 引脚分类(特殊功能 / 普通)
├── 特殊引脚(VDD/VSS/NRST/VBAT/BOOT0)
└── 普通引脚(PA-PG,共112个)
开发环境
├── 工具链选型(Keil MDK + VSCode + CubeMX + HAL)
├── 各工具安装与配置
└── 芯片包与固件包
首次实践
├── DAPLink仿真器
├── SWD硬件连接
└── 编译 → 烧录 → LED闪烁(首次实验成功)
12.2 核心要点
12.3 后续展望
- 深入学习 STM32 的各种片上外设(GPIO、USART、I2C、SPI、ADC、Timer 等)
- 学习 HAL 库的使用与源码阅读
- 学习中断与 DMA
- 后续引入实时操作系统(FreeRTOS 等)
- 逐步从裸机开发向更复杂的嵌入式系统进阶


![[开源]基于STM32单片机WIFI智能窗户系统 Onenet云平台设计HK-003-171主机测评](https://www.171host.com/wp-content/uploads/2026/09/20260903070616-6a991c6823886-220x150.jpg)

