2. 开发环境搭建:Keil MDK / ESP-IDF 安装与配置、串口驱动安装、调试工具(J-Link/ST-Link)配置、版本控制(Git)入门
说实话,做医疗嵌入式开发,环境搭建这一步最容易被轻视。我见过不少新手,急着写代码,结果卡在编译报错、下载器连不上、串口乱码这些基础问题上,一折腾就是半天。这一章,咱们就把这些坑提前填上。
我会带你走一遍 Keil MDK 和 ESP-IDF 的安装流程,搞定串口驱动,配好 J-Link 和 ST-Link,最后再聊聊 Git 的基本用法。这些东西,说白了就是你的工具箱。工具顺手,活儿才能干得快。
2.1 Keil MDK 安装与配置
Keil MDK 是 ARM Cortex-M 系列芯片的主流 IDE,尤其在 STM32 生态里,几乎是标配。我个人习惯用 MDK 5.38 版本,稳定,对 CMSIS 包的支持也最全。
安装步骤
- 下载安装包:从 ARM 官网或 Keil 官网获取 MDK-ARM 安装程序。注意区分版本,别下成 C51 了。
- 运行安装:一路 Next,路径建议不要有中文和空格。我一般放在
C:\Keil_v5。 - 安装器件包:打开 Pack Installer,找到你的芯片型号(比如 STM32F103C8),点击 Install。这一步很多人会忘,结果编译时找不到头文件。
- 注册 License:如果你有正版 License,在 File → License Management 里添加。没有的话,评估版也能用,就是代码限制 32KB。
项目配置要点
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| Target → ARM Compiler | Use default compiler version 6 | AC6 编译更快,优化更好 |
| Output → Select Folder for Objects | .\Objects | 把中间文件单独放,保持项目根目录干净 |
| Debug → Use Simulator / Use J-Link | 根据调试器选择 | 仿真器用于无硬件调试,J-Link 用于实际硬件 |
| C/C++ → Optimize | Level 0 (-O0) 调试阶段 | 发布时再改到 Level 2 (-O2) |
2.2 ESP-IDF 安装与配置
如果你用乐鑫的 ESP32 系列做医疗设备的前端采集或无线传输,那 ESP-IDF 是绕不开的。它不像 Keil 那样一键安装,需要走命令行,但熟悉之后会发现它很灵活。
安装方式对比
| 方式 | 适用场景 | 难度 |
|---|---|---|
| ESP-IDF 离线安装器 | Windows 用户,新手推荐 | 低 |
| VS Code + ESP-IDF 插件 | 习惯 VS Code 的开发者 | 中 |
| 手动安装(pip + git clone) | Linux/Mac 用户,或需要定制版本 | 高 |
我个人推荐用 VS Code 插件方式。原因很简单:代码补全、调试、串口监视器都集成在一起,不用来回切窗口。
快速安装步骤(VS Code 插件版)
- 安装 VS Code,然后搜索并安装 ESP-IDF Extension。
- 按
Ctrl+Shift+P,输入ESP-IDF: Configure ESP-IDF Extension。 - 选择 Express 模式,插件会自动下载 ESP-IDF 工具链和 Python 环境。
- 等待下载完成。这个过程大概 10-20 分钟,取决于网速。
- 完成后,打开命令面板,运行
ESP-IDF: Show Examples Projects,随便选一个 hello_world 编译试试。
2.3 串口驱动安装
串口是嵌入式开发最常用的通信接口。调试信息打印、AT 指令交互、固件下载,都离不开它。但串口驱动装不好,设备管理器里就只会显示一个黄色感叹号。
常见 USB 转串口芯片及驱动
| 芯片型号 | 常见设备 | 驱动下载 |
|---|---|---|
| CH340/CH341 | 国产开发板、USB 转串口模块 | 沁恒官网 |
| CP2102/CP2104 | Silicon Labs 方案,很多商用板在用 | Silicon Labs 官网 |
| FT232 | FTDI 经典芯片,稳定但贵 | FTDI 官网 |
| PL2303 | 早期设备常见,兼容性一般 | Prolific 官网 |
安装步骤
- 插上 USB 转串口模块或开发板。
- 打开设备管理器(Win + X → 设备管理器)。
- 找到带黄色感叹号的 "未知设备" 或 "Ports" 下的设备。
- 右键 → 更新驱动程序 → 浏览我的电脑 → 选择驱动文件夹。
- 安装完成后,在 "端口 (COM 和 LPT)" 下会看到对应的 COM 口编号。
2.4 调试工具配置(J-Link / ST-Link)
调试器是嵌入式开发的"听诊器"。没有它,你只能靠 printf 猜问题。有了它,你可以看寄存器、设断点、单步执行,效率完全不一样。
J-Link 配置
J-Link 是 SEGGER 公司的产品,支持几乎所有 ARM Cortex 内核芯片。我手头常备一个 J-Link EDU,性价比很高。
- 安装驱动:从 SEGGER 官网下载 J-Link Software and Documentation Pack。安装后会自动包含驱动。
- 连接硬件:J-Link 的 20-pin JTAG/SWD 接口,一般接 SWDIO、SWCLK、GND、VCC(3.3V)四根线就行。
- 验证连接:打开 J-Link Commander(JLink.exe),输入
connect,选择设备型号,如果显示 "Connected successfully",就说明通了。 - 在 Keil 中配置:项目选项 → Debug → Use J-Link/J-Trace → Settings,确认 SWD 模式,速度建议先设 1MHz,稳定后再往上调。
ST-Link 配置
ST-Link 是 ST 官方调试器,买 STM32 开发板基本都自带。它的配置比 J-Link 简单,但功能也少一些。
- 安装驱动:ST-Link 驱动集成在 STM32CubeProgrammer 或 Keil 的安装包里。如果设备管理器不识别,单独装一下 ST-Link 驱动即可。
- 连接硬件:同样用 SWD 接口,注意 ST-Link 的 VCC 输出是 3.3V,别接到 5V 上。
- 在 Keil 中配置:项目选项 → Debug → Use ST-Link Debugger → Settings,确认 SWD 连接正常。
ASSERT(adc_value < 4096),如果条件不满足,直接停在断点处。这样比看日志快得多。J-Link 的 RTT 功能也很好用,可以在不占用串口的情况下输出日志,推荐试试。
2.5 版本控制(Git)入门
做医疗嵌入式项目,代码版本管理不是可选项,是必需品。FDA 审核、CE 认证,都要求你提供完整的代码变更记录。Git 就是干这个的。
Git 基础概念
| 概念 | 说明 | 类比 |
|---|---|---|
| 仓库 (Repository) | 存放项目代码和版本历史的地方 | 一个项目的文件夹 |
| 提交 (Commit) | 一次代码快照,包含变更说明 | 拍照存档 |
| 分支 (Branch) | 独立的开发线,互不干扰 | 平行宇宙 |
| 合并 (Merge) | 把两个分支的改动合到一起 | 汇合两条河流 |
| 远程仓库 (Remote) | 托管在服务器上的仓库,比如 GitHub | 云盘备份 |
嵌入式项目 Git 工作流
我推荐一个简单的流程,适合 1-3 人的小团队:
- 主分支 (main):只放经过测试的稳定版本。每次发布前,打一个 tag,比如
v1.0.0。 - 开发分支 (develop):日常开发在这里进行。功能完成后,合并到 main。
- 功能分支 (feature/xxx):每个新功能开一个分支,比如
feature/adc-calibration。开发完合并到 develop 后删除。 - 修复分支 (fix/xxx):紧急 bug 修复,直接从 main 拉分支,修完合并回 main 和 develop。
常用 Git 命令
# 初始化仓库
git init
# 添加文件到暂存区
git add main.c
git add . # 添加所有文件
# 提交代码
git commit -m "feat: 添加 ADC 初始化代码"
# 查看状态
git status
# 创建并切换分支
git checkout -b feature/temperature-sensor
# 合并分支
git checkout develop
git merge feature/temperature-sensor
# 推送到远程仓库
git push origin develop
# 拉取最新代码
git pull origin develop
feat: 添加心率算法、fix: 修复 SPI 时钟极性错误、docs: 更新 API 文档。这样后期看日志,一目了然。
git status 确认当前分支,再 git checkout -b 新建分支。永远不要在 main 上直接改。