简介
nRF52832 是一款蓝牙 soc,使用 Arm® Cortex™-M4 内核,主频 64 MHz.
官方提供的 SDK 支持 IAR
, gcc+makefile
, Segger Studio
三种开发方式,本例程将使用 eide+armgcc8.3 进行开发
步骤
1. 打开官网 https://www.nordicsemi.com/Products/nRF52832/Download 下载 SDK,如下:

2. 将 SDK 解压至磁盘

3. 在任意位置新建一个 Cortex-M
空项目

4. 打开 SDK 目录下的 Segger Studio 示例工程,本处使用 nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_uart\pca10040\s132\ses
下的串口示例工程

右键 项目资源,选择 从其他 IDE 导入源文件,选择 Segger Studio
导入工具,然后选择要导入的项目文件,即可开始源文件的导入


等待片刻,即可完成项目资源的导入,导入完成后如下图:

5. 移除工程中 Segger Studio 内置的 crt 源文件,配置项目;
Segger Studio 自己实现了一套 newlib 和 crt(C运行时库),但只适合在它自己的 IDE 上用;在这里我们需要移除这些文件,使用 armgcc 通用的源文件进行代替
5.1 打开资源管理器,移除以下文件:
ses_startup_nrf_common.s
ses_startup_nrf52.s
thumb_crt0.s
如下图:

5.2 将 SDK 中的以下文件复制到工程根目录下:
nRF5_SDK_17.1.0_ddde560\modules\nrfx\mdk\gcc_startup_nrf52.S
nRF5_SDK_17.1.0_ddde560\modules\nrfx\mdk\nrf_common.ld
nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_uart\pca10040\s132\armgcc\ble_app_uart_gcc_nrf52.ld
复制完后如下图:

然后将 gcc_startup_nrf52.S
添加到当前工程中,将 ble_app_uart_gcc_nrf52.ld
作为链接脚本设置到构建配置中
5.3 点击 项目属性 栏的 修改 按钮,进行如下操作:
删除无效的 预处理宏定义
,ctrl+s 保存应用到项目,如下图所示:

6. 编译项目

7. 烧录程序,检查效果
选择一个烧录器(本处选 JLink),设置芯片型号
由于协议栈
作为单独的程序运行,因此我们需要同时烧录两个文件到 Flash 中:
将 nRF5_SDK_17.1.0_ddde560\components\softdevice\s132\hex\s132_nrf52_7.2.0_softdevice.hex
协议栈程序复制到当前项目目录下
修改 烧录配置->程序文件 为 ./s132_nrf52_7.2.0_softdevice.hex;$(ExecutableName).hex

接下来,点击烧录按钮进行烧录,即可完成程序下载
然后打开 JLink
的 RTT Viewer,连接开发板,即可发现如下输出:
UART started.
Debug logging for UART over RTT started.