2. 开发环境搭建:Keil/IAR/STM32CubeIDE安装、驱动安装(ST-Link/J-Link)、工程模板建立
工欲善其事,必先利其器。做固件开发,第一关就是把吃饭的家伙装好。我见过不少新手,装个IDE就卡半天,驱动死活认不到,还没开始写代码就泄气了。其实没那么玄乎,今天咱们就把这三套主流环境捋一遍。
本章核心目标:装好Keil MDK、IAR EWARM、STM32CubeIDE三选一(我建议你至少装前两个),搞定ST-Link和J-Link驱动,最后建一个干净的工程模板。以后每学一个新模块,直接往模板里加文件就行。
2.1 开发工具选型:你该用哪个?
先别急着下载,想清楚你的场景。我列个表,你对照着选:
| 工具 | 适用芯片 | 编译器 | 调试器支持 | 许可证 | 我的建议 |
|---|---|---|---|---|---|
| Keil MDK | ARM Cortex-M全系列 | ARMCC v5/v6 | ST-Link, J-Link, ULINK | 商业收费(有32KB代码限制版) | 公司项目首选,生态最成熟 |
| IAR EWARM | ARM Cortex-M/R/A | IAR C/C++ Compiler | ST-Link, J-Link, I-Jet | 商业收费(有30天评估版) | 代码优化强,军工汽车行业常见 |
| STM32CubeIDE | STM32全系列 | GCC for ARM | ST-Link(原生支持) | 免费 | 学习入门、原型验证首选 |
我个人习惯是Keil和CubeIDE都装。Keil用来做正式项目,CubeIDE用来快速验证外设配置——它那个图形化引脚配置工具是真的香。IAR嘛,如果你以后要进汽车电子或者军工行业,迟早得学,但入门阶段可以先放放。
2.2 Keil MDK 安装与激活
Keil的安装流程其实挺傻瓜的,但有几个坑我得提前说。
2.2.1 下载与安装步骤
- 去官网下载:Keil官网 → Products → MDK-ARM → Download。需要注册账号,填个邮箱就行。
- 运行安装包:一路Next,注意安装路径不要有中文和空格。我习惯装到
C:\Keil_v5。 - 选择组件:安装时勾选所有Device Family Packs,后面省得一个个补。
- 安装Pack:装完后打开Keil,点
Pack Installer,找到你用的芯片型号(比如STM32F103C8),点击Install。
注意:Keil MDK v5之后,芯片支持全靠Pack包。如果你装完发现找不到芯片,十有八九是Pack没装。我曾经帮一个同事排查了半天,结果就是Pack没装——嗯,这种低级错误我也犯过。
2.2.2 许可证激活
Keil有32KB代码限制的免费版,但咱们做固件打包,代码量很容易超。建议买个MDK-ARM Standard许可证,或者用你公司的浮动许可证。
激活步骤:
1. 打开Keil → File → License Management
2. 复制CID码
3. 去官网生成许可证(需要PID码,在购买邮件里)
4. 把生成的许可证粘贴回License Management → Add License
2.3 IAR EWARM 安装要点
IAR的安装比Keil稍微讲究一点。它的编译器优化等级对代码体积影响很大,后面咱们讲固件打包时会用到这个特性。
2.3.1 安装流程
- 官网下载IAR Embedded Workbench for ARM,建议用最新稳定版(目前是9.x)。
- 安装时选择 Full Installation,别选Custom,否则容易漏组件。
- 安装过程中会提示安装驱动,全部同意。
- 装完后打开IAR,它会自动检测可用的调试器。
小技巧:IAR的工程文件后缀是 .eww(工作空间)和 .ewp(工程)。如果你从Keil迁移项目,IAR有导入向导,但别指望100%完美——链接脚本和启动文件得手动改。
2.4 STM32CubeIDE 安装
这个最简单,因为它是ST官方基于Eclipse定制的,免费、开箱即用。
- 去ST官网下载STM32CubeIDE,选对应操作系统版本。
- 解压后直接运行安装程序,建议勾选 Install ST-Link drivers。
- 首次启动会提示选择工作空间目录,我习惯建一个
D:\STM32Workspace。 - 装完后打开
Help → Manage Embedded Software Packages,更新你需要的芯片Pack。
说实话,CubeIDE对新手最友好。它的图形化配置工具CubeMX直接集成在里面,点几下鼠标就能生成初始化代码。但有个问题——它生成的代码结构比较死板,后面做固件打包时,你可能会觉得不够灵活。
2.5 调试器驱动安装:ST-Link vs J-Link
驱动装不好,调试器连不上,这是新手最容易卡住的地方。我直接说结论:
2.5.1 ST-Link 驱动
- Windows 10/11:插上ST-Link,系统会自动装驱动。如果没识别,去ST官网下载
ST-Link USB driver手动装。 - 确认方法:打开设备管理器,看到
STMicroelectronics STLink dongle就对了。 - 常见问题:如果显示黄色感叹号,右键更新驱动,选
从计算机查找驱动,指向ST-Link驱动目录。
2.5.2 J-Link 驱动
- 安装SEGGER工具包:去SEGGER官网下载
J-Link Software and Documentation Pack,安装后驱动自动搞定。 - 确认方法:打开
J-Link Commander,输入connect,如果能识别到芯片型号,说明驱动OK。 - 固件更新:J-Link偶尔需要更新固件。打开
J-Link Configurator,它会提示你升级。
避坑指南:我曾经遇到一个情况——J-Link插上后电脑有声音,但Keil里就是识别不到。折腾了半天,发现是USB线的问题。J-Link对USB线质量很敏感,别用那种几块钱的充电线,换根带屏蔽的数据线就好了。
2.6 工程模板建立
环境装好了,驱动也认了,接下来就是建一个干净的工程模板。以后每做一个新项目,直接复制这个模板,省得每次从头配。
2.6.1 模板目录结构
我习惯用这种结构,清晰好管理:
Project_Template/
├── Core/
│ ├── Inc/ # 头文件
│ ├── Src/ # 源文件
│ └── startup/ # 启动文件
├── Drivers/
│ ├── CMSIS/ # CMSIS核心文件
│ └── HAL_Driver/ # STM32 HAL库
├── MDK-ARM/ # Keil工程文件
├── EWARM/ # IAR工程文件
├── .cproject # CubeIDE工程文件
└── README.md # 工程说明
2.6.2 Keil工程模板建立步骤
- 新建一个文件夹,比如
My_Template。 - 打开Keil → Project → New μVision Project,选择芯片型号。
- 在弹出的
Manage Run-Time Environment中,勾选CMSIS → Core和Device → Startup。 - 添加一个
main.c,写个空循环:
#include "main.h"
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while(1)
{
// 主循环
}
}
- 配置调试器:Project → Options for Target → Debug → 选择
ST-Link Debugger或J-Link/J-Trace。 - 编译通过后,把这个文件夹备份一份,以后做项目直接复制。
2.6.3 模板里必须有的文件
| 文件/文件夹 | 作用 | 来源 |
|---|---|---|
startup_stm32f103xb.s |
启动文件,定义中断向量表 | STM32Cube固件包 |
system_stm32f1xx.c |
系统时钟配置 | STM32Cube固件包 |
stm32f1xx_hal_conf.h |
HAL库配置开关 | STM32Cube固件包 |
main.c |
用户主程序入口 | 自己写 |
stm32f1xx_it.c |
中断服务函数 | STM32Cube固件包 |
我的习惯:模板建好后,我会先编译一次,确认0错误0警告。然后把生成的 .hex 文件用ST-Link Utility烧进去,看LED能不能闪。这一步能验证整个工具链是否通顺——别等到写了几百行代码才发现环境有问题。
2.7 知识体系总览
下面这张图把本章的核心逻辑串起来了。你装环境的时候,心里要有这张图:
2.8 验证环境是否通顺
环境装完别急着关电脑。我建议你走一遍完整的流程:
- 打开IDE,加载刚才建的模板工程。
- 点编译(Build),确认0错误0警告。
- 插上开发板,连接调试器。
- 点下载(Download),看能不能烧进去。
- 点调试(Debug),看能不能停在main函数第一行。
如果这五步都过了,恭喜你,环境搭建完成。如果卡在哪一步,别慌——99%的情况是驱动没装对或者调试器没选对。回去检查一下设备管理器,或者换个USB口试试。
最后说一句:环境搭建是固件开发的第一道坎,跨过去后面就顺了。我当年第一次装Keil,折腾了整整一个下午,最后发现是杀毒软件把驱动给拦截了。嗯,这种破事你以后也会遇到的——别急,慢慢排查,总能搞定。