美文网首页物联网loT从业者物联网相关技术研究
NRF52832学习笔记(13)——RTT打印调试日志

NRF52832学习笔记(13)——RTT打印调试日志

作者: Leung_ManWah | 来源:发表于2020-02-25 16:24 被阅读0次

一、背景

Log 信息输出可以方便调试者观察程序运行状态,和常用的串口 printf 的功能相似。但是在 nrf5x 芯片串口只有一个的状态下,如果你已经使用了串口,者时候 Log 显示提供一种不占用串口的方式,也就是仿真器 JLink 的 RTT Viewer 输出方式。

二、初始化打印功能

在主函数 main 中,第一步就是初始化打印日志功能 log_init(),该函数实际上既可以触发串口打印,也可以触发 RTT 打印。

/**@brief Application main function.
 */
int main(void)
{
    bool erase_bonds;

    // Initialize.
    log_init();
    timers_init();
    buttons_leds_init(&erase_bonds);
    power_management_init();
    ble_stack_init();
    gap_params_init();
    gatt_init();
    services_init();
    advertising_init();
    conn_params_init();

    // Start execution.
    NRF_LOG_INFO("Blink example started.");
    advertising_start();

    // Enter main loop.
    for (;;)
    {
        idle_state_handle();
    }
}

三、SDK配置

点击 sdk_config.h 文件


选择 Configuration Wizard

3.1 配置串口打印

nRF_Log 中勾选 UART 选项


切换回 Text Editor 界面,可以发现已经把 NRF_LOG_BACKEND_UART_ENABLE 设置为 1,也就是使能了串口。

nrf_log_default_backends.c 文件中,当我们使能了 NRF_LOG_BACKEND_UART_ENABLE 后,对应会修改文件中对串口初始化

nrf_log_backend_uart.c 文件中

这里初始化串口的串口参数,是按照 config.h 文件里的内容进行的,同时管脚只配置了一个打印输出引脚。

注意:如果你在配置文件中已经把 NRF_LOG_BACKEND_UART_ENABLE 设置为 1,这时候就不再次初始化配置串口。

3.2 配置RTT打印

nRF_Log 中勾选 RTT 选项 切换回 Text Editor 界面,可以发现已经把 NRF_LOG_BACKEND_RTT_ENABLE 设置为 1,也就是使能了 RTT。

nrf_log_default_backends.c 文件中,当我们使能了 NRF_LOG_BACKEND_RTT_ENABLE 后,对应会修改文件中对 RTT 初始化

四、开始打印日志

4.1 串口打印

打开串口调试助手,波特率设置为 115200


4.2 RTT打印

找到你的 SEGGER 的安装位置,找到驱动版本下的 JLinkRTTViewer.exe


打开后弹出选择界面。这个功能我们必须接上 JLink,设置参数如下,使用 USB 端口输出,目标设备选择 nRF52832_xxAA

五、API调用

5.1 打印普通信息

函数名:
NRF_LOG_INFO
用法:

NRF_LOG_INFO("Template example started."); 

5.2 打印浮点数

函数名:
NRF_LOG_FLOAT
用法:

/**
 * @brief Macro to be used in a formatted string to a pass float number to the log.
 *
 * Use this macro in a formatted string instead of the %f specifier together with
 * @ref NRF_LOG_FLOAT macro.
 * Example: NRF_LOG_INFO("My float number" NRF_LOG_FLOAT_MARKER "\r\n", NRF_LOG_FLOAT(f)))
 */
#define NRF_LOG_FLOAT_MARKER "%s%d.%02d"

/**
 * @brief Macro for dissecting a float number into two numbers (integer and residuum).
 */
#define NRF_LOG_FLOAT(val) (uint32_t)(((val) < 0 && (val) > -1.0) ? "-" : ""),   \
                           (int32_t)(val),                                       \
                           (int32_t)((((val) > 0) ? (val) - (int32_t)(val)       \
                                                : (int32_t)(val) - (val))*100)

• 由 Leung 写于 2020 年 2 月 25 日

• 参考:青风电子社区

相关文章

  • NRF52832学习笔记(13)——RTT打印调试日志

    一、背景 Log 信息输出可以方便调试者观察程序运行状态,和常用的串口 printf 的功能相似。但是在 nrf5...

  • springboot日志体系---log4j2

    最近调试代码和运行代码的时候,一些日志打印的乱七八槽,根据日志很难快速定位到问题,感觉自己是为了打印日志而打印日志...

  • iOS Log打印

    简述 iOS调试中打印日志是一种比较常见的手段,一般都是使用系统的打印日志的方法NSLog,但是这种打印日志的方法...

  • 【JAVA提升】- JVM实战

    1 参数调试 1.1 GC日志参数 -XX:+PrintGCDetails 打印GC详细日志 -XX:+HeapD...

  • 日志打印规范及技巧学习总结

    一、日志打印级别 DEBUG(调试)开发调试日志。一般来说,在系统实际运行过程中,不会输出该级别的日志。因此,开发...

  • Swift日志打印的正确姿势

    打印日志是程序员调试代码的无上利器,俗话说“不会打印日志的开发不是好码农”。但在发布环境中,日志打印又会影响代码性...

  • Python之日志记录模块logging

    一、简单的将日志打印到屏幕 默认情况下,会打印WARNING级别的日志DEBUG:详细信息,调试信息。INFO:确...

  • iOS结构体内存计算和对齐

    了解一下lldb调试指令 接下来引入一个列子,创建一个LNDPersonal类 lldb打印调试,如图 打印日志结...

  • 安卓基础小结(3)

    日志工具:Log.v():用于打印那些最为琐碎,意义最小的日志信息;Log.d():打印一些调试信息,对应级别;d...

  • 【小技巧】AndroidStudio利用断点打印日志

    你是不是有着这样的烦恼: 调试程序常常需要到处打印日志 (没办法,debug需要) 打印日志需要对代码进行修改 (...

网友评论

    本文标题:NRF52832学习笔记(13)——RTT打印调试日志

    本文链接:https://www.haomeiwen.com/subject/gxuzqhtx.html