2. 开发环境搭建:Keil MDK安装、STM32CubeMX配置、J-Link驱动安装

好,咱们正式开始动手。这一章要解决的是「工欲善其事,必先利其器」的问题。说白了,就是把电脑武装成一台能写、能编、能烧录的嵌入式工作站。

我见过不少新手,代码写得挺溜,结果卡在环境搭建上,一卡就是半天。嗯,这里咱们一步步来,把坑提前填上。

2.1 Keil MDK 安装:别选错版本

Keil MDK,全称是 Microcontroller Development Kit。咱们做 STM32 开发,用的就是 MDK-ARM 版本。我个人习惯用 MDK 5.38 或更新的版本,但要注意——千万别下成 C51 版,那是给 8051 单片机用的,不兼容 ARM 内核。

⚠️ 避坑指南: 我曾经帮一个同事排查问题,折腾了两小时,最后发现他装的是 C51 版本。编译 STM32 工程时一堆莫名其妙的报错。所以,下载时一定看清「MDK-ARM」这几个字。

安装步骤

  1. 从 Keil 官网下载 MDK-ARM 安装包(需要注册账号,免费版有 32KB 代码限制,咱们做防水检测逻辑够用)。
  2. 双击安装,一路 Next。注意安装路径不要有中文或空格,我习惯放在 C:\Keil_v5
  3. 安装完成后,打开 Keil uVision,点击 File → License Management
  4. 输入你的 License ID Code(正版或教育版)。如果没有,先用评估版,32KB 限制对咱们这个项目来说不是问题。
💡 小技巧: 安装完成后,建议顺手装一个 ARM Compiler 6。Keil 默认带的是 Compiler 5,但 Compiler 6 编译速度更快,代码优化也更好。在 Pack Installer 里就能找到。

2.2 STM32CubeMX 配置:图形化生成初始化代码

STM32CubeMX 是 ST 官方出的图形化配置工具。你想想看,以前配个时钟树、管脚映射,得翻几百页数据手册。现在?鼠标点几下就搞定。我刚开始用的时候,真觉得这东西是「嵌入式开发者的福音」。

安装与配置

  1. 去 ST 官网下载 STM32CubeMX,同样需要注册账号。下载后解压就能用,不需要安装,直接双击 STM32CubeMX.exe
  2. 打开后,点击 Help → Manage embedded software packages,安装你需要的 STM32 系列包。咱们做防水检测,用的是 STM32F103 系列,所以勾选 STM32F1 并下载。
  3. 新建工程:点击 File → New Project,在搜索框输入 STM32F103C8(或者你手头板子的具体型号),双击选中。
🔧 关键配置点:
  • 时钟配置(RCC): 外部晶振选 HSE(高速外部时钟),咱们一般用 8MHz 晶振。然后进 Clock Configuration 页面,把 HCLK 拉到 72MHz——这是 STM32F103 的典型主频。
  • GPIO 配置: 防水检测需要两个 IO 口:一个输出(发送检测信号),一个输入(接收回波)。我习惯把输出脚设为推挽输出,输入脚设为浮空输入(或者上拉输入,看具体电路)。
  • 定时器配置: 检测逻辑需要精确计时,我会开一个 TIM2,设置预分频为 72-1(这样计数频率就是 1MHz,每微秒计一次),自动重装值设大一点,比如 0xFFFF。

配置完成后,点击 Project → Generate Code。这里要注意:Toolchain/IDE 一定要选 MDK-ARM,版本选 V5。然后点 Generate,CubeMX 就会自动生成 Keil 工程。

⚠️ 我曾经踩过的坑: 生成代码时,如果提示「Firmware Package 缺失」,别慌。回到 Help → Manage embedded software packages,检查 STM32F1 系列包是否安装完整。有时候网络不好,下载会中断,重新下载一次就好。

2.3 J-Link 驱动安装:让电脑认识你的调试器

J-Link 是 SEGGER 公司出的调试器,稳定、速度快。咱们做防水检测,调试时要用它来烧录程序、看变量值。驱动装不好,Keil 就认不出调试器。

安装步骤

  1. 去 SEGGER 官网下载 J-Link 驱动(J-Link Software and Documentation Pack)。
  2. 安装时,一路默认即可。安装完成后,插上 J-Link,电脑应该会提示「驱动安装成功」。
  3. 验证:打开设备管理器,在「通用串行总线控制器」或「J-Link」分类下,能看到 J-Link driver 字样。如果出现黄色感叹号,说明驱动没装好,右键更新驱动,手动指向安装目录下的驱动文件夹。
💡 个人经验: 我建议装完驱动后,打开 SEGGER 自带的 J-Link Commander(JLink.exe)。输入 connect,选择设备型号(比如 STM32F103C8),如果能正常连接并显示芯片信息,说明驱动和硬件都没问题。这一步能帮你排除很多硬件故障。

Keil 中配置 J-Link

打开 Keil 工程,点击 Project → Options for Target(或者魔法棒图标)。在 Debug 选项卡里:

  • 选择 J-LINK / J-TRACE Cortex
  • 点击 Settings,在 Debug 页面确认 Port 选的是 SW(串行线调试模式),Max Clock 选 4MHz 或更低(有些板子线长,频率高了会不稳定)。
  • 切换到 Flash Download 页面,点击 Add,选择你的芯片对应的 Flash 算法(比如 STM32F103C8 的 64KB Flash)。
✅ 验证环境是否搭建成功: 写一个最简单的程序——让 LED 灯闪烁。编译通过,点击 Download 按钮,如果 J-Link 灯闪烁几下,然后板子上的 LED 开始闪,恭喜你,环境搭建成功了!

2.4 小结:环境搭建的「三件套」

回顾一下,咱们今天干了三件事:

  • Keil MDK:写代码、编译的 IDE。
  • STM32CubeMX:图形化配置外设,生成初始化代码。
  • J-Link 驱动:让电脑和开发板能「对话」,烧录和调试全靠它。

这三样东西,就像咱们嵌入式工程师的「三件套」。缺一个,后面的防水检测逻辑就没法跑起来。我建议你装完后,花 10 分钟跑个 LED 闪烁程序,确认每个环节都通了,再往下走。

下一章,咱们就要开始写真正的防水检测逻辑了。到时候,你会用到今天配置的定时器和 GPIO。嗯,准备好了吗?