2. 开发环境搭建:Keil MDK安装、STM32CubeMX配置、J-Link驱动安装
好,咱们正式开始动手。这一章要解决的是「工欲善其事,必先利其器」的问题。说白了,就是把电脑武装成一台能写、能编、能烧录的嵌入式工作站。
我见过不少新手,代码写得挺溜,结果卡在环境搭建上,一卡就是半天。嗯,这里咱们一步步来,把坑提前填上。
2.1 Keil MDK 安装:别选错版本
Keil MDK,全称是 Microcontroller Development Kit。咱们做 STM32 开发,用的就是 MDK-ARM 版本。我个人习惯用 MDK 5.38 或更新的版本,但要注意——千万别下成 C51 版,那是给 8051 单片机用的,不兼容 ARM 内核。
安装步骤
- 从 Keil 官网下载 MDK-ARM 安装包(需要注册账号,免费版有 32KB 代码限制,咱们做防水检测逻辑够用)。
- 双击安装,一路 Next。注意安装路径不要有中文或空格,我习惯放在
C:\Keil_v5。 - 安装完成后,打开 Keil uVision,点击
File → License Management。 - 输入你的 License ID Code(正版或教育版)。如果没有,先用评估版,32KB 限制对咱们这个项目来说不是问题。
2.2 STM32CubeMX 配置:图形化生成初始化代码
STM32CubeMX 是 ST 官方出的图形化配置工具。你想想看,以前配个时钟树、管脚映射,得翻几百页数据手册。现在?鼠标点几下就搞定。我刚开始用的时候,真觉得这东西是「嵌入式开发者的福音」。
安装与配置
- 去 ST 官网下载 STM32CubeMX,同样需要注册账号。下载后解压就能用,不需要安装,直接双击
STM32CubeMX.exe。 - 打开后,点击
Help → Manage embedded software packages,安装你需要的 STM32 系列包。咱们做防水检测,用的是 STM32F103 系列,所以勾选STM32F1并下载。 - 新建工程:点击
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 工程。
Help → Manage embedded software packages,检查 STM32F1 系列包是否安装完整。有时候网络不好,下载会中断,重新下载一次就好。
2.3 J-Link 驱动安装:让电脑认识你的调试器
J-Link 是 SEGGER 公司出的调试器,稳定、速度快。咱们做防水检测,调试时要用它来烧录程序、看变量值。驱动装不好,Keil 就认不出调试器。
安装步骤
- 去 SEGGER 官网下载 J-Link 驱动(J-Link Software and Documentation Pack)。
- 安装时,一路默认即可。安装完成后,插上 J-Link,电脑应该会提示「驱动安装成功」。
- 验证:打开设备管理器,在「通用串行总线控制器」或「J-Link」分类下,能看到
J-Link driver字样。如果出现黄色感叹号,说明驱动没装好,右键更新驱动,手动指向安装目录下的驱动文件夹。
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)。
2.4 小结:环境搭建的「三件套」
回顾一下,咱们今天干了三件事:
- Keil MDK:写代码、编译的 IDE。
- STM32CubeMX:图形化配置外设,生成初始化代码。
- J-Link 驱动:让电脑和开发板能「对话」,烧录和调试全靠它。
这三样东西,就像咱们嵌入式工程师的「三件套」。缺一个,后面的防水检测逻辑就没法跑起来。我建议你装完后,花 10 分钟跑个 LED 闪烁程序,确认每个环节都通了,再往下走。
下一章,咱们就要开始写真正的防水检测逻辑了。到时候,你会用到今天配置的定时器和 GPIO。嗯,准备好了吗?