2. 开发环境搭建:Keil MDK / Arduino IDE 安装与配置、交叉编译工具链、驱动安装与调试、工程模板创建

说实话,搞嵌入式开发这么多年,我见过太多人卡在环境搭建这一步了。工具链没配好,驱动没装对,折腾一整天连个灯都点不亮。嗯,这节课咱们就把这些坑一个个填平。

2.1 为什么需要两套开发环境?

你可能要问:一套工具不够用吗?我个人的习惯是,根据项目阶段选工具。

  • Keil MDK:专业级IDE,适合STM32等ARM Cortex-M内核芯片。调试功能强,代码优化好。我在做工业级采集终端时,基本都用它。
  • Arduino IDE:入门快,生态好。适合快速原型验证、教学演示。说白了,你想3分钟点个灯,Arduino最合适。

咱们这个课程,两套环境都会用到。Keil负责正式项目,Arduino负责快速验证。你想想看,这样是不是很灵活?

核心逻辑:Keil MDK 用于生产级代码开发,Arduino IDE 用于快速原型验证。两者互补,不是替代关系。

开发环境搭建知识体系 嵌入式行情数据采集系统 Keil MDK 环境 安装与注册 交叉编译工具链配置 Arduino IDE 环境 安装与板卡管理 驱动安装与调试 工程模板创建

2.2 Keil MDK 安装与配置

Keil MDK 的安装其实不复杂,但有几个细节容易踩坑。我曾经帮一个学员远程调试,他装了3次都编译报错,最后发现是路径里有中文。嗯,这里要特别注意。

2.2.1 下载与安装

  1. 去 Keil 官网下载 MDK-ARM 最新版本(目前是 V5.38)
  2. 双击安装包,一路 Next。但注意:安装路径不要有中文和空格
  3. 安装完成后,桌面会出现 uVision 图标

警告:安装路径建议用纯英文,比如 D:\Keil_v5。我之前见过有人装在「D:\开发工具\Keil」这种路径,结果编译时链接器报错,折腾了半天才发现是中文路径的问题。

2.2.2 注册与激活

Keil MDK 需要许可证才能编译超过 32KB 的代码。咱们做行情采集系统,代码量肯定超过这个数,所以必须激活。

  • 打开 uVision,点击 File → License Management
  • 复制 CID 码,用注册机生成激活码
  • 粘贴激活码,点击 Add License

小技巧:注册机最好以管理员身份运行。我遇到过几次注册机打不开的情况,右键「以管理员身份运行」就解决了。

2.3 交叉编译工具链配置

说白了,交叉编译就是在 PC 上编译出能在 ARM 芯片上运行的代码。Keil 自带 ARMCC 编译器,但我们需要配置一下才能用。

2.3.1 ARMCC 编译器配置

打开 uVision,点击 Project → Manage → Project Components。在 Folders/Extensions 标签页中,确认编译器路径是否正确。

// 默认编译器路径示例
C:\Keil_v5\ARM\ARMCC\bin\armcc.exe
C:\Keil_v5\ARM\ARMCC\bin\armlink.exe

2.3.2 添加芯片支持包

咱们用的 STM32F103 系列,需要安装对应的 Device Family Pack。点击 Pack Installer 图标,搜索 STM32F1,点击 Install。

重点:没有芯片支持包,Keil 就认不出你的芯片型号。编译时会报错:Target not created。我刚开始学的时候,卡在这步整整一下午。

2.4 Arduino IDE 安装与配置

Arduino IDE 就简单多了。说白了,它就是给非专业人士准备的。但咱们做嵌入式开发,用它来做快速原型验证,效率很高。

2.4.1 下载与安装

  • 去 Arduino 官网下载最新版 IDE(目前是 2.x 版本)
  • 双击安装,一路默认即可。路径可以有中文,但我不建议
  • 安装完成后,桌面出现 Arduino 图标

2.4.2 添加 STM32 支持

Arduino 原生不支持 STM32,需要手动添加板卡支持包。

  1. 打开 Arduino IDE,点击 File → Preferences
  2. 在 Additional Boards Manager URLs 中添加:
    https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
  3. 点击 Tools → Board → Boards Manager,搜索 STM32,安装

小技巧:这个 JSON 链接可能会被墙。如果下载失败,可以用手机热点试试。我上次在客户现场就是靠手机热点搞定的。

2.5 驱动安装与调试

环境搭好了,板子插上电脑没反应?别急,驱动没装对。我见过太多人卡在这一步了。

2.5.1 ST-Link 驱动安装

咱们用 STM32 开发板,调试器是 ST-Link。需要安装驱动才能识别。

  • 下载 ST-Link 驱动(在 Keil 安装目录下就有:C:\Keil_v5\ARM\STLink\USBDriver)
  • 双击 dpinst_amd64.exe(64位系统)或 dpinst_x86.exe(32位系统)
  • 安装完成后,插上开发板,设备管理器里应该能看到 STMicroelectronics STLink dongle

注意:如果设备管理器里显示黄色感叹号,说明驱动没装好。右键点击,选择「更新驱动程序」→「浏览我的电脑」→ 手动选择驱动文件夹。我曾经遇到过 Win10 自动更新驱动导致不兼容的情况,最后手动指定旧版驱动才解决。

2.5.2 CH340 串口驱动

很多 STM32 开发板用 CH340 芯片做 USB 转串口。这个驱动也很容易出问题。

  • 下载 CH340 驱动(网上搜一下就有,注意别下到带病毒的)
  • 安装后,插上板子,设备管理器里会出现 COM 端口
  • 记下端口号,比如 COM3,后面烧录和串口通信要用

2.6 工程模板创建

每次新建项目都从头配置?太浪费时间了。我个人的习惯是,做好一个模板,以后直接复制。

2.6.1 Keil MDK 工程模板

  1. 新建一个文件夹,比如 STM32_Template
  2. 在里面创建子文件夹:User、Drivers、Startup、Output
  3. 打开 Keil,新建工程,选择芯片型号(STM32F103C8)
  4. 添加启动文件、系统文件、主函数模板
// 工程目录结构示例
STM32_Template/
├── User/          // 用户代码
│   ├── main.c
│   └── stm32f1xx_it.c
├── Drivers/       // 驱动文件
│   ├── inc/
│   └── src/
├── Startup/       // 启动文件
│   └── startup_stm32f103xb.s
└── Output/        // 编译输出
    └── .axf

2.6.2 Arduino 工程模板

Arduino 的模板更简单。说白了,就是保存一个 .ino 文件,里面写好 setup() 和 loop() 函数。

// Arduino 模板示例
void setup() {
  // 初始化串口
  Serial.begin(115200);
  // 初始化引脚
  pinMode(PC13, OUTPUT);
}

void loop() {
  // 主循环
  digitalWrite(PC13, HIGH);
  delay(1000);
  digitalWrite(PC13, LOW);
  delay(1000);
}

建议:把模板保存到云盘或 GitHub 上。我每次换电脑,第一件事就是拉取模板。省去了重复配置的时间,你想想看,是不是很高效?

2.7 验证环境是否搭建成功

环境搭好了,怎么知道能不能用?写个点灯程序试试。

  • Keil 工程:编译下载,看板子上的 LED 是否闪烁
  • Arduino 工程:上传代码,看串口监视器是否打印信息

如果灯亮了,恭喜你,环境搭建成功。如果没亮,别急,按下面步骤排查:

  1. 检查驱动是否安装正确(设备管理器里有没有感叹号)
  2. 检查芯片型号是否选对(STM32F103C8 还是 C6?)
  3. 检查烧录器连接是否牢固(ST-Link 的四根线:SWDIO、SWCLK、GND、3.3V)

避坑指南:我曾经有一次怎么都烧录不进去,折腾了两小时,最后发现是 ST-Link 的杜邦线接触不良。换了一根线就好了。所以,硬件问题先检查连接线。

好了,环境搭建就到这里。记住,工具是死的,人是活的。多动手,多踩坑,慢慢就熟练了。


公众号:蓝海资料掘金营,微信deep3321