2、开发环境搭建:nRF5 SDK安装、Keil/IAR配置、J-Link调试器设置、Python虚拟环境配置

好,咱们正式开始动手了。

这一章,说白了就是「把家伙事儿备齐」。我见过太多学员,代码写得挺溜,结果卡在环境搭建上,一卡就是半天。你想想看,工具链没配好,后面再牛的协议栈也跑不起来。

所以,咱们一步一步来。我按自己的习惯,把环境搭建拆成四个部分:SDK、IDE、调试器、Python。每个部分我都会讲清楚「为什么这么配」以及「我踩过的坑」。

2.1 nRF5 SDK安装——别下错版本

先讲SDK。nRF5 SDK是Nordic官方提供的软件开发包,里面包含了蓝牙协议栈、外设驱动、例程代码等等。

我个人习惯用nRF5_SDK_17.1.0。为什么是这个版本?因为它是最后一个支持nRF52832和nRF52840的稳定版本,后续的SDK转向了nRF Connect SDK(基于Zephyr)。如果你做传统蓝牙开发,17.1.0最稳。

⚠️ 注意: 别去官网下最新版!最新版是nRF Connect SDK,架构完全不同。咱们课程用的是nRF5 SDK,别搞混了。

安装步骤其实很简单:

  1. 去Nordic官网下载nRF5_SDK_17.1.0_xx(xx是版本号)
  2. 解压到纯英文路径,比如 C:\nRF5_SDK\
  3. 路径里不要有中文、空格、特殊符号

我曾经有个学员,把SDK解压到了「桌面\新建文件夹」,结果编译死活报错。查了半天,原来是路径里的中文导致编译器找不到头文件。嗯,这里要注意,嵌入式工具链对路径很敏感。

2.2 Keil/IAR配置——选哪个?

IDE这块,我建议你二选一。Keil MDK和IAR Embedded Workbench都能用,但各有千秋。

对比项 Keil MDK IAR EWARM
上手难度 较低,界面友好 稍高,但功能强大
编译速度 中等 较快
代码优化 一般 优化能力强
调试体验 配合J-Link很流畅 同样支持J-Link
价格 有免费版(32KB限制) 有试用版

我个人推荐Keil,因为咱们课程用的例程大部分都是Keil工程。你如果非要用IAR,也可以,但得自己移植工程文件,有点折腾。

Keil配置要点

安装Keil后,需要做两件事:

  1. 安装Device Family Pack:打开Keil,点「Pack Installer」,搜索nRF52832或nRF52840,安装对应的DFP包
  2. 配置编译选项:在工程选项里,把优化等级设为-O0(调试阶段用),后面再调高
💡 小技巧: 我第一次用Keil时,编译报错说找不到core_cm4.h。其实就是DFP没装全。你装完DFP后,记得重启Keil。

2.3 J-Link调试器设置——别插错线

调试器这块,J-Link是标配。不管是正版还是山寨版,只要驱动装对了,都能用。

设置步骤:

  1. 安装J-Link驱动(SEGGER官网下载,最新版就行)
  2. 连接硬件:J-Link的SWD接口接目标板,注意VCC、GND、SWDIO、SWCLK四根线
  3. 打开J-Link Commander,输入connect,选择设备型号,测试连接
⚠️ 警告: 千万别把SWDIO和SWCLK接反了!我刚开始做项目时,有一次接反了线,J-Link直接冒烟了。嗯,那根线烧了,板子倒没事。从那以后,我每次接线前都会用万用表量一遍。

连接成功后,你会看到类似这样的输出:

SEGGER J-Link Commander V7.80
Connected to J-Link
Device "NRF52832_XXAA" selected.
TotalIRLen = 4, IRPrint = 0x001
Found SWD-DP with ID 0x2BA01477

看到这个,说明调试器已经通了。

2.4 Python虚拟环境配置——为了数据分析

你可能好奇:做嵌入式开发,为什么要配Python环境?

因为咱们后面要解析血糖仪的数据包,还要做可视化分析。Python的struct库、matplotlib库,处理二进制数据非常方便。

我建议用虚拟环境,别把包装到系统Python里。为什么?因为项目多了,依赖会打架。我曾经在一个项目里装了numpy 1.19,另一个项目需要1.24,结果两个项目互相影响,折腾了我一下午。

配置步骤:

  1. 安装Python 3.8+(推荐3.10,兼容性好)
  2. 打开终端,进入项目目录,执行:
python -m venv venv
  1. 激活虚拟环境:
# Windows
venv\Scripts\activate

# macOS/Linux
source venv/bin/activate
  1. 安装依赖:
pip install pyserial numpy matplotlib
💡 提示: 如果你用VS Code,可以装Python插件,然后选择虚拟环境作为解释器。这样你写代码时,代码补全和调试都会自动用虚拟环境里的包。

2.5 验证环境——跑个例程试试

环境搭完了,怎么知道对不对?跑个例程验证一下。

打开SDK里的examples\ble_peripheral\ble_app_uart工程,用Keil编译,下载到板子上。如果板子上的LED开始闪烁,说明环境没问题。

我习惯在调试前先跑这个例程,因为它包含了蓝牙广播、串口服务、LED控制,基本覆盖了咱们后面要用到的功能。如果这个例程能跑通,后面90%的问题都不会是环境问题。

📌 本章小结:

  • nRF5 SDK用17.1.0版本,路径别带中文
  • Keil比IAR更适合入门,记得装DFP包
  • J-Link接线别接反,SWDIO和SWCLK要分清
  • Python虚拟环境用venv,避免依赖冲突

好,环境搭建就到这儿。下一章咱们开始讲蓝牙协议栈的初始化流程,那才是真正的硬核内容。