1. 什么是 STM32
STM32 是 ST(意法半导体,STMicroelectronics)公司推出的 32 位微控制器。
其内核基于 ARM Cortex-M 系列(如 M0、M3、M4、M7),性能强大、功耗低、外设丰富。凭借高性价比和完善的生态,STM32 在嵌入式开发和教学中得到了广泛应用。

相比传统的 8 位单片机(如 51 系列),STM32 提供了:
- 更强的运算能力(32 位,主频更高)
- 更丰富的接口(USART、I2C、SPI、CAN、USB 等)
- 更低功耗和更高集成度
这使得 STM32 成为现代嵌入式开发的主流选择。
2. STM32 能做什么
STM32 自带了丰富的外设接口(USART、I2C、SPI、CAN、USB…),能连接各种传感器和模块,被广泛应用在:
- 智能手环:采集加速度 / 陀螺仪数据,蓝牙 / WiFi 通信,OLED 显示。
- 微型四轴飞行器:电机控制、姿态解算、无线通信。
- 智能家电:电饭锅、空气净化器、智能门锁。
- 工业控制:传感器采集、通讯模块、运动控制。
这些应用展示了 STM32 在物联网设备、可穿戴设备、智能家电和机器人等领域的潜力。可以说,几乎所有带有‘智能化’功能的电子产品中,都可能藏着一颗 STM32 芯片。
3. STM32 的选型
3.1 系列分类与适用场景
根据内核和定位,STM32 主要分为以下几类:
| 内核 | 代表系列 | 特点 | 场景 |
|---|---|---|---|
| Cortex-M0/M0+ | STM32F0/L0 | 超低功耗、低成本 | 简单设备、低功耗应用 |
| Cortex-M3 | STM32F1 | 主流型,资料丰富 | 入门学习、常规控制 |
| Cortex-M4 | STM32F4 | 高性能,带 DSP/FPU | 图像处理、大数据计算 |
| Cortex-M7 | STM32F7/H7 | 更高性能 | 需要复杂运算、大屏显示 |
学习入门推荐:初学者先用 F1 系列入门,等熟悉后再上手 F4 系列。
3.2 命名规则
以 STM32F103VET6 为例:

更详细的命名方法

理解命名规则有助于快速找到合适的芯片型号。
3.3 如何选择合适的 MCU
在选 STM32 的时候,一般从以下几个方面来权衡:
3.3.1. 内核和性能
- 如果只是点亮 LED、读写按键、做一些简单的通信实验 → STM32F103C8T6(常见的“最小系统板”)就够了。它是 Cortex-M3 内核,主频 72MHz,Flash 64KB,性价比高,资料也非常丰富。
- 如果需要浮点运算 / DSP 运算(比如滤波、FFT、姿态解算) → 选 STM32F4 系列。例如:STM32F407VGT6:Cortex-M4 内核,带硬件 FPU,主频 168MHz,1MB Flash,192KB RAM。常用于飞控、数据处理。
- 如果要驱动大屏幕(TFT LCD、触摸屏)或复杂 GUI → 建议用 STM32F429 或 STM32F746,它们自带 LCD 控制器 LTDC,带 DMA2D 图形加速,适合做界面。
3.3.2. 引脚数量与封装
- 小型项目(传感器采集、UART 调试) → 48/64 引脚的芯片即可,比如 STM32F103C8T6(LQFP48 封装)。
- 如果需要更多接口(CAN 总线、以太网、多个 SPI/I2C) → 就要选择 100 引脚以上的型号,比如 STM32F407ZGT6(LQFP144 封装)。
一般来说:引脚越多 → 外设资源越全 → PCB 更复杂 → 成本更高。
3.3.3. Flash 与 RAM 要求
- 学习和基础控制项目 → 64KB Flash / 20KB RAM 已足够(如 F103C8T6)。
- 如果要跑 RTOS(如 FreeRTOS)+ 多任务管理 + 通信协议栈(如 TCP/IP、USB Host) → 至少要 256KB Flash / 64KB RAM。推荐 STM32F407VGT6(1MB Flash / 192KB RAM),完全够用。
- 做音频处理 / 图形界面 → 需要 大于 512KB Flash + 192KB RAM,否则容易“内存告急”。
3.3.4. 功耗
- 电池供电、需要长期待机 → 用 STM32L 系列(低功耗系列),比如 STM32L072CZT6。它有超低功耗模式,待机电流可低至几微安,适合智能手表、传感器节点。
- 如果是 USB 供电或者不用太在意耗电 → 直接选择 F1/F4 系列即可。
4. STM32 的引脚分类
对 MCU 的引脚进按照功能进行分类,以 STM32F103VET6 引脚分类(LQFP100 封装)为例:

| 分类 | 典型引脚 | 功能说明 | 应用场景 |
|---|---|---|---|
| 电源类 | VDD, VSS, VDDA, VSSA, VBAT | 数字电源、模拟电源、RTC 电源 | MCU 供电、ADC 模拟精度、RTC 备用电源 |
| 时钟类 | OSC_IN, OSC_OUT, PC14, PC15 | 外部高速晶振、低速晶振输入/输出 | 系统主时钟、RTC 时钟 |
| 复位类 | NRST | 外部复位输入 | 外接复位电路,保证上电可靠 |
| 通用 IO | PAx, PBx, PCx, PDx | 通用数字 IO | 控制 LED、按键输入 |
| ADC/DAC | PA0–PA7, PC0–PC5 | 模拟输入,部分支持 DAC | 传感器采样、电压检测、DAC 输出波形 |
| 定时器 | PA8–PA11, PB0–PB1, PC6–PC9 等 | 高级定时器/通用定时器通道 | PWM 输出、电机控制 |
| 串口 (USART/UART) | PA9, PA10, PB10, PB11, PD8–PD12 等 | 串行通信接口 | 调试串口、外设通信 |
| I²C | PB6, PB7, PB10, PB11 | I²C1/I²C2 通信 | 连接 EEPROM、传感器 |
| SPI | PA5–PA7, PB12–PB15 | SPI1/SPI2 总线接口 | 显示屏、存储器 |
| CAN/USB | PA11, PA12, PB8, PB9 | CAN 总线,USB DM/DP | 工业通信、USB 设备 |
| 调试接口 | PA13 (SWDIO), PA14 (SWCLK), PB3 (JTDO), PB4 (NJTRST) | SWD/JTAG 调试接口 | 下载程序、在线调试 |
5. 芯片内部组成
从外部看, STM32 芯片只是一个封装好的成品,而实际上,它的内部主要由 内核 (Core) 和 片上外设 (Peripherals) 两大部分组成。类比于电脑,内核相当于CPU,而片上外设则类似于主板上的内存、显卡、硬盘等组件。
以 STM32F103 为例,它采用 ARM 公司设计的 Cortex-M3 内核,这是芯片的“大脑”。值得注意的是,ARM 公司仅提供芯片技术授权,并不直接生产芯片。具体的芯片制造由 ST、TI、Freescale 等半导体厂商(SOC)完成,这些厂商在内核基础上设计外围功能模块,并生产完整芯片。其中 内核之外的功能模块 被称为 核外外设(或片上外设)。常见的片上外设包括 GPIO、USART、I²C、SPI 等。具体架构可参考图 STM32 芯片架构简图。
内核与外设之间通过多条总线相连,其中包含4个驱动单元和4个被动单元(详见STM32F10xx系统框图)。为便于理解,可将驱动单元视为CPU部分,而被动单元则看作各种外设。接下来我们将简要介绍驱动单元和被动单元的各组成部分。
5.1 ICode 总线(取指通道)
ICode 中的 “I” 表示 Instruction(指令)。我们写好的程序编译之后会生成一条条指令,存放在 FLASH 中。内核要执行程序,就必须通过 ICode 总线 从 FLASH 中读取指令。这条总线几乎始终在工作,是专门的“取指通道”。
5.2 驱动单元
驱动单元主要负责内核与存储器、外设之间的数据与指令交互。在 STM32F10xx 中,驱动单元包括 ICode 总线、DCode 总线、System 总线和 DMA 总线。
5.2.1 DCode(取数通道)
DCode 中的 D 表示 Data(数据),说明这条总线主要用于取数。
在程序运行时,涉及的数据包括两类:
- 常量(const 修饰的数据):存放在 内部 FLASH 中,内容固定不变。
- 变量(全局变量、局部变量、堆栈数据等):存放在 内部 SRAM 中,内容可变。
由于数据既可能被 DCode 总线访问,也可能被 DMA 总线访问,因此在存取数据时,需要通过 总线矩阵(Bus Matrix) 仲裁,避免访问冲突,确保系统运行稳定。
5.2.2 System(外设寄存器访问)
System 总线主要用于访问外设寄存器。我们常说的“寄存器编程”,即对外设寄存器进行读写操作(如 GPIO 控制、USART 配置、SPI 通信设置等),都是通过 System 总线完成的。可以理解为:System 总线是内核与外设交互的桥梁。

最低0.47元/天 解锁文章
574

被折叠的 条评论
为什么被折叠?



