NRF52832の研究ノート(13) - RTTプリントデバッグログ

I.背景

デバッグを容易にするため、ログ出力情報は、走行状態、および一般的に使用されるシリアルのprintf同様の機能を観察します。あなたはログシミュレータJLINKのRTTビューア出力であるシリアルポートを、取らないときに表示する方法を提供することで、シリアルポートを使用している場合でも、nrf5xシリアルチップで、一つだけの状態です。

第二に、印刷機能を初期化します

メイン関数では、最初のステップは、印刷ログ機能を開始するようにされ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ファイルを

選択し設定ウィザードを

3.1シリアルプリンタの設定

チェックUARTオプションでnRF_Log

テキストエディタのインターフェイスにスイッチバックには、あなたがすでに1に設定NRF_LOG_BACKEND_UART_ENABLEを見つけることができ、シリアルポートが有効になっています。

nrf_log_default_backends.c我々は、シリアルポートの初期化にファイルを変更するために対応する、NRF_LOG_BACKEND_UART_ENABLEを有効にし、ファイル、

nrf_log_backend_uart.cファイル

ここに合わせて、シリアルポートのパラメータを初期化するconfig.hのチューブ一方で、文書の内容を実施唯一のフットプリント出力ピンで構成。

注:設定ファイルである場合は1にNRF_LOG_BACKEND_UART_ENABLEセットがあり、これは再びシリアルポートの初期化を設定するための時間ではありません。

3.2構成のRTTを印刷

チェックRTTのオプションでnRF_Log

切换回 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 日

• 参考:青风电子社区

发布了91 篇原创文章 · 获赞 136 · 访问量 7万+

おすすめ

転載: blog.csdn.net/qq_36347513/article/details/104500464