如何通过J-Link仿真器实现RTT日志打印?

Viewed 2

RTT协议源码

RTT.zip

在调用的.c文件中应用console.h,然后通过console_inforconsole_debugconsole_warnconsole_error等宏函数输出调试信息。

#ifndef __CONSOLE_H__
#define __CONSOLE_H__
#include "SEGGER_RTT.h"

#define DDL_LOG_NODE    5
#define DDL_LOG_INFOR   4
#define DDL_LOG_DEBUG   3
#define DDL_LOG_WARM    2
#define DDL_LOG_ERROR   1

#define LOG_LEVEL       DDL_LOG_INFOR
#define console_infor(arg...)           if(LOG_LEVEL>=DDL_LOG_INFOR)do{SEGGER_RTT_printf(0, "<INFOR><%s><%u>: ", __FUNCTION__, __LINE__);SEGGER_RTT_printf(0, arg);}while(0)
#define console_debug(arg...)           if(LOG_LEVEL>=DDL_LOG_DEBUG)do{SEGGER_RTT_printf(0, "<DEBUG><%s><%u>: ", __FUNCTION__, __LINE__);SEGGER_RTT_printf(0, arg);}while(0)
#define console_warm(arg...)            if(LOG_LEVEL>=DDL_LOG_WARM)do{SEGGER_RTT_printf(0, "< WARM><%s><%u>: ", __FUNCTION__, __LINE__);SEGGER_RTT_printf(0, arg);}while(0)
#define console_error(arg...)           if(LOG_LEVEL>=DDL_LOG_ERROR)do{SEGGER_RTT_printf(0, "<ERROR><%s><%u>: ", __FUNCTION__, __LINE__);SEGGER_RTT_printf(0, arg);}while(0)

#define console_init() SEGGER_RTT_ConfigUpBuffer(0, NULL, NULL, 0, SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL)

#endif

0 Answers
Related