STM32 ARM Cortex-M单片机嵌入式开发实战 - 第1节
1.1 为什么是 ARM Cortex-M?
做嵌入式开发这么多年,我接触过不少内核。从 8 位的 51 到 16 位的 MSP430,再到各种 ARM7/9。但真正让我觉得「顺手」的,还是 Cortex-M 系列。
说白了,Cortex-M 就是 ARM 专门为单片机打造的核。它不像 Cortex-A 那样跑 Linux,也不像 Cortex-R 那样搞实时控制。它的定位很明确——低功耗、低成本、高能效的微控制器。
我最早用 Cortex-M3 做一个工业采集器,那会儿还在想:这玩意儿能替代 8 位机吗?结果项目做完,性能绰绰有余,功耗还更低。嗯,从那以后我就再没碰过老架构了。
1.1.1 Cortex-M 家族谱系
ARM Cortex-M 家族目前主要分三代:
| 系列 | 架构 | 位宽 | 典型主频 | 代表芯片 |
|---|---|---|---|---|
| Cortex-M0/M0+ | ARMv6-M | 32-bit | 16~48 MHz | STM32F0 |
| Cortex-M3 | ARMv7-M | 32-bit | 24~120 MHz | STM32F1 |
| Cortex-M4 | ARMv7E-M | 32-bit | 24~180 MHz | STM32F4 |
| Cortex-M7 | ARMv7E-M | 32-bit | 16~480 MHz | STM32F7/H7 |
| Cortex-M33 | ARMv8-M | 32-bit | 最高 200 MHz | STM32L5 |
你想想看,M0 和 M7 虽然都叫 Cortex-M,但性能差距能有几十倍。选型的时候千万别搞混了。
1.2 STM32 选型指南
STM32 是意法半导体基于 Cortex-M 内核推出的 MCU 系列。市面上型号多到让人眼花缭乱。我记得刚入行那会儿,光看数据手册就看了三天。
其实选型没那么玄乎。抓住几个关键点就行:
1.2.1 按性能需求选
- 简单控制(LED、按键、继电器):STM32F0 系列,M0 内核,够用
- 中等复杂度(传感器采集、Modbus 通信):STM32F1 系列,M3 内核,经典款
- 高性能计算(音频处理、电机控制):STM32F4 系列,M4 内核,带 DSP 和 FPU
- 极致性能(图形界面、AI 推理):STM32H7 系列,M7 内核,双核都有
1.2.2 按外设需求选
STM32 的外设资源差异很大。我列几个常用的:
| 外设 | 说明 | 选型建议 |
|---|---|---|
| USART/UART | 串口通信 | 至少 2 路,方便调试和通信分离 |
| SPI | 高速外设接口 | 驱动 LCD、Flash 等需要 |
| I2C | 传感器总线 | 温湿度、加速度计常用 |
| ADC | 模拟量采集 | 注意分辨率和采样率 |
| Timer/PWM | 定时与脉宽调制 | 电机控制、呼吸灯必备 |
| DMA | 直接存储器访问 | 大数据传输时必选 |
举个例子:你要做一个 4 路电机驱动器,那至少需要 4 路 PWM 输出,外加编码器接口。这时候 STM32F103 的通用定时器就够用。但如果你要同时采集 8 路模拟信号,那得看 ADC 通道数够不够。
1.3 开发板与工具链
选好芯片型号,接下来就是开发板和工具链了。我个人建议新手从官方开发板入手,稳定可靠,资料也多。
1.3.1 常见开发板
- Nucleo 系列:ST 官方出品,带 ST-Link 调试器,价格亲民。我推荐 Nucleo-F103RB 或 Nucleo-F411RE
- Discovery 系列:功能更全,带屏幕或传感器,适合评估特定功能
- 第三方的板子:正点原子、野火等,资料丰富,适合系统学习
我的建议: 第一块板子别买太贵的。Nucleo 系列 100 块左右,够你玩半年。等把基本外设都调通了,再考虑上 Discovery 或自己画板子。
1.3.2 工具链选择
STM32 的开发工具链,我这些年换了好几套。现在基本固定下来了:
| 工具 | 用途 | 我的推荐 |
|---|---|---|
| IDE | 代码编辑、编译、调试 | STM32CubeIDE(免费,官方出品) |
| 编译器 | 代码编译 | ARM GCC(免费)或 IAR(商业) |
| 调试器 | 下载与调试 | ST-Link(Nucleo 板载)或 J-Link |
| 配置工具 | 引脚分配、时钟配置 | STM32CubeMX(图形化,自动生成代码) |
你想想看,以前我们写 STM32 程序,得手动配寄存器,一个时钟树就要折腾半天。现在 CubeMX 点几下就生成了。效率提升不是一星半点。
1.4 本章知识体系
下面这张图,是我自己总结的 STM32 入门知识结构。你跟着这个脉络走,不会乱。
这张图把 STM32 开发分成了四大块。硬件基础是地基,内核架构是骨架,外设驱动是血肉,工具链是武器。四者缺一不可。
最后说一句: 嵌入式开发没有捷径。我见过太多人上来就啃数据手册,结果越看越懵。我的建议是——先动手,再理论。买个开发板,点个灯,跑个串口,慢慢你就找到感觉了。