2. 开发环境搭建:Keil MDK 与 STM32CubeMX 的安装与配置
说实话,做嵌入式开发这么多年,我见过太多人在环境搭建这一步就卡住了。不是装错了版本,就是路径带了中文,折腾半天连个灯都点不亮。这一章,咱们就把 Keil MDK 和 STM32CubeMX 这两个吃饭的家伙一次性装好、配好。
本章目标: 完成 Keil MDK-ARM 与 STM32CubeMX 的安装、注册、基础配置,并验证工具链能正常编译下载。
2.1 工具链概览
先理清楚这两个工具各自干什么活:
| 工具 | 角色 | 核心功能 |
|---|---|---|
| Keil MDK-ARM | IDE + 编译器 + 调试器 | 编写代码、编译、下载、调试 |
| STM32CubeMX | 图形化配置工具 | 引脚分配、时钟树、外设初始化代码生成 |
简单说,CubeMX 帮你把 HAL 库的初始化代码画出来,Keil 负责把代码编译成机器码烧进芯片。两者配合,能省掉大量手写寄存器配置的时间。
2.2 Keil MDK-ARM 安装与注册
2.2.1 下载与安装
- 获取安装包:去 Keil 官网(www.keil.com)下载 MDK-ARM 最新版本。目前稳定版是 V5.38 左右,别追太新的,有些第三方 pack 可能不兼容。
- 运行安装程序:右键管理员身份运行,路径不要有中文或空格。我个人习惯装到
C:\Keil_v5,干净好找。 - 选择组件:默认勾选就好,它会自动装好 ARM Compiler、Debugger 驱动(ULINK/ST-Link 等)。
- 安装 Device Family Pack:装完后打开 Keil,点
Pack Installer,找到 STM32F1/F4 系列 pack 下载。这一步很多人漏掉,结果新建工程找不到芯片型号。
我的习惯: 装完 Keil 后第一件事,把
Project -> Manage -> Component Environment 里的路径检查一遍,确保所有工具链路径都是英文。
2.2.2 注册与破解(正版用户请忽略)
Keil 不注册只能用 2KB 代码。正版用户直接输入 License 就行。如果你跟我一样是个人学习,嗯……你懂的。
- 以管理员身份运行 Keil。
- 点
File->License Management。 - 复制 CID 码,用注册机生成 License。
- 把生成的 License 粘贴进去,点
Add LIC。
注意: 注册机容易被杀毒软件干掉。我建议先关掉实时防护,注册完再开。另外,注册时 Keil 必须用管理员权限打开,否则会报错。
2.3 STM32CubeMX 安装与配置
2.3.1 下载与安装
- 获取安装包:去 ST 官网搜 STM32CubeMX,下载最新版(需要注册账号,免费)。
- 安装 Java 运行环境:CubeMX 基于 Java,如果你的电脑没有 JRE,它会自动弹窗引导安装。我建议装 Java 11 以上版本。
- 运行安装程序:同样,路径不要有中文。装完后桌面会有 CubeMX 图标。
- 安装固件包:打开 CubeMX,点
Help->Manage embedded software packages,勾选你需要的系列(比如 STM32F1、F4、L0 等),点击Install Now。这个过程比较慢,建议挂机等。
避坑指南: 固件包默认下载到 C 盘用户目录下,时间久了会占好几个 G。我一般会在
Help -> Updater Settings 里把固件库路径改到 D 盘,比如 D:\STM32Cube\Repository。
2.3.2 基础配置
装完 CubeMX 后,建议做两件事:
- 设置代码生成风格:
Project Manager->Code Generator,勾选Generate peripheral initialization as a pair of .c/.h files per peripheral。这样每个外设单独一个文件,方便管理。 - 设置 IDE 工具链:在同一个页面,
Toolchain / IDE选MDK-ARM V5,这样生成的工程直接双击就能用 Keil 打开。
2.4 工具链集成验证
装完不能光看不练,咱们跑个最小工程验证一下。
2.4.1 用 CubeMX 生成一个最小工程
- 打开 CubeMX,点
New Project,选 STM32F103C8(蓝板子常用的型号)。 - 在
Pinout & Configuration里,找到SYS->Debug选Serial Wire(否则烧录一次后第二次就连不上了,我吃过这个亏)。 - 找到
RCC->High Speed Clock (HSE)选Crystal/Ceramic Resonator。 - 点
Clock Configuration标签,把 HCLK 设为 72MHz(F103 最高主频)。 - 点
Project Manager,填工程名和路径,IDE 选MDK-ARM V5。 - 点
GENERATE CODE,等它生成完。
关键检查点: 生成的工程目录里必须有
MDK-ARM 文件夹,里面有个 .uvprojx 文件。
2.4.2 在 Keil 中编译与下载
- 双击
.uvprojx文件,Keil 会自动打开工程。 - 点
Build按钮(或按 F7),看底部输出窗口有没有0 Error(s), 0 Warning(s)。 - 接上 ST-Link 或 J-Link,点
Download按钮(或按 F8)。 - 如果一切顺利,芯片就开始跑代码了。你可以接个串口看打印,或者点个 LED 验证。
常见错误: 如果下载时报
No ULINK Device found,说明调试器驱动没装好。去 Keil 安装目录下的 ARM\STLink 或 ARM\ULINK 里手动装一下驱动。
2.5 开发环境整体流程
下面这张图,是我自己画的环境搭建与开发流程,你跟着走一遍基本不会迷路。
2.6 常见问题与避坑
环境搭建这块,我踩过的坑比走过的路还多。挑几个典型的说说:
- 路径带中文或空格:Keil 和 CubeMX 对中文路径支持很差,编译会报一些莫名其妙的错误。我建议所有工具和工程都放在纯英文路径下。
- 调试器驱动不识别:插上 ST-Link 后设备管理器里显示黄色感叹号。去 Keil 安装目录下的
ARM\STLink\USBDriver里手动装驱动就行。 - 编译报错找不到头文件:多半是 Device Pack 没装,或者工程里的
Include Paths没配好。在 Keil 里点Project->Options for Target->C/C++,检查Include Paths是否包含 HAL 库路径。 - 下载一次后第二次连不上:这是因为 Debug 引脚被复用了。在 CubeMX 里一定要把
SYS->Debug设为Serial Wire,否则芯片会变砖。我曾经因为这个把一块板子折腾了一下午。
我的建议: 第一次搭建环境,最好用一块官方开发板(比如 NUCLEO 或 Discovery),自带 ST-Link,省去接线和驱动问题。等流程跑通了,再换自己的板子。
2.7 验证清单
装完配完,对照这个清单检查一遍:
| 检查项 | 状态 |
|---|---|
| Keil MDK 安装完成,能正常打开 | ☐ |
| Keil 已注册,无代码大小限制 | ☐ |
| STM32CubeMX 安装完成,能正常打开 | ☐ |
| 已下载目标芯片的固件包 | ☐ |
| CubeMX 能生成 MDK 工程 | ☐ |
| Keil 能编译工程,0 Error 0 Warning | ☐ |
| 调试器驱动正常,能下载程序 | ☐ |
全部打勾?恭喜,你的开发环境已经就绪。接下来就可以开始写真正的驱动代码了。