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 下载与安装步骤

  1. 去官网下载:Keil官网 → Products → MDK-ARM → Download。需要注册账号,填个邮箱就行。
  2. 运行安装包:一路Next,注意安装路径不要有中文和空格。我习惯装到 C:\Keil_v5。
  3. 选择组件:安装时勾选所有Device Family Packs,后面省得一个个补。
  4. 安装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 安装流程

  1. 官网下载IAR Embedded Workbench for ARM,建议用最新稳定版(目前是9.x)。
  2. 安装时选择 Full Installation,别选Custom,否则容易漏组件。
  3. 安装过程中会提示安装驱动,全部同意。
  4. 装完后打开IAR,它会自动检测可用的调试器。

小技巧:IAR的工程文件后缀是 .eww(工作空间)和 .ewp(工程)。如果你从Keil迁移项目,IAR有导入向导,但别指望100%完美——链接脚本和启动文件得手动改。

2.4 STM32CubeIDE 安装

这个最简单,因为它是ST官方基于Eclipse定制的,免费、开箱即用。

  1. 去ST官网下载STM32CubeIDE,选对应操作系统版本。
  2. 解压后直接运行安装程序,建议勾选 Install ST-Link drivers。
  3. 首次启动会提示选择工作空间目录,我习惯建一个 D:\STM32Workspace。
  4. 装完后打开 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工程模板建立步骤

  1. 新建一个文件夹,比如 My_Template。
  2. 打开Keil → Project → New μVision Project,选择芯片型号。
  3. 在弹出的 Manage Run-Time Environment 中,勾选 CMSIS → Core 和 Device → Startup。
  4. 添加一个 main.c,写个空循环:
#include "main.h"

int main(void)
{
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    
    while(1)
    {
        // 主循环
    }
}
  1. 配置调试器:Project → Options for Target → Debug → 选择 ST-Link Debugger 或 J-Link/J-Trace。
  2. 编译通过后,把这个文件夹备份一份,以后做项目直接复制。

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 知识体系总览

下面这张图把本章的核心逻辑串起来了。你装环境的时候,心里要有这张图:

开发环境搭建知识体系 选择开发IDE Keil MDK IAR EWARM STM32CubeIDE 安装调试器驱动 ST-Link 驱动 J-Link 驱动 建立工程模板 Core/ 核心代码 Drivers/ 驱动库 MDK-ARM/ 工程 README.md

2.8 验证环境是否通顺

环境装完别急着关电脑。我建议你走一遍完整的流程:

  1. 打开IDE,加载刚才建的模板工程。
  2. 点编译(Build),确认0错误0警告。
  3. 插上开发板,连接调试器。
  4. 点下载(Download),看能不能烧进去。
  5. 点调试(Debug),看能不能停在main函数第一行。

如果这五步都过了,恭喜你,环境搭建完成。如果卡在哪一步,别慌——99%的情况是驱动没装对或者调试器没选对。回去检查一下设备管理器,或者换个USB口试试。

最后说一句:环境搭建是固件开发的第一道坎,跨过去后面就顺了。我当年第一次装Keil,折腾了整整一个下午,最后发现是杀毒软件把驱动给拦截了。嗯,这种破事你以后也会遇到的——别急,慢慢排查,总能搞定。