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

  1. 去 Keil 官网下载 MDK-Arm 版本(目前最新是 5.38 或更高)。
  2. 双击安装包,一路 Next。注意安装路径不要带中文。
  3. 安装完成后,桌面会出现 uVision 图标。
注意: Keil 的免费版有 32KB 代码限制。咱们的座椅记忆系统代码量不大,32KB 够用。但如果你以后做更复杂的项目,建议买个 License 或者用社区版破解(你懂的)。

3.1.2 编译器配置

Keil 默认自带 ARM Compiler 5 和 6。我个人推荐用 ARM Compiler 5,为什么?因为兼容性好,很多老项目都是用 v5 编译的。我在项目中遇到过用 v6 编译报一堆警告的情况,后来切回 v5 就安静了。

配置步骤:

  1. 打开 uVision,点击 ProjectOptions for Target
  2. 切换到 Target 标签页,在 ARM Compiler 下拉框中选择 Use default compiler version 5
  3. 点击 C/C++ 标签页,在 Optimization 里选择 Level 0 (-O0)(调试阶段用,发布时再改高)。
小技巧: 如果你用的是 STM32F103 系列,记得在 Device 标签页里选对芯片型号。选错了,下载程序会直接报错。我刚开始时吃过这个亏。

3.1.3 调试器连接(J-Link / ST-Link)

调试器就是你的眼睛。没有它,你只能靠串口打印猜问题。有了它,你可以单步执行、看寄存器值、设断点。

J-Link 连接步骤:

  1. 把 J-Link 的 SWD 接口接到板子上:SWDIO、SWCLK、GND、VCC(3.3V)。
  2. 在 Keil 里点击 ProjectOptions for TargetDebug 标签页。
  3. 选择 J-LINK / J-TRACE Cortex,点击 Settings
  4. Debug 选项卡里,PortSW(不是 JTAG),Max Clock 选 4MHz 或 10MHz。
  5. 点击 Flash Download 标签页,勾选 Reset and Run

ST-Link 连接步骤:

  1. ST-Link 是 ST 官方调试器,用法类似。在 Debug 标签页里选择 ST-Link Debugger
  2. Settings 里同样选 SW 模式,时钟频率建议 4MHz(太高可能不稳定)。
  3. 注意:ST-Link 的固件版本要更新到最新。我遇到过 ST-Link 连不上板子,后来发现是固件太旧了。
关键点: 不管用 J-Link 还是 ST-Link,接线时一定要确认 GND 连通。很多调试失败的原因就是地线没接好。你想想看,信号回路都没形成,怎么通信?

3.2 Arduino IDE 安装与配置

Arduino IDE 虽然看起来简陋,但做快速原型验证特别方便。咱们的座椅记忆系统里,有些传感器调试我习惯先用 Arduino 跑通,再移植到 Keil 工程里。

3.2.1 下载与安装

  1. 去 Arduino 官网下载最新版 IDE(目前是 2.x 版本)。
  2. 安装时选择完整安装,会自动装好 USB 驱动。
  3. 打开 IDE,界面很清爽,没有 Keil 那么复杂。

3.2.2 添加 STM32 支持包

Arduino 原生不支持 STM32,需要手动添加板级支持包。我个人推荐用 STM32duinoSTMicroelectronics 官方包

步骤:

  1. 点击 文件首选项,在 附加开发板管理器网址 里填入:
    https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
  2. 点击 工具开发板开发板管理器,搜索 "STM32"。找到 STM32 Cores 并安装。
  3. 安装完成后,在 工具开发板 里就能看到 STM32F1系列 了。
注意: 安装过程需要联网下载,大概 100MB 左右。如果下载慢,可以挂个代理或者换个时间段。我曾在客户现场用手机热点下载,等了快半小时……

3.2.3 编译器与上传设置

Arduino IDE 的编译器是内置的,不需要单独配置。但上传方式要选对:

  1. 工具Upload method 里,选择 STM32CubeProgrammer (DFU)Serial
  2. 如果你用 ST-Link 调试器,选 STM32CubeProgrammer (SWD)
  3. 波特率默认 115200,不用改。
小技巧: 用 Arduino IDE 调试时,串口监视器特别好用。你可以在代码里加 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 里点击 DebugStart/Stop Debug Session。如果一切正常,你会看到寄存器窗口和反汇编窗口。这时候你可以单步执行,看程序怎么跑的。

在 Arduino IDE 里,点击 工具串口监视器,如果能看到 "Hello from STM32" 之类的打印信息,说明环境搭建成功了。

核心总结: 环境搭建其实就三步——装 IDE、配编译器、连调试器。别被那些复杂的选项吓到。你想想看,当年我刚开始学的时候,连 SWD 和 JTAG 都分不清,现在不也过来了?慢慢来,多试几次就熟了。

好,这一章就到这儿。下一章咱们开始写真正的代码——座椅位置传感器的驱动。到时候你会用上今天装好的工具链。