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 日
• 参考:青风电子社区