第3章 开发环境搭建:IDE安装与配置
说实话,做嵌入式开发这么多年,我见过太多人在环境搭建这一步就卡住了。工具链没配好,后面调试起来简直要命。今天咱们就把Keil和IAR这两大主流IDE的安装配置、编译器设置、还有调试器连接这些事,一次性说清楚。
3.1 选择你的IDE:Keil还是IAR?
先说说我的个人习惯。做STM32项目时,我偏爱Keil MDK。界面清爽,上手快。但如果你做的是ARM7、ARM9这类老平台,或者公司要求统一工具链,那IAR也是好选择。
其实这两个IDE的核心功能差不多。区别在哪?我列个表给你看:
| 对比项 | Keil MDK | IAR EWARM |
|---|---|---|
| 安装包大小 | 约2GB | 约1.5GB |
| 编译器 | ARMCC(v5/v6) | IAR C/C++ Compiler |
| 调试器支持 | J-Link、ST-Link、ULINK | J-Link、ST-Link、I-jet |
| 代码优化 | 中规中矩 | 优化选项更丰富 |
| 学习成本 | 低,资料多 | 中等,文档专业 |
我个人建议:新手先用Keil。等做复杂项目了,再试试IAR的优化能力。我在一个电机控制项目里,用IAR的 -O3 优化,代码体积直接小了15%。
3.2 Keil MDK安装与配置
安装Keil其实不复杂。但有几个坑,我得提前告诉你。
3.2.1 安装步骤
- 从官网下载MDK-ARM安装包。注意版本,我建议用5.38或更新版本。
- 双击安装,一路Next。但安装路径别带中文!我见过有人装到「D:\开发工具\Keil_v5」,结果编译报错,查了半天是路径问题。
- 安装完成后,打开Keil,点击
Pack Installer图标。 - 在Pack Installer里,找到你的芯片型号。比如STM32F103C8T6,勾选对应的Device Family Pack。
- 等待下载安装。这个过程可能有点慢,喝杯咖啡吧。
3.2.2 编译器设置
安装完IDE,接下来要配编译器。这是关键一步。
打开Keil,点击 Project -> Options for Target,或者直接按 Alt+F7。在 Target 标签页里:
- ARM Compiler:选
Use default compiler version 6。V6编译器支持C11标准,代码更现代。 - Optimization:调试阶段选
Level 0 (-O0)。发布时再改Level 3 (-O3)。
嗯,这里要注意。优化等级不是越高越好。我在一个项目里开了 -O3,结果一个延时函数被优化掉了,电机直接失控。所以调试阶段老老实实用 -O0。
3.2.3 添加芯片支持包
有时候Pack Installer里找不到你的芯片。别慌,手动添加就行。
1. 去Keil官网下载对应的DFP包(比如STM32F1xx_DFP)
2. 双击安装,或者解压后放到 Keil_v5/ARM/PACK 目录
3. 重启Keil,在Device选择里就能看到了
3.3 IAR EWARM安装与配置
如果你选了IAR,那说明你对代码质量有要求。IAR的编译器优化确实厉害,但配置起来也稍微麻烦点。
3.3.1 安装步骤
- 下载IAR Embedded Workbench for ARM。版本建议8.50以上。
- 安装时,记得勾选
IAR ARM Compiler和IAR C-SPY Debugger。 - 安装完成后,打开IAR,点击
Tools -> Options。 - 在
Project标签页,设置默认的芯片型号和调试器。
@192.168.1.100 这种格式。
3.3.2 编译器设置
IAR的编译器选项比Keil多。但常用的就这几个:
- Optimization:调试用
None,发布用High。 - Language:选
C11或C++14。 - Output:生成
.hex和.bin文件。
说实话,IAR的优化选项我研究了很久。它有个 Balanced 模式,兼顾代码大小和速度。我一般用这个。
3.4 调试工具连接:J-Link与ST-Link
IDE装好了,编译器配好了,接下来就是连调试器。这一步最容易出问题。
3.4.1 J-Link连接
J-Link是SEGGER家的产品,稳定可靠。我用了快十年,没出过大问题。
连接步骤:
- 用SWD接口连接J-Link和目标板。4根线:SWDIO、SWCLK、GND、VCC(可选)。
- 安装J-Link驱动。去SEGGER官网下载
J-Link Software and Documentation Pack。 - 打开Keil,在
Options for Target -> Debug里,选择J-Link/J-Trace Cortex。 - 点击
Settings,确认SWD模式,速度选4MHz或10MHz。
3.4.2 ST-Link连接
ST-Link是ST官方调试器,便宜好用。但有个问题:容易掉固件。
连接步骤:
- 同样用SWD接口。ST-Link的引脚定义是:1-VCC、2-SWDIO、3-GND、4-SWCLK。
- 安装ST-Link驱动。在STM32CubeProgrammer安装包里自带。
- 在Keil里选择
ST-Link Debugger,然后Settings里选SWD模式。
嗯,这里要注意。ST-Link的固件版本会影响调试稳定性。我建议定期更新固件。用STM32CubeProgrammer的 Firmware Update 功能就行。
3.4.3 调试器对比
| 特性 | J-Link | ST-Link |
|---|---|---|
| 速度 | 最高50MHz | 最高4MHz |
| 稳定性 | 非常稳定 | 偶尔掉固件 |
| 价格 | 较贵(几百到几千) | 便宜(几十块) |
| 适用场景 | 专业开发、量产 | 学习、原型验证 |
我个人建议:学习阶段用ST-Link就够了。做产品开发,还是上J-Link吧。省心。
3.5 第一个测试工程
环境搭好了,总得跑个程序验证一下。我一般用点灯程序测试。
#include "stm32f1xx_hal.h"
int main(void)
{
HAL_Init();
__HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
while (1)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(500);
}
}
编译下载后,如果LED以1秒频率闪烁,恭喜你,环境搭建成功了!
好了,环境搭建就讲到这里。下一章咱们开始写真正的剃须刀自清洁控制代码。到时候你会用上今天配好的工具链。记住,工欲善其事,必先利其器。环境搭好了,后面写代码才顺手。