NRF5 SDK蓝牙开发——NRF_LOG_INFO(...)通过串口输出的实现

本文介绍如何在NRF5SDK蓝牙开发环境中配置并实现通过串口输出日志信息。主要内容包括:使能NRF_LOG_BACKEND_UART_ENABLED宏定义、设置串口引脚与波特率等参数、添加必要的源文件、调整调试输出等级以及避免串口重复初始化等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NRF5 SDK蓝牙开发——NRF_LOG_INFO(…)通过串口输出的实现

  • 开发环境

    1. iar for arm开发平台
    2. nrf52832开发板,使用P06引脚作为串口TX口
    3. 应用程序:nRF5_SDK_15.0.0_a53641a(examples/ble_central/ble_app_uart_c)
    4. 协议栈: s132_nrf52_6.0.0_softdevice.hex

    由于直接编译sdk会出现Pa050相关错误,在iar选项配置中屏蔽该编译错误即可。
    这里写图片描述
    一。打开”sdk_config.h”文件,使能及禁能相关功能

关闭宏NRF_LOG_BACKEND_RTT_ENABLED如下,

#ifndef NRF_LOG_BACKEND_RTT_ENABLED
#define NRF_LOG_BACKEND_RTT_ENABLED 0
#endif

添加如下宏定义到”sdk_config.h”文件合适位置,

// <e> NRF_LOG_BACKEND_UART_ENABLED - nrf_log_backend_uart - Log UART backend
//==========================================================
#ifndef NRF_LOG_BACKEND_UART_ENABLED
#define NRF_LOG_BACKEND_UART_ENABLED 1
#endif
// <o> NRF_LOG_BACKEND_UART_TX_PIN - UART TX pin 
#ifndef NRF_LOG_BACKEND_UART_TX_PIN
#define NRF_LOG_BACKEND_UART_TX_PIN 6
#endif

// <o> NRF_LOG_BACKEND_UART_BAUDRATE  - Default Baudrate

// <323584=> 1200 baud 
// <643072=> 2400 baud 
// <1290240=> 4800 baud 
// <2576384=> 9600 baud 
// <3862528=> 14400 baud 
// <5152768=> 19200 baud 
// <7716864=> 28800 baud 
// <10289152=> 38400 baud 
// <15400960=> 57600 baud 
// <20615168=> 76800 baud 
// <30801920=> 115200 baud 
// <61865984=> 230400 baud 
// <67108864=> 250000 baud 
// <121634816=> 460800 baud 
// <251658240=> 921600 baud 
// <268435456=> 1000000 baud 

#ifndef NRF_LOG_BACKEND_UART_BAUDRATE
#define NRF_LOG_BACKEND_UART_BAUDRATE 30801920
#endif

// <o> NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE - Size of buffer for partially processed strings. 
// <i> Size of the buffer is a trade-off between RAM usage and processing.
// <i> if buffer is smaller then strings will often be fragmented.
// <i> It is recommended to use size which will fit typical log and only the
// <i> longer one will be fragmented.

#ifndef NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE
#define NRF_LOG_BACKEND_UART_TEMP_BUFFER_SIZE 64
#endif

二。工程中,添加nrf_log_backend_uart.c文件,路径为
components\libraries\experimental_log\src\nrf_log_backend_uart.c

三。在main函数中,注释掉uart_init()函数
不注释该函数,会出现串口初始化两次的情况,第一次在log_init()函数,第二次在uart_init()函数。
在第二次串口初始化时,会因为没有先释放串口,直接初始化,导致出错。
另外,sdk_config.h中更改调试输出等级。设置为4。

// <0=> Off 
// <1=> Error 
// <2=> Warning 
// <3=> Info 
// <4=> Debug 

#ifndef NRF_LOG_DEFAULT_LEVEL
#define NRF_LOG_DEFAULT_LEVEL  4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wayne2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值