STM32学习综述
085.0.1STM32学习综述
一、STM32学习
STM32 的学习路线可以沿用 51 单片机的基本方法:先认开发板和最小系统,再学习 GPIO、中断、定时器、串口,随后进入 ADC、DAC、DMA、I²C、SPI、RTC 等外设。区别在于 STM32 的时钟树、引脚复用和外设寄存器更多,通常借助 STM32CubeMX 生成初始化框架,再在用户代码区编写业务逻辑。
学习时始终把三个层次分开:
硬件层:供电、晶振、复位、引脚、电气连接
外设层:GPIO、TIM、USART、ADC、DMA 等芯片内部模块
软件层:寄存器或 HAL/LL 驱动、回调函数、主循环业务
程序出现问题时也按这个顺序检查。没有稳定供电或时钟,软件无法正常运行;引脚复用选错,正确的 UART 代码也不会在目标引脚产生信号。
1.1 准备工作
需要准备 STM32F103ZET6 开发板、数据线、ST-Link、杜邦线,以及 STM32CubeMX、Keil MDK 或 STM32CubeIDE 等工具。先确认开发板的 8 MHz 高速外部晶振、供电方式、SWD 接口和 BOOT 跳帽位置,再开始创建工程。
开发过程可以概括为:
flowchart LR
A[阅读原理图和数据手册] --> B[CubeMX 选择芯片和外设]
B --> C[配置引脚与时钟树]
C --> D[生成初始化工程]
D --> E[编写用户逻辑]
E --> F[编译和烧录]
F --> G[调试波形与现象]
G --> E
1.1.1 五十一与三十二的区别
这里的“51”通常指经典 8051 架构及 STC89C52 一类兼容器件;“32”指课程所用 STM32F103,它采用 32 位 Arm Cortex-M3 内核。两者不是只差一个数字,而是在内核、总线、外设数量、时钟系统和开发生态上都有明显差异。
1.1.1.1 外形
STC89C52 常见为 40 引脚 DIP 封装,便于面包板和手工焊接;STM32F103ZET6 为 144 引脚 LQFP 封装,引脚密集,通常直接焊在开发板上。封装大小不能单独代表性能,但更多引脚允许引出更多 GPIO、电源脚和复用外设。
STM32 的同一物理引脚通常可以在 GPIO、定时器通道、串口、SPI 等功能之间复用。一个时刻只能按配置使用其中一种功能,因此看代码之前要先看 CubeMX 的 Pinout 和开发板原理图。
1.1.1.2 位数
“8 位”或“32 位”主要描述 CPU 通用数据通路和寄存器宽度。8051 常按 8 位数据处理;Cortex-M3 的通用寄存器和地址空间是 32 位。32 位内核处理 32 位整数、地址和复杂外设更自然,但程序性能还受到主频、存储器等待、编译器和算法影响,不能只用位数判断快慢。
| 对比项 | 经典 8051/STC89C52 | STM32F103ZET6 |
|---|---|---|
| CPU 内核 | 8051 兼容 8 位内核 | Arm Cortex-M3 32 位内核 |
| 中断控制 | 中断源较少、结构简单 | NVIC,支持较多中断与抢占/响应优先级 |
| 引脚功能 | 复用较少 | 大量复用功能,可重映射部分外设 |
| 开发方式 | 常直接操作 SFR | 可操作寄存器,也常用 HAL/LL 库 |
1.1.1.3 时钟
课程板上 STM32F103 使用 8 MHz 外部高速晶振,通过 PLL 倍频到 72 MHz:
$f_{SYSCLK}=8\text{ MHz}\times9=72\text{ MHz}$
8 MHz 是外部时钟源频率,不等于 CPU 最终主频。若另一块板使用 12 MHz 晶振,就必须调整 PLL 参数,例如在满足芯片时钟约束时使用 12 MHz×6=72 MHz;不能照搬按 8 MHz 设计的时钟配置。时钟树还会继续分配到 AHB、APB1、APB2 和各外设,STM32F103 的 APB1 最高为 36 MHz,而 APB2 可到 72 MHz。
51 板常见 11.0592 MHz 晶振,是因为它便于产生标准串口波特率;不同 8051 内核还可能使用 12T、6T 或 1T 机器周期,晶振频率也不一定等于每条指令的执行频率。
1.1.1.4 功能
STM32F103 把大量控制模块集成在芯片内部:GPIO、外部中断、通用/高级定时器、多路 USART、硬件 I²C、SPI、ADC、DAC、DMA、RTC、CAN、USB 等。51 课程中用 GPIO 加延时“模拟 I²C”,而 STM32 既可以继续软件模拟,也可以配置内部 I²C 外设自动产生协议时序。
| 功能 | 软件模拟/CPU 搬运 | STM32 硬件外设 |
|---|---|---|
| I²C | CPU 逐次拉高拉低 GPIO 并延时 | I²C 控制器产生时序并报告状态 |
| PWM | 定时中断中手动翻转 GPIO | 定时器比较单元自动输出稳定波形 |
| 数据搬运 | CPU 逐字节读写外设寄存器 | DMA 按配置在外设与内存间搬运 |
| 模拟量 | 需外接转换芯片 | 片内 12 位 ADC,部分型号带 DAC |
硬件外设不是“完全不需要软件”。CPU 仍需配置时钟、引脚、波特率或采样时间,启动任务并处理完成、错误和中断;优势是任务运行后不必由 CPU 精确翻转每一个时序或搬运每一个数据。
初学阶段应优先掌握 GPIO、NVIC、中断、定时器和 USART,因为它们会反复出现在后续实验中。ADC、DAC、DMA、RTC、I²C 和 SPI 则建立在这些基础之上。