1. STM32开发环境搭建:工欲善其事,必先利其器
做嵌入式开发,第一关就是搭环境。很多人觉得这事简单,不就是装几个软件嘛。但我见过太多新手卡在这一步——装好了发现编译器报错、驱动不识别、下载器连不上。说白了,环境没搭对,后面全是坑。
这一章,我带你把 Keil MDK、STM32CubeMX、ST-Link 驱动挨个装好,再跑第一个 LED 工程。每一步我都会说清楚「为什么这么做」,顺便分享一些我踩过的坑。
1.1 工具链全景图
先搞清楚我们要装哪些东西,它们各自干什么活:
| 工具 | 作用 | 版本建议 |
|---|---|---|
| Keil MDK-ARM | 代码编辑、编译、调试一体 | MDK 5.38 或更高 |
| STM32CubeMX | 图形化配置外设、生成初始化代码 | 6.10 或更高 |
| ST-Link 驱动 | 让 PC 识别调试器/下载器 | 最新版即可 |
| USB 转串口驱动 | 串口打印调试(可选但推荐) | CH340/CP2102 对应驱动 |
核心关系:CubeMX 帮你生成工程框架 → Keil 负责编译和调试 → ST-Link 把固件烧进芯片。三个工具串成一条流水线。
1.2 Keil MDK 安装与配置
Keil 是我们写代码的主战场。我个人习惯用 MDK 5.38,稳定,对 STM32 全系列支持都不错。
安装步骤
- 从 ARM 官网或 Keil 官网下载 MDK-ARM 安装包
- 双击运行,一路 Next,注意安装路径不要有中文
- 安装完成后,打开 Keil,点击
File → License Management - 输入你的 License(正版或评估版都可以)
注意:MDK 安装包默认不带器件支持包(Device Family Pack)。你需要单独下载对应芯片的 Pack。比如 STM32F1 系列,搜索 Keil.STM32F1xx_DFP 并安装。
我记得第一次装 MDK 时,没装 Pack,编译直接报错找不到芯片头文件。当时还以为是软件坏了,折腾了半天。嗯,后来才知道是少了这一步。
配置编译器
Keil 默认用 ARMCC v5,但新版本也支持 AC6(ARM Compiler 6)。我个人建议用 AC6,编译速度快,代码密度也更好。在 Project → Options for Target → Target 里切换:
ARM Compiler: Use default compiler version 6
1.3 STM32CubeMX 安装
CubeMX 是 ST 官方的图形化配置工具。你点点鼠标,它就能生成初始化代码。说白了,就是帮你省掉写寄存器配置的体力活。
安装要点
- 需要 Java 运行环境(JRE),CubeMX 6.10 以上自带 JRE,不用额外装
- 安装路径同样不要有中文
- 首次启动会提示更新固件包,建议全选下载,后面用起来方便
小技巧:CubeMX 生成的代码默认放在 ./MDK-ARM 目录下。如果你和我一样喜欢把工程文件整理清楚,可以在生成前设置输出路径。
1.4 ST-Link 驱动安装
ST-Link 是 STM32 的调试下载器。很多开发板都集成了它,比如 STM32F103C8T6 最小系统板上的那个小芯片就是。
驱动安装其实很简单:
- 插上 ST-Link 到电脑 USB 口
- 打开设备管理器,如果看到黄色感叹号,说明没装驱动
- 下载 ST-Link 驱动(从 ST 官网或 Keil 安装目录找)
- 手动更新驱动,指向驱动文件夹即可
我曾经遇到过:ST-Link 驱动装好了,但 Keil 里死活识别不到。后来发现是 USB 线的问题——有些线只能充电,不能传数据。换了一根带屏蔽的数据线,立马好了。所以,别小看一根线。
1.5 第一个 LED 工程:从 CubeMX 到 Keil
环境搭好了,我们来跑一个真正的工程。目标很简单:让 STM32 板子上的 LED 闪烁。
步骤一:CubeMX 配置
- 打开 CubeMX,点击
New Project - 选择芯片型号,比如 STM32F103C8
- 在 Pinout 视图里,找到 PC13(很多板子的 LED 接这个引脚)
- 右键设置为
GPIO_Output - 配置时钟:HSE 8MHz,PLL 倍频到 72MHz
- 点击
Project → Generate Code,选择 MDK-ARM 工具链
步骤二:Keil 里写代码
生成后,用 Keil 打开工程。找到 main.c,在 while(1) 里加上:
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(500);
这两行代码的作用:翻转 PC13 的电平,然后等 500ms。循环执行,LED 就会一亮一灭。
步骤三:编译与下载
- 点击
Build按钮(或按 F7),编译工程 - 确保 ST-Link 已连接,点击
Download(或按 F8) - 如果一切正常,你会看到板子上的 LED 开始闪烁
常见错误:如果下载时报错 No ST-Link detected,检查驱动、USB 线、以及 Keil 的调试器设置(Options for Target → Debug → Use ST-Link)。
1.6 知识结构图:环境搭建与工程流程
下面这张图把整个流程串起来了,你可以对照着看:
1.7 避坑指南
最后,我把这些年遇到的环境问题整理了一下,你遇到了可以直接对照:
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
| 编译报错找不到头文件 | 未安装对应 Device Pack | 在 Keil 的 Pack Installer 中安装对应系列 Pack |
| 下载时报 No ST-Link | 驱动未装 / USB 线问题 / 调试器设置不对 | 重装驱动、换数据线、检查 Keil Debug 配置 |
| CubeMX 生成代码后 Keil 打不开 | Keil 版本过低或工程路径有中文 | 升级 Keil、移除中文路径 |
| LED 不亮 | 引脚配置错误 / 时钟未使能 | 检查 CubeMX 引脚分配和时钟树配置 |
我的习惯:每搭好一个新环境,我都会先跑一个 LED 闪烁工程。这就像嵌入式世界的 "Hello World"——能亮,说明整个工具链通了。后面再复杂的项目,都是在这个基础上加东西。