2. 开发环境搭建:Keil/IAR的安装与配置、调试器驱动安装、工程模板建立

说实话,很多初学者一上来就急着写代码,结果卡在环境搭建上大半天。我见过不少同事,装完Keil发现找不到芯片,或者J-Link死活连不上,折腾一上午还没开始写第一行代码。这一章,咱们就把这些坑提前填上。

2.1 Keil MDK 安装与配置

Keil MDK,说白了就是ARM内核单片机开发的事实标准。我个人习惯用MDK 5.38版本,太新的版本有时候兼容性反而麻烦。

2.1.1 安装步骤

  1. 下载安装包:去ARM官网或Keil官网下载MDK-ARM安装包。注意区分32位和64位。
  2. 运行安装程序:右键以管理员身份运行。安装路径我建议不要有中文和空格,比如 C:\Keil_v5。
  3. 选择组件:默认勾选即可,但记得把 ARM Compiler 和 Device Support 都选上。
  4. 安装Pack包:这是关键一步。安装完成后打开Keil,点击 Pack Installer,找到你用的芯片型号(比如STM32F103C8T6),点击 Install。
我曾经踩过的坑: 装完Keil发现Device列表里找不到STM32,就是因为没装对应的Pack包。Pack包相当于芯片的“身份证”,没有它编译器不知道你用的是啥芯片。

2.1.2 配置要点

  • 编译器版本选择:在 Project - Options for Target - Target 里,ARM Compiler我一般选 V6.x,编译速度更快,代码密度也更好。
  • 输出路径设置:把 Select Folder for Objects 指向工程目录下的 Output 文件夹,别让一堆 .o 文件和源码混在一起。
  • 调试器选择:在 Debug 选项卡里选 J-Link / J-Trace Cortex 或 ST-Link Debugger,后面会细说。

2.2 IAR Embedded Workbench 安装与配置

IAR的优化能力确实强,尤其对代码尺寸的控制。我在做一款电池供电的产品时,IAR编译出来的固件比Keil小了将近15%,那一次让我彻底服了。

2.2.1 安装步骤

  1. 下载IAR安装包:注意IAR是按芯片架构分版本的,ARM版就装 IAR for ARM。
  2. 运行安装:同样以管理员身份运行。IAR的许可证管理比较严格,建议用注册机或正版License。
  3. 安装设备支持包:IAR 8.x以上版本可以通过 Tools - Device Support Manager 在线安装芯片支持包。
小技巧: IAR的工程文件后缀是 .ewp,工作空间是 .eww。我习惯一个工作空间放多个工程,比如Bootloader和App分开,方便管理。

2.3 调试器驱动安装

调试器是连接电脑和单片机的桥梁。你想想看,没有驱动,电脑根本认不出调试器,那还怎么下载程序?

2.3.1 J-Link驱动安装

  • 下载驱动:去SEGGER官网下载 J-Link Software and Documentation Pack。
  • 安装:一路Next,安装完成后插上J-Link,设备管理器里应该能看到 J-Link driver。
  • 验证:打开 J-Link Commander,输入 connect,如果能识别到芯片,说明驱动OK。
注意: J-Link有盗版和正版之分。盗版J-Link固件版本低,可能不支持新芯片。我曾经买过一个盗版J-Link V9,死活连不上STM32H743,换了正版立马解决。

2.3.2 ST-Link驱动安装

  • 驱动集成:ST-Link驱动通常集成在STM32CubeProgrammer或Keil安装包里。如果设备管理器显示黄色感叹号,手动指定驱动路径到 C:\Keil_v5\ARM\STLink\USBDriver。
  • 固件升级:ST-Link的固件需要定期更新。打开 STM32CubeProgrammer,点击 Firmware Update,按提示操作。

2.4 工程模板建立

每次新建工程都从头配置一遍?太浪费时间了。我习惯建立一个通用模板,以后直接复制粘贴,改个芯片型号就能用。

2.4.1 Keil工程模板结构

文件夹 用途
User 存放 main.c、stm32f1xx_it.c 等用户代码
Driver 存放外设驱动文件,如 GPIO、USART、I2C 等
Startup 启动文件 startup_stm32f103xe.s
Output 编译生成的 .o、.hex、.map 文件
Doc 存放芯片手册、原理图等文档

2.4.2 模板配置步骤

  1. 新建工程:在Keil里 Project - New uVision Project,选择芯片型号。
  2. 添加启动文件:从 Device 文件夹里把启动文件拖到工程里。
  3. 配置系统时钟:在 system_stm32f1xx.c 里设置HSE时钟源和PLL倍频系数。
  4. 设置调试器:在 Debug 选项卡里选 J-Link,勾选 Load Application at Startup。
  5. 生成Hex文件:在 Output 选项卡里勾选 Create HEX File。
我的习惯: 模板里我会预写好一个空的main函数和几个常用的外设初始化函数,比如 GPIO_Init()、USART_Init(),这样新项目直接填业务逻辑就行。

2.5 开发环境整体架构

下面这张图展示了开发环境各组件之间的关系。你仔细看,从源码到固件烧录,每一步都离不开这些工具的配合。

开发环境架构图 开发环境整体架构 用户源码 main.c / driver.c 编译器 ARMCC / IAR C/C++ 链接器 生成 .axf / .elf 调试器 J-Link / ST-Link 目标单片机 STM32 / GD32 / AT32 IDE Keil MDK / IAR EWARM 说明: IDE负责管理源码和编译流程,编译器将源码转为机器码,链接器生成可执行文件,调试器负责下载和调试。

2.6 常见问题与避坑指南

  • 驱动安装失败:检查USB线是否支持数据传输,有些廉价线只能充电。换根线试试,我遇到过好几次这种问题。
  • Keil编译报错找不到芯片:确认Pack包版本是否匹配。比如STM32F103C8T6需要 Keil.STM32F1xx_DFP.2.4.0 以上版本。
  • IAR工程无法下载:检查调试器配置里的 Interface 是SWD还是JTAG。STM32默认用SWD,选错就连接不上。
  • J-Link提示Clone:盗版J-Link会被SEGGER检测到并锁定。解决办法是刷固件,但更推荐直接买正版。
核心要点: 环境搭建看似繁琐,但一次配好,后面能省大量时间。我建议你把配好的工程模板备份到网盘或Git仓库,换电脑时直接拉下来就能用。