nrf52832学习日志:使用NRF_LOG调试

前言

由于nrf52832的串口不多,而一般我们都是使用J-LINK烧录nrf52程序的。这时候我们就可以充分利用JLINK的功能——RTT调试功能使用RTT调试功能不需要占用UART串口,这是它的好处。nrf_log.cnrf_log.h则是nordic公司提供的调试函数。看过这两个文件的童鞋都应该知道,他们其实也是调用了JLINK SEGGER官方的SEGGER_RTT.C、SEGGER_RTT_printf.c、RTT_Syscalls_KEIL.C 以及 SEGGER_RTT.h、SEGGER_RTT_Conf.h这几个文件。

而不同的是,nordic公司已经将SEGGER的函数封装了一遍,在nrf_log.h下,

你只需要修改一个预定义值,即可以选择是UART串口打印还是RTT打印。

在默认已经添加SEGGER相关函数的情况下,我们下面开始添加nrf_log函数。

  • (请注意!!!未添加SEGGER相关函数的话是会报错的,因为nrf_log本身就是调用了SEGGER相关函数!而添加SEGGER相关函数的相关流程与下面相同,在文末会提供相关函数的文件下载。)

一、将nrf_log加入工程中

将nrf_log.c和nrf_log.h加入工程需要三步

1、在keil左侧的Project中添加nrf_log.c文件。

在这里插入图片描述
2、点击魔法棒添加头文件的路径。

在这里插入图片描述

3、把想要打印调试信息的函数中加入nrf_log.h头文件(#include “nrf_log.h”)

在这里插入图片描述

到这一步,你已经成功将nrf_log加入到工程里啦。

二、使用nrf_log 打印调试信息

上面已经讲到,nrf_log把SEGGER相关函数封装了一遍,若想使用RTT打印,则需要把nrf_log.h的NRF_LOG_USES_RTT 置为1,若想使用UART串口打印,则将其置为0。

如下图是为1的状态:

在这里插入图片描述

接下来在主函数初始化中添加: NRF_LOG_INIT();

在这里插入图片描述

打开J-LINK RTT Viewer

按照如下设置,点击OK:
在这里插入图片描述

再按下板子的复位键,则显示:
在这里插入图片描述

过程中出现的问题

出现了这个问题:

._build\nrf52832_xxaa_s132.axf: Error: L6218E: Undefined symbol SEGGER_RTT_printf (referred from main.o)

如果做了以上的步骤,出现了这个问题,则在工程目录下,把之前编译的文件全删了。

在这里插入图片描述

文件下载

点击此处下载SEGGER RTT文件和 NRF_LOG 相关文件

猜你喜欢

转载自blog.csdn.net/Hanghang_/article/details/84638081