NRF52832学习笔记(13)——RTT打印调试日志
一、背景
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打印调试日志相关推荐
- WSL构建nRF5 SDK + ARM GCC开发环境 – RTT打印调试日志
陈拓 2022/07/28-2022/11/04 1. 概述 在<WSL构建nRF5 SDK + ARM GCC开发环境> https://zhuanlan.zhihu.com/p/544 ...
- NRF52832学习笔记(40)——RFID RC522使用
一.简介 MF RC522 是应用于 13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员.是 NXP 公司针对"三表"应用推出的一款低电压.低成本.体积小的非接触式读写 ...
- mybatis学习笔记(13)-延迟加载
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...
- Linux学习笔记13
Linux学习笔记13 Linux学习笔记13 配置Nagios 基本介绍 Nagios安装 - 服务端 Nagios安装 - 客户端 监控中心添加被监控主机 配置文件的简单说明 继续添加需要服务端通 ...
- NRF52832学习笔记(18)——RFID SI522使用
一.简介 ACD(低功耗寻卡)只是一种模式,和 PCD(普通寻卡)是一样的,在使用到 ACD 模式时,其实就是普通的读写模式和低功耗模式的切换,可以理解为"ACD 函数"中嵌套了一 ...
- Intel VT学习笔记(五)—— 调试技巧
Intel VT学习笔记(五)-- 调试技巧 要点回顾 INT 3失效 调试技巧 参考资料 要点回顾 在上一篇中,我们主要学习了如何填写Guest state fields的各项字段,以及如何对错误码 ...
- 软件调试学习笔记(三)—— 调试事件的处理
软件调试学习笔记(三)-- 调试事件的处理 要点回顾 调试事件的处理 实验一:实现简单调试器(创建进程) 实验二:分析异常来源 实验三:实现简单调试器(附加进程) 实验四:分析NtDebugActiv ...
- 软件调试学习笔记(二)—— 调试事件的采集
软件调试学习笔记(二)-- 调试事件的采集 要点回顾 调试事件的种类 调试事件采集函数 例:分析PspUserThreadStartup 例:分析PspExitThread 总结 要点回顾 调试器与被 ...
- 软件调试学习笔记(一)—— 调试对象
软件调试学习笔记(一)-- 调试对象 准备工作 调试器与被调试程序 DebugActiveProcess 连接调试器 分析kernel32!DebugActiveProcess 分析ntdll!Dbg ...
最新文章
- 前沿|揭开黑箱:希伯来大学计算机科学教授提出「信息瓶颈」
- Thymeleaf的Spring数据
- layui添加复选框_对layui初始化列表的CheckBox属性详解,初始化属性
- spss 卡方检验_SPSS篇—卡方检验
- 位居中国机器学习公有云市场份额第一,华为云 ModelArts 的进阶之路
- Android系统的开机画面显示过程分析(2)
- .net 面试题 (1)
- java静态类是只有一个吗,一个只有“私有最终静态”变量的java类。这是一个好主意吗?...
- CTD数据库(Comparative Toxicogenomics Database)介绍与使用
- Firefox扩展开发初级教程——开发一个简单的扩展
- 锋利的jQuery(汇总)
- 金山IPO造富效应:中国最贵程序员群生态
- 实验二.常用网络命令
- airflow实现Java定时任务,AirFlow定时调度执行Talend ETL任务
- Cookie和Session的使用及其案例分析
- Java项目如何优雅的对接口入参进行校验-看法外狂徒张三浏览18网站失败
- 运行interproscan/iprscan会遇到的问题
- 软件工程师——计算机组成原理
- InstanceNorm1d
- C语言之运算符练习题