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最稳。
安装步骤其实很简单:
- 去Nordic官网下载nRF5_SDK_17.1.0_xx(xx是版本号)
- 解压到纯英文路径,比如
C:\nRF5_SDK\ - 路径里不要有中文、空格、特殊符号
我曾经有个学员,把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后,需要做两件事:
- 安装Device Family Pack:打开Keil,点「Pack Installer」,搜索nRF52832或nRF52840,安装对应的DFP包
- 配置编译选项:在工程选项里,把优化等级设为-O0(调试阶段用),后面再调高
2.3 J-Link调试器设置——别插错线
调试器这块,J-Link是标配。不管是正版还是山寨版,只要驱动装对了,都能用。
设置步骤:
- 安装J-Link驱动(SEGGER官网下载,最新版就行)
- 连接硬件:J-Link的SWD接口接目标板,注意VCC、GND、SWDIO、SWCLK四根线
- 打开J-Link Commander,输入
connect,选择设备型号,测试连接
连接成功后,你会看到类似这样的输出:
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,结果两个项目互相影响,折腾了我一下午。
配置步骤:
- 安装Python 3.8+(推荐3.10,兼容性好)
- 打开终端,进入项目目录,执行:
python -m venv venv
- 激活虚拟环境:
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate
- 安装依赖:
pip install pyserial numpy matplotlib
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,避免依赖冲突
好,环境搭建就到这儿。下一章咱们开始讲蓝牙协议栈的初始化流程,那才是真正的硬核内容。