NRF52840 RTT输出不了日志问题

1 .需要在sdk_config.h中配置两个宏:

NRF_LOG_ENABLED 1

NRF_LOG_BACKEND_RTT_ENABLED 1

2 需要初始化NRF LOG

static void log_init(void)
{
    ret_code_t err_code = NRF_LOG_INIT(NULL);
    APP_ERROR_CHECK(err_code);

    NRF_LOG_DEFAULT_BACKENDS_INIT();
}

注意:重点需要添加NRF_LOG_DEFAULT_BACKENDS_INIT();语句,官方提供的SDK里没有调用该语句,导致RTT输出不了日志

3 连接RTT VIEWER

4 输出打印语句,配置是否实时打印。

 (1)如果不使能Deferred,调用NRF_LOG_INFO等API的时候,跟着NRF_LOG_FLUSH();即把日志打印出去;
 (2)如果使能了Deferred,那么调用NRF_LOG_INFO等API的时候,先把打印数据放在RAM中,待到main函数中的NRF_LOG_PROCESS完成时打印信息。

5.在main函数调用该语句打印输出日志UNUSED_RETURN_VALUE(NRF_LOG_PROCESS());//打印调试信息

其他日志问题记录

注意:

①不能同时使用cli和enable UART log输出,否则会导致初始化失败,如果需要使用cli,则只能使用RTT输出日志,使能UART输出日志会导致初始化失败。

NRF_LOG_DEFAULT_LEVEL - 默认严重性级别。可用选项包括:ERROR(最高)、WARNING、INFO 和 DEBUG(最低)。如果设置为3,则只会打印INFO语句信息,不会打印DEBUG打印信息,要打印DEBUG信息,需要将NRF_LOG_DEFAULT_LEVEL值改为4

③如果打印“Fatal error”信息,需要在keil里面定义一个全局宏“DEBUG”,才能打印出具体出错的文件名和行号。参考链接:http://t.csdnimg.cn/LLuQL

④主函数调用NRF_LOG_PROCESS()和NRF_LOG_FLUSH()的效果是不同的,使用前者日志未及时打印出来便会被覆盖掉,而使用后者能确保日志都能被完整打印出来

⑤使用RTT打印浮点数示例

NRF_LOG_INFO (“浮点值:” NRF_LOG_FLOAT_MARKER,NRF_LOG_FLOAT (val))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值