nRF52832开发记录----使用RTT打印调试信息

本文介绍RTT实时终端及SDKLog模块的使用方法。RTT是SEGGER公司的嵌入式程序交互工具,可通过JLinkRTTViewer软件进行log打印。SDKLog则为NRF5SDK提供的log打印模块,支持UART和RTT两种方式。

开发时我们可以使用RTT来打印log
RTT是SEGGER公司开发的用于嵌入式程序中与用户交互的实时终端。
RTT搭配JLink的JLinkRTTViewer软件使用

1. RTT

将RTT源码移植到工程中即可实现RTT功能
RTT源码使用ANSI C标准编写可以移植到任何嵌入式程序中
RTT实现了一个简易的printf()函数SEGGER_RTT_Printf(),不需要堆

RTT源码包含在JLink中,安装完JLink后就带有RTT源码Windows JLink

源码在JLink安装目录下的Samples/RTT

路径:
c/Program Files (x86)/SEGGER/JLink/Samples/
├── DCC
├── GDB
├── JFlash
├── JFlashSPI
├── JLink
├── RDI
└── RTT
    └── SEGGER_RTT_V680a.zip

内容:
SEGGER_RTT_V680a
├── Examples
│   ├── Main_RTT_InputEchoApp.c
│   ├── Main_RTT_MenuApp.c
│   ├── Main_RTT_PrintfTest.c
│   └── Main_RTT_SpeedTestApp.c
├── License.txt
├── README.txt
├── RTT
│   ├── SEGGER_RTT.c
│   ├── SEGGER_RTT.h
│   ├── SEGGER_RTT_ASM_ARMv7M.S
│   ├── SEGGER_RTT_Conf.h
│   └── SEGGER_RTT_printf.c
└── Syscalls
    ├── SEGGER_RTT_Syscalls_GCC.c
    ├── SEGGER_RTT_Syscalls_IAR.c
    ├── SEGGER_RTT_Syscalls_KEIL.c
    └── SEGGER_RTT_Syscalls_SES.c

RTT非常简洁,无需配置即可使用.

/*********************************************************************
*               SEGGER MICROCONTROLLER GmbH & Co KG                  *
*       Solutions for real time microcontroller applications         *
**********************************************************************
*                                                                    *
*       (c) 2014  SEGGER Microcontroller GmbH & Co KG                *
*                                                                    *
*       www.segger.com     Support: support@segger.com               *
*                                                                    *
**********************************************************************

----------------------------------------------------------------------
File    : RTT.c
Purpose : Simple implementation for output via RTT.
          It can be used with any IDE.
--------  END-OF-HEADER  ---------------------------------------------
*/

#include "SEGGER_RTT.h"

static void _Delay(int period) {
  int i = 100000*period;
  do { ; } while (i--);
}

int main(void) {
  do {
    SEGGER_RTT_WriteString(0, "Hello World from SEGGER!\r\n");
    _Delay(100);
  } while (1);
  return 0;
}

/*************************** End of file ****************************/

2. 使用SDK Log模块

NRF5 SDK通过nRF_Log模块实现log打印,可支持UART和RTT打印

2.1 配置

主要配置

  • NRF_LOG_ENABLED 使能nRF_Log模块
  • NRF_LOG_BACKEND_RTT_ENABLED 使能RTT通道
  • NRF_LOG_BACKEND_UART_ENABLED 使能UART通道
  • NRF_LOG_DEFERRED 立即刷新开关
    配置如下:
    sdk_config.h

2.2 使用

  • 初始化nRF_Log模块:log_init()
  • 打印log:NRF_LOG_INFO()

3. 参考

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值