3. 嵌入式开发环境搭建:Keil/Arduino IDE安装、编译器配置、调试器(J-Link/ST-Link)连接
好,咱们正式开始动手了。座椅位置记忆系统说到底是个嵌入式项目,你得先把吃饭的家伙——开发环境——给支棱起来。这一章我带你走一遍 Keil 和 Arduino IDE 的安装流程,顺便把编译器配置和调试器连接也讲清楚。
我个人习惯是:STM32 主控用 Keil,辅助调试或快速原型用 Arduino IDE。两个环境各有千秋,咱们都装上,后面写代码时你就能体会到为什么了。
3.1 Keil MDK 安装与配置
Keil 是 ARM 生态里最主流的 IDE 之一。说白了,它就是给 Cortex-M 内核单片机写代码的标配工具。我当年第一次用 Keil 时,被它的 License 激活折腾了半小时……嗯,这里我帮你把坑填平。
3.1.1 下载与安装
- 去 Keil 官网下载 MDK-Arm 版本(目前最新是 5.38 或更高)。
- 双击安装包,一路 Next。注意安装路径不要带中文。
- 安装完成后,桌面会出现 uVision 图标。
3.1.2 编译器配置
Keil 默认自带 ARM Compiler 5 和 6。我个人推荐用 ARM Compiler 5,为什么?因为兼容性好,很多老项目都是用 v5 编译的。我在项目中遇到过用 v6 编译报一堆警告的情况,后来切回 v5 就安静了。
配置步骤:
- 打开 uVision,点击
Project→Options for Target。 - 切换到
Target标签页,在ARM Compiler下拉框中选择Use default compiler version 5。 - 点击
C/C++标签页,在Optimization里选择Level 0 (-O0)(调试阶段用,发布时再改高)。
Device 标签页里选对芯片型号。选错了,下载程序会直接报错。我刚开始时吃过这个亏。3.1.3 调试器连接(J-Link / ST-Link)
调试器就是你的眼睛。没有它,你只能靠串口打印猜问题。有了它,你可以单步执行、看寄存器值、设断点。
J-Link 连接步骤:
- 把 J-Link 的 SWD 接口接到板子上:SWDIO、SWCLK、GND、VCC(3.3V)。
- 在 Keil 里点击
Project→Options for Target→Debug标签页。 - 选择
J-LINK / J-TRACE Cortex,点击Settings。 - 在
Debug选项卡里,Port选SW(不是 JTAG),Max Clock选 4MHz 或 10MHz。 - 点击
Flash Download标签页,勾选Reset and Run。
ST-Link 连接步骤:
- ST-Link 是 ST 官方调试器,用法类似。在 Debug 标签页里选择
ST-Link Debugger。 - Settings 里同样选 SW 模式,时钟频率建议 4MHz(太高可能不稳定)。
- 注意:ST-Link 的固件版本要更新到最新。我遇到过 ST-Link 连不上板子,后来发现是固件太旧了。
3.2 Arduino IDE 安装与配置
Arduino IDE 虽然看起来简陋,但做快速原型验证特别方便。咱们的座椅记忆系统里,有些传感器调试我习惯先用 Arduino 跑通,再移植到 Keil 工程里。
3.2.1 下载与安装
- 去 Arduino 官网下载最新版 IDE(目前是 2.x 版本)。
- 安装时选择完整安装,会自动装好 USB 驱动。
- 打开 IDE,界面很清爽,没有 Keil 那么复杂。
3.2.2 添加 STM32 支持包
Arduino 原生不支持 STM32,需要手动添加板级支持包。我个人推荐用 STM32duino 或 STMicroelectronics 官方包。
步骤:
- 点击
文件→首选项,在附加开发板管理器网址里填入:
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json - 点击
工具→开发板→开发板管理器,搜索 "STM32"。找到STM32 Cores并安装。 - 安装完成后,在
工具→开发板里就能看到STM32F1系列了。
3.2.3 编译器与上传设置
Arduino IDE 的编译器是内置的,不需要单独配置。但上传方式要选对:
- 在
工具→Upload method里,选择STM32CubeProgrammer (DFU)或Serial。 - 如果你用 ST-Link 调试器,选
STM32CubeProgrammer (SWD)。 - 波特率默认 115200,不用改。
Serial.println() 打印传感器数据,实时看效果。这在 Keil 里反而麻烦些。3.3 调试器连接实战
光说不练假把式。咱们拿一块 STM32F103C8T6 最小系统板,实际连一下调试器。
3.3.1 硬件接线表
| 调试器引脚 | STM32 引脚 | 说明 |
|---|---|---|
| SWDIO | PA13 (SWDIO) | 数据线 |
| SWCLK | PA14 (SWCLK) | 时钟线 |
| GND | GND | 共地 |
| VCC (3.3V) | 3.3V | 供电(可选) |
接线时注意:SWDIO 和 SWCLK 不要接反。我曾经有一次接反了,Keil 一直报 "No Cortex-M SW Device Found",排查了半小时才发现是线序错了。
3.3.2 验证连接
在 Keil 里点击 Debug → Start/Stop Debug Session。如果一切正常,你会看到寄存器窗口和反汇编窗口。这时候你可以单步执行,看程序怎么跑的。
在 Arduino IDE 里,点击 工具 → 串口监视器,如果能看到 "Hello from STM32" 之类的打印信息,说明环境搭建成功了。
好,这一章就到这儿。下一章咱们开始写真正的代码——座椅位置传感器的驱动。到时候你会用上今天装好的工具链。