2. 开发环境搭建:Keil MDK / STM32CubeIDE 安装与工程模板创建
说实话,很多初学者在学嵌入式时,第一个坑往往不是代码写不对,而是环境没搭好。我见过不少同事,花了一整天装软件,结果编译第一行代码就报错——然后就开始怀疑人生了。
这一章,我带你把开发环境彻底搞定。咱们同时讲 Keil MDK 和 STM32CubeIDE 两种工具,你选一个用就行。我个人更推荐初学者从 Keil 入手,因为它的调试体验更成熟,资料也多。
2.1 工具链选型:Keil 还是 CubeIDE?
先看个对比表格,心里有个底:
| 对比项 | Keil MDK | STM32CubeIDE |
|---|---|---|
| 编译器 | ARMCC (v5/v6) | GCC (免费) |
| 调试器支持 | J-Link / ST-Link / ULINK | ST-Link (原生) |
| 代码生成 | 需配合 CubeMX | 内置 CubeMX |
| 许可证 | 商业收费(有代码大小限制版) | 免费开源 |
| 工程管理 | .uvprojx 项目文件 | .cproject 项目文件 |
| 调试体验 | 成熟稳定,寄存器窗口直观 | Eclipse 风格,插件丰富 |
2.2 Keil MDK 安装与激活
安装过程其实不复杂,但有几个细节容易踩坑。我一步步说清楚。
2.2.1 下载与安装
- 去官网下载 MDK-ARM(注意不是 MDK-Viewer,那个只能看代码不能编译)。
- 运行安装包,路径不要有中文和空格。我习惯装到
C:\Keil_v5。 - 选择组件:默认勾选就行,但记得把
ARM Compiler和Device Support都选上。 - 安装 Pack:安装完成后,打开 Keil,点
Pack Installer,搜索你的芯片型号(比如 STM32F103C8),点击 Install。
2.2.2 激活与 License 管理
Keil 是收费软件,但有个免费版限制:代码不超过 32KB。对于学习来说,32KB 其实够用了。如果你需要更大容量,就得买 License。
激活步骤:
- 打开 Keil →
File → License Management - 复制
CID码 - 去官网生成 License(或使用正版购买的激活码)
- 粘贴回去,点击
Add LIC
嗯,这里要注意:如果你用的是公司买的浮动 License,记得配置好服务器地址,不然连不上。
2.3 STM32CubeIDE 安装
CubeIDE 就简单多了,完全免费,安装也傻瓜式。
- 去 ST 官网下载:选择对应操作系统版本(Windows / Linux / macOS)。
- 运行安装程序:它会自动安装 Eclipse 插件和 GCC 工具链。
- 首次启动:选择工作空间路径(Workspace),我建议单独建一个文件夹,比如
D:\STM32_Workspace。 - 更新固件包:打开后,点
Help → Manage Embedded Software Packages,下载你需要的 STM32 系列固件。
2.4 工程模板创建(核心)
环境装好了,接下来就是创建工程模板。这个模板会贯穿整个课程,所以一定要做对。
2.4.1 在 Keil 中创建模板
我习惯用 CubeMX 生成初始化代码,再导入 Keil。这样既保留了 CubeMX 的图形化配置,又能用 Keil 的调试优势。
- 打开 CubeMX,选择芯片型号(比如 STM32F103C8T6)。
- 配置时钟:在
Clock Configuration页面,把 HSE 设为 8MHz,PLL 倍频到 72MHz。 - 配置调试接口:在
SYS里,Debug 选Serial Wire(否则下载器连不上)。 - 生成代码:
Project Manager → Project,Toolchain / IDE 选MDK-ARM,版本选 V5。 - 点击 GENERATE CODE,生成后双击
.uvprojx文件打开。
打开 Keil 后,你会看到这样的工程结构:
Project
├── Application
│ ├── main.c
│ ├── stm32f1xx_it.c
│ └── stm32f1xx_hal_msp.c
├── Drivers
│ ├── CMSIS
│ └── STM32F1xx_HAL_Driver
├── Middlewares
└── .uvprojx
main.c 是我们写业务逻辑的地方,Drivers 是 HAL 库,Middlewares 是中间件。后面讲分层架构时,我们会在这个基础上加自己的层。
2.4.2 在 CubeIDE 中创建模板
CubeIDE 更直接,因为它内置了 CubeMX。
- 新建工程:
File → New → STM32 Project。 - 选择芯片:输入型号,比如 STM32F103C8,点 Next。
- 配置项目名:比如
STM32_Template,点 Finish。 - 自动打开 CubeMX 视图:配置引脚、时钟、外设。
- 点击右上角 Generate Code:代码会自动生成并导入工程。
工程结构类似 Keil,但多了 .cproject 和 .project 两个 Eclipse 配置文件。
2.5 验证编译与下载
模板创建好了,得验证一下能不能编译通过、能不能下载到板子上。
2.5.1 编译测试
在 Keil 里点 Build (F7),在 CubeIDE 里点 Build All (Ctrl+B)。如果看到 0 Error(s), 0 Warning(s),恭喜你,环境搭好了。
如果报错,常见原因有:
- 找不到头文件:检查
C/C++ Include Paths是否包含了 HAL 库路径。 - 芯片型号不匹配:在 Keil 的
Target选项卡里重新选一下芯片。 - 编译器版本问题:Keil 里可以切换 ARMCC v5 和 v6,有些旧工程只能用 v5。
2.5.2 下载与调试
连接 ST-Link 或 J-Link,配置调试器:
- Keil:
Project → Options for Target → Debug,选ST-Link Debugger,点Settings确认连接成功。 - CubeIDE:默认自动识别 ST-Link,点
Debug (F11)即可。
下载成功后,点 Run 或 Reset and Run,板子上的 LED 应该会闪烁(如果例程里有)。
SystemInit() 之后不要动 PA13/PA14。
2.6 知识体系总览
下面这张图,把本章的核心知识点串起来了。你可以把它当作一个“地图”,以后遇到环境问题,先看这张图定位。
2.7 本章小结
环境搭建这件事,说难不难,说简单也不简单。关键是把每一步做扎实,别跳步骤。
我见过太多人,装完 Keil 就直接写代码,结果编译报错就慌了。其实只要按我上面的流程走一遍,基本不会出问题。
最后提醒一句:工程模板是后面所有章节的基础。建议你把这个模板保存好,以后每次新建项目都从它复制。这样能省下大量重复配置的时间。
.zip,放在云盘里。换电脑时直接解压就能用,不用重新配置。