艾克姆科技 
Nordic 多协议 Soc nRF52832 
开发教程 
[基于 Nordic  蓝牙低功耗/2.4GHz Soc-nRF52832] 
 
艾克姆科技飞宇团队 
[2017.2.2] 
官方店铺:https://acmemcu.taobao.com 
官方论坛:http://930ebbs.com   
艾克姆科技原创发布 
本文档技术支持负责人:强光手电 
 
 
 
 
 
 
 
 
 
 
 
 
 
[本文档以艾克姆科技 IK-52832DK 开发套件为硬件平台,通过原理分析和实验程序讲解
以及实验演示,让读者以最短的时间掌握 nRF52832 的开发] 
 
 
修订历史记录 
Revision Records 
日期 
版本 
编制 
审核 
说明 
Date 
Version 
Written By 
Checked By 
Explanation 
2017.2.2 
A 
强光手电 
飞宇 
初建 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
目录 
 
 
第一章:开发板硬件描述 ............................................................................................................. 10 
1.  功能特点 ................................................................................................................................. 10 
2.  硬件原理 ................................................................................................................................. 10 
nRF52832 特点 ....................................................................................................... 12 
2.1. 
电源 ......................................................................................................................... 13 
2.2. 
指示灯 ..................................................................................................................... 13 
2.3. 
按键和触摸按键 ..................................................................................................... 14 
2.4. 
蜂鸣器 ..................................................................................................................... 15 
2.5. 
电位器光敏检测 ..................................................................................................... 15 
2.6. 
红外接收 ................................................................................................................. 16 
2.7. 
显示模块接口 ......................................................................................................... 17 
2.8. 
Wifi 模块接口......................................................................................................... 17 
2.9. 
2.10.  温湿度和 PM2.5 检测模块接口 ............................................................................ 18 
2.11.  运动传感器模块接口 ............................................................................................. 18 
TF 卡和 NFC 天线接口 ......................................................................................... 19 
2.12. 
2.13.  调试接口 ................................................................................................................. 19 
3.  开发板硬件连接 ..................................................................................................................... 21 
第二章:开发工具 ......................................................................................................................... 22 
1.  硬件设备 ................................................................................................................................. 22 
2.  软件工具 ................................................................................................................................. 22 
第三章:集成开发环境 ................................................................................................................. 23 
1.  MDK 集成开发环境 .............................................................................................................. 23 
新建工程模板 ......................................................................................................... 23 
1.1.1.  规划工程目录 ................................................................................................. 23 
1.1.2.  新建工程 ......................................................................................................... 24 
配置工程 ................................................................................................................. 34 
1.2. 
编译工程 ................................................................................................................. 39 
1.3. 
程序烧写 ................................................................................................................. 40 
1.4. 
MDK 常用配置 ...................................................................................................... 40 
1.5. 
IAR 集成开发环境 ................................................................................................................. 42 
安装 SDK ................................................................................................................ 42 
2.1. 
使用 IAR ................................................................................................................. 43 
2.2. 
第四章:蓝牙 BLE 技术简介 ....................................................................................................... 46 
1.  蓝牙技术的起源 ..................................................................................................................... 46 
2.  什么是蓝牙低功耗(BLE) ...................................................................................................... 46 
蓝牙 4.0 和 BLE 的关系 ........................................................................................ 47 
蓝牙的三种标志和设备类型 ................................................................................. 47 
BLE 的体系结构 .................................................................................................... 49 
BLE 广播、事件和连接事件 ................................................................................ 53 
2.4.1.  广播事件 ......................................................................................................... 53 
2.4.2.  扫描事件 ......................................................................................................... 54 
2.4.3.  连接事件 ......................................................................................................... 54 
2.1. 
2.2. 
2.3. 
2.4. 
1.1. 
2. 
 
7.1. 
7.2. 
2.1. 
2.2. 
3.1. 
4.1. 
4.2. 
4.3. 
第五章:由 BLE 工程模板入手 ................................................................................................... 56 
1.  程序架构 ................................................................................................................................. 56 
2.  定时器初始化 ......................................................................................................................... 57 
原理和初始化方式 ................................................................................................. 57 
应用定时器相关函数 ............................................................................................. 60 
3.  板卡外设初始化 ..................................................................................................................... 63 
按键/指示灯初始化 ................................................................................................ 65 
bsp_init 代码分析 ........................................................................................... 65 
3.1.1. 
3.1.2.  消除按键抖动 ................................................................................................. 72 
BSP 相关函数 ................................................................................................. 76 
3.1.3. 
4.  BLE 协议栈初始化 ................................................................................................................ 79 
初始化协议栈处理模块 ......................................................................................... 79 
使能 SoftDevice ...................................................................................................... 82 
注册事件派发函数 ................................................................................................. 85 
5.  配对管理器 ............................................................................................................................. 87 
6.  GAP 层初始化 ........................................................................................................................ 88 
7.  广播配置 ................................................................................................................................. 96 
广播参数配置 ......................................................................................................... 96 
7.1.1.  广播配置相关的函数 ..................................................................................... 96 
gap_params_init 函数中广播相关的内容 ..................................................... 97 
7.1.2. 
7.1.3.  广播初始化函数 advertising_init ................................................................... 98 
7.1.4.  启动广播 ....................................................................................................... 103 
广播数据包报文结构 ........................................................................................... 104 
8.  连接参数更新 ....................................................................................................................... 110 
第六章:创建一个应用定时器 ................................................................................................... 113 
1.  创建步骤 ............................................................................................................................... 113 
编写各个步骤的代码 ........................................................................................... 114 
下载验证 ............................................................................................................... 115 
第七章:由 BLE 工程模板实现蓝牙串口透传 ......................................................................... 116 
1.  实现步骤 ............................................................................................................................... 116 
2.  需要掌握的理论知识 ........................................................................................................... 117 
Profile、Service 和 Characteristic ........................................................................ 117 
3.  编写各个步骤的代码 ........................................................................................................... 120 
加入串口相关程序 ............................................................................................... 120 
3.1.1.  加入串口组件 ............................................................................................... 120 
3.1.2.  头文件包含 ................................................................................................... 122 
3.1.3.  修改 SDK 配置文件 ..................................................................................... 124 
3.1.4.  编写串口代码 ............................................................................................... 125 
加入服务和特征 ................................................................................................... 128 
3.2.1.  加入流程 ....................................................................................................... 128 
3.2.2.  声明服务结构体 ........................................................................................... 130 
3.2.3.  初始化服务 ................................................................................................... 131 
3.2.4.  向协议栈中写入服务的 UUID .................................................................... 132 
3.2.5.  添加服务 ....................................................................................................... 135 
1.1. 
1.2. 
2.1. 
3.1. 
 
 
3.2. 
3.3. 
3.4. 
1.1. 
1.2. 
1.3. 
2.1. 
2.2. 
2.3. 
2.4. 
2.5. 
2.6. 
3.2.6.  向服务中添加特征 ....................................................................................... 136 
Nus 事件处理 ....................................................................................................... 141 
发送通知  (传输数据) .......................................................................................... 142 
4.  下载验证 ............................................................................................................................... 144 
第八章:FLASH 数据存储 ......................................................................................................... 154 
1.  裸机 FLASH 读写 ................................................................................................................ 154 
操作步骤 ............................................................................................................... 155 
代码分析 ............................................................................................................... 156 
下载测试 ............................................................................................................... 159 
2.  BLE 程序中 FLASH 操作 ................................................................................................... 160 
FDS 概述 .............................................................................................................. 160 
FDS 功能 .............................................................................................................. 161 
2.2.1.  记录的操作 ................................................................................................... 161 
2.2.2.  记录的配置项目 ........................................................................................... 163 
记录存储格式 ....................................................................................................... 166 
重要的 API 函数 .................................................................................................. 167 
应用步骤 ............................................................................................................... 173 
实例编程演练 ....................................................................................................... 173 
2.6.1.  添加文件到工程 ........................................................................................... 173 
2.6.2.  添加头文件包含 ........................................................................................... 174 
2.6.3.  启用 FDS ...................................................................................................... 176 
2.6.4.  编写 FDS 功能代码 ..................................................................................... 176 
2.6.5.  下载验证 ....................................................................................................... 183 
第九章:GPIO 任务和事件(GPIOTE) ........................................................................................ 185 
1.  GPIOTE 原理 ....................................................................................................................... 185 
nRF52832 寄存器类型 ......................................................................................... 185 
GPIOTE 功能 ....................................................................................................... 185 
引脚 Tasks 和 Events ............................................................................................ 186 
PORT 事件 ............................................................................................................ 186 
相关寄存器 ........................................................................................................... 187 
2.  GPIOTE 驱动库的使用 ....................................................................................................... 189 
任务/事件通道的分配 .......................................................................................... 189 
重要的 API 函数 .................................................................................................. 189 
应用步骤 ............................................................................................................... 193 
GPIOTE 输出................................................................................................ 193 
GPIOTE 输入................................................................................................ 195 
3.  实例编程演练 ....................................................................................................................... 196 
GPIOTE 输出 ....................................................................................................... 196 
3.1.1.  添加文件到工程 ........................................................................................... 197 
3.1.2.  添加头文件包含路径 ................................................................................... 197 
3.1.3.  编写代码 ....................................................................................................... 199 
3.1.4.  下载验证 ....................................................................................................... 200 
GPIOTE 输入 ....................................................................................................... 201 
3.2.1.  添加文件及头文件 ....................................................................................... 201 
1.1. 
1.2. 
1.3. 
1.4. 
1.5. 
2.1. 
2.2. 
2.3. 
3.1. 
3.2. 
 
 
2.3.1. 
2.3.2. 
3.3. 
5.1. 
5.2. 
3.2.2.  编写代码 ....................................................................................................... 202 
3.2.3.  下载验证 ....................................................................................................... 203 
GPIOTE 唤醒系统................................................................................................ 205 
3.3.1.  添加文件及头文件 ....................................................................................... 206 
3.3.2.  编写代码 ....................................................................................................... 206 
3.3.3.  下载验证 ....................................................................................................... 208 
第十章:定时/计数器 Timer ....................................................................................................... 210 
1.  Timer 原理 ............................................................................................................................ 210 
2.  相关寄存器 ........................................................................................................................... 213 
3.  TIMER 应用步骤 ................................................................................................................. 214 
4.  重要的 API 函数 .................................................................................................................. 216 
5.  实例编程演练 ....................................................................................................................... 219 
定时驱动 LED 闪烁 ............................................................................................. 219 
5.1.1.  添加文件到工程 ........................................................................................... 219 
5.1.2.  添加头文件包含路径 ................................................................................... 220 
5.1.3.  编写代码 ....................................................................................................... 222 
5.1.4.  下载验证 ....................................................................................................... 223 
捕获外部脉冲 ....................................................................................................... 223 
5.2.1.  添加文件及头文件 ....................................................................................... 224 
5.2.2.  编写代码 ....................................................................................................... 224 
5.2.3.  下载验证 ....................................................................................................... 226 
第十一章:可编程外设互联 PPI ............................................................................................... 228 
1.  PPI 原理 ................................................................................................................................ 228 
什么是 PPI ............................................................................................................ 228 
预编程 PPI 通道 ................................................................................................... 230 
PPI 组 .................................................................................................................... 230 
2.  相关寄存器 ........................................................................................................................... 231 
3.  PPI 应用步骤 ........................................................................................................................ 234 
4.  重要的库函数 ....................................................................................................................... 240 
5.  实例编程演练 ....................................................................................................................... 243 
PPI 驱动 LED-寄存器方式 .................................................................................. 243 
5.1.1.  试验内容和功能 ........................................................................................... 243 
5.1.2.  编写代码 ....................................................................................................... 244 
5.1.3.  下载验证 ....................................................................................................... 246 
次级任务端点使用-寄存器方式.......................................................................... 246 
5.2.1.  试验内容和功能 ........................................................................................... 246 
5.2.2.  编写代码 ....................................................................................................... 247 
5.2.3.  下载验证 ....................................................................................................... 249 
PPI 驱动 LED-库函数方式 .................................................................................. 249 
5.3.1.  添加文件到工程 ........................................................................................... 249 
5.3.2.  添加头文件包含路径 ................................................................................... 249 
5.3.3.  编写代码 ....................................................................................................... 250 
5.3.4.  下载验证 ....................................................................................................... 251 
次级任务端点使用-库函数方式.......................................................................... 251 
1.1. 
1.2. 
1.3. 
5.4. 
5.1. 
5.2. 
5.3. 
 
 
 
5.1. 
5.2. 
5.3. 
5.4. 
2.1. 
2.2. 
1.1. 
1.2. 
1.3. 
5.4.1.  试验内容 ....................................................................................................... 251 
5.4.2.  编写代码 ....................................................................................................... 251 
5.4.3.  下载验证 ....................................................................................................... 252 
第十二章:SAADC 原理及应用 ................................................................................................ 253 
1.  ADC 原理 ............................................................................................................................. 253 
主要特点 ............................................................................................................... 253 
功能概述 ............................................................................................................... 254 
工作模式 ............................................................................................................... 255 
2.  SAADC 应用步骤 ................................................................................................................ 256 
SAADC 库文件 .................................................................................................... 256 
SAADC 驱动的应用 ............................................................................................ 257 
3.  相关寄存器 ........................................................................................................................... 258 
4.  重要的库函数 ....................................................................................................................... 268 
5.  实例编程演练 ....................................................................................................................... 273 
堵塞模式-单端输入采样 ..................................................................................... 273 
5.1.1.  试验内容 ....................................................................................................... 273 
5.1.2.  添加文件到工程 ........................................................................................... 273 
5.1.3.  添加头文件包含路径 ................................................................................... 274 
5.1.4.  编写代码 ....................................................................................................... 275 
5.1.5.  下载验证 ....................................................................................................... 279 
堵塞模式-差分输入采样 ..................................................................................... 280 
5.2.1.  试验内容 ....................................................................................................... 280 
5.2.2.  编写代码 ....................................................................................................... 280 
5.2.3.  下载验证 ....................................................................................................... 282 
非堵塞模式-单缓存采样 ..................................................................................... 284 
5.3.1.  试验内容 ....................................................................................................... 284 
5.3.2.  编写代码 ....................................................................................................... 284 
5.3.3.  下载验证 ....................................................................................................... 288 
非堵塞模式-双缓存采样 ..................................................................................... 289 
5.4.1.  试验内容 ....................................................................................................... 289 
5.4.2.  编写代码 ....................................................................................................... 290 
5.4.3.  下载验证 ....................................................................................................... 293 
电池电压采样 ....................................................................................................... 293 
5.5.1.  试验内容 ....................................................................................................... 293 
5.5.2.  编写代码 ....................................................................................................... 294 
5.5.3.  下载验证 ....................................................................................................... 295 
门限监测 ............................................................................................................... 295 
5.6.1.  试验内容 ....................................................................................................... 295 
5.6.2.  编写代码 ....................................................................................................... 295 
5.6.3.  下载验证 ....................................................................................................... 298 
BLE 多通道采样-应用定时器 ............................................................................. 300 
5.7.1.  试验内容 ....................................................................................................... 300 
5.7.2.  编写代码 ....................................................................................................... 300 
5.7.3.  下载验证 ....................................................................................................... 304 
5.5. 
5.6. 
5.7. 
 
 
5.8. 
4.1. 
4.2. 
5.1. 
1.1. 
1.2. 
1.3. 
1.4. 
1.5. 
1.6. 
1.7. 
BLE 多通道采样-PPI ........................................................................................... 305 
5.8.1.  试验内容 ....................................................................................................... 305 
5.8.2.  编写代码 ....................................................................................................... 306 
5.8.3.  下载验证 ....................................................................................................... 308 
第十三章:RTC 和时钟日历 ...................................................................................................... 309 
1.  RTC 功能描述 ...................................................................................................................... 309 
原理框图和时钟源 ............................................................................................... 309 
COUNTER 寄存器 ............................................................................................... 310 
RTC 溢出 .............................................................................................................. 311 
TICK 事件 ............................................................................................................ 312 
RTC 事件控制 ...................................................................................................... 312 
RTC 比较事件 ...................................................................................................... 312 
读计数值(COUNTER 寄存器) ............................................................................ 315 
2.  相关寄存器 ........................................................................................................................... 315 
3.  重要的库函数 ....................................................................................................................... 321 
4.  RTC 库应用步骤 .................................................................................................................. 325 
RTC 库文件 .......................................................................................................... 325 
应用步骤 ............................................................................................................... 325 
5.  实例编程演练 ....................................................................................................................... 330 
RTC TICK 事件 .................................................................................................... 330 
5.1.1.  试验内容 ....................................................................................................... 330 
5.1.2.  添加文件到工程 ........................................................................................... 330 
5.1.3.  添加头文件包含路径 ................................................................................... 331 
5.1.4.  编写代码 ....................................................................................................... 332 
5.1.5.  下载验证 ....................................................................................................... 334 
RTC  比较事件实现定时 ..................................................................................... 334 
5.2.1.  试验内容 ....................................................................................................... 334 
5.2.2.  编写代码 ....................................................................................................... 335 
5.2.3.  下载验证 ....................................................................................................... 336 
5.2.4.  试验扩展 ....................................................................................................... 337 
RTC  溢出事件 ..................................................................................................... 339 
5.3.1.  试验内容 ....................................................................................................... 339 
5.3.2.  编写代码 ....................................................................................................... 339 
5.3.3.  下载验证 ....................................................................................................... 341 
RTC  实现时钟日历(OLED 显示) ....................................................................... 341 
5.4.1.  试验内容 ....................................................................................................... 341 
5.4.2.  试验原理 ....................................................................................................... 341 
5.4.3.  编写代码 ....................................................................................................... 342 
5.4.4.  下载验证 ....................................................................................................... 345 
蓝牙 BLE 下实现时钟日历(OLED 显示) ........................................................... 346 
5.5.1.  试验内容 ....................................................................................................... 346 
5.5.2.  试验原理 ....................................................................................................... 347 
5.5.3.  编写代码 ....................................................................................................... 347 
5.5.4.  下载验证 ....................................................................................................... 350 
5.2. 
5.3. 
5.4. 
5.5.