NRF51822 如何使用RTT 实时终端调试(翻译教程)

原教程: https://devzone.nordicsemi.com/tutorials/6/安全

 

在SDK12.0.0或者更高的版本中,对RTT的日志记录调试是内置到记录器模块(logger module NRF_LOG)。想使用RTT的日志记录,检查配置向导(configuration wizard)的sdk_config.h文件的NRF_LOG_BACKEND_SERIAL_USES_RTT 选项。app

所以,下面记录的方法主要用于SDK11或者更久远的版本。函数

当咱们建立一个工程的时候,一般须要调试和监视代码的执行。若是咱们想要调试,有几个选项,例如在串行端口打印信息,或者在keil中使用断点并单步运行。不过,对于带有蓝牙协议栈这样的实时操做系统的程序来讲,这些法子都不怎么能工做。想要在串行端口上记录下标准日志,能够尝试使用SEGGER的实时终端。下面上正题,来谈谈如何将这种调试功能添加到现有的项目中。spa

一、将RTT文件添加到项目操作系统

在网上下载RTT文件调试

将RTT文件解压复制到工程目录下日志

在C/C++选项卡包含路径code

在项目的主要.c文件顶部包含 #include "SEGGER_RTT.h"blog

将RTT中的SEGGER_RTT.c文件加入工程教程

 

二、简单应用

如今能够经过RTT发送简单的字符串了:

SEGGER_RTT_WriteString(0,"hello!\r\n");

第一个参数是将字符串写入的通道(channel)。

不过咱们更常常使用的是另外一个函数:

SEGGER_RTT_printf(0,"hello:%d %s\r\n", a, s);

这个函数的功能更强大,使用就和printf同样。它在SEGGER_RTT_printf.c文件中。可是它在中断中使用过多经常会没法正常打印,或者直接不打印。

编译运行一下

 

三、打开实时终端 

如今,代码能够将数据输出到RTT,咱们须要能看到它。方法有不少。最方便的一种是使用J-Link软件包附带的RTT查看器。(j-Link RTT Viewer)

打开J-Link RTT Viewer。以下。若是有多个设备链接,请检查序列号(Serial no),而后输入您想要链接的设备的序列号。

单击“肯定”。显示以下:

如今,下载你的程序到设备上,就能看到终端上显示“Hello!”。

注意,若是你打开终端,并不会影响串口打印。你可使用ble_app_uart 工程来建造的项目,在这个项目中向RTT发送文本以进行调试。

请记住,SEGGER_RTT_WriteString()比printf快的多,所以您能够安全地调用此函数,而不影响应用程序的实时性。

 

 四、更高级的打印 

来详细讲讲以前提到的SEGGER_RTT_printf()函数。为了可以使用它,稍微修改一下项目:

将文件SEGGER_RTT_printf.c加入到项目中

加入文件RTT_Syscalls_KEIL.c(文件在keil_v5\ARM\Pack\NordicSemiconductor\Syscalls)

去掉工程中的retarget文件(工程目录的nRF_Libraries文件夹下,以下)

 

在选项卡的 target选项中取消勾线Use MicroLIB 

 

 而后就可使用了,以下:在主程序中:



编译运行。
注意:如上例程,能够经过在第三个参数写入 RTT_CTRL_BG_BRIGHT_RED 来控制该输出语句的颜色。以下 Terminals 0 所示:char c = 0; for (;;) { c = SEGGER_RTT_WaitKey(); // will block until data is available if(c == 'r'){ SEGGER_RTT_printf(0, "%sResetting in %d second..%s\n", RTT_CTRL_BG_BRIGHT_RED, 1, RTT_CTRL_RESET); nrf_delay_ms(1000); sd_nvic_SystemReset(); } //power_manage(); }

 

注意:咱们经常使用的rintf()函数实际上是定向输出到RTT的。ble_app_uart 项目可以依然按照预期工做,由于它是使用 app_uart_put() 输出到串行端口。

使用printf的例子:

SEEGGER_RGG_printf(0, "variable value: %d\r\n", variable);

第一个参数指定输出的通道,第二个参数是要打印的字符串,variable变量的值插入%d.

相关文章
相关标签/搜索