完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
一、前言
在嵌入式开发过程中,经常会通过打印输出一些调试信息来调试参数、查找问题等,通常我的做法都是使用芯片的串口硬件设备配合串口助手软件来进行调试。但是这次项目的PCB硬件设计并未预留串口调试接口,所以想使用串口调试就不方便了。经过查找资料发现Segger 提供了一种非常方便的调试方式——自家的J-Link硬件配合J-Link RTT Viewer软件进行信息输入输出调试。 二、组件添加 要使用该调试组件,需要添加Segger提供的SEGGER_RTT组件代码,该代码位于J-Link软件安装目录下,而且在用户手册中提供了详细的说明。 组件源码位置: 用户手册位置: 在手册的16章节对RTT组件进行了说明: 将组件源码复制到工程目录下,工程中添加相关文件及包含路径: 最后在需要使用打印调试信息的文件中包含#include "SEGGER_RTT.h"头文件就可以使用该组件了。 三、组件应用 关于组件提供的各API函数在手册中都有相应的说明。举例应用如下: 输出测试: int a = 3; SEGGER_RTT_TerminalOut(0,RTT_CTRL_BG_BLACK""RTT_CTRL_TEXT_BRIGHT_GREEN"SEGGER_RTT_TerminalOut 0rn"); SEGGER_RTT_TerminalOut(1,RTT_CTRL_BG_BLUE""RTT_CTRL_TEXT_BRIGHT_YELLOW"SEGGER_RTT_TerminalOut 1rn"); SEGGER_RTT_SetTerminal(2); SEGGER_RTT_printf(0,RTT_CTRL_BG_WHITE""RTT_CTRL_TEXT_BRIGHT_BLACK"SEGGER_RTT_printf 2rn"); SEGGER_RTT_SetTerminal(3); SEGGER_RTT_printf(0,"SEGGER_RTT_printf %drn", a); 打开J-Link RTT Viewer软件 RTT Viewer打印结果如下: 输入测试: int a; while(1) { if ((a = SEGGER_RTT_WaitKey()) > 0) { SEGGER_RTT_SetTerminal(0); SEGGER_RTT_printf(0, "SEGGER_RTT_GetKey = %crn", a); } } RTT Viewer打印结果如下: 四、扩展应用 经过上面对SEGGER_RTT的使用,发现其确实非常的方便,大多数调试都能够替代串口调试实现了,但是SEGGER_RTT_printf()函数无法打印浮点数。手册中对该函数列出了支持的转换说明符如下: [tr]Conversion specifierMeaning[/tr]
添加自己修改的printf函数如下: /********************************************************************* * * rtt_printf() * * Function description * print a formatted string using RTT and standard library formatting. **********************************************************************/ int rtt_printf(const char *fmt,...) { int n; char aBuffer[256]; //根据应用需求调整大小 va_list args; va_start (args, fmt); n = vsnprintf(aBuffer, sizeof(aBuffer), fmt, args); if (n > (int)sizeof(aBuffer)) { SEGGER_RTT_Write(0, aBuffer, sizeof(aBuffer)); } else if (n > 0) { SEGGER_RTT_Write(0, aBuffer, n); } va_end(args); return n; } 接下来测试浮点数打印: double fa = 0.1f; double fb = 2.0f; while(1) { fa += 0.0001f; fb -= 0.0002f; rtt_printf("floating test:tfa = %f, fb = %frn", fa, fb); delay(0x0fffffff); } |
|
|
|
|
只有小组成员才能发言,加入小组>>
1093 浏览 1 评论
1909 浏览 0 评论
1886 浏览 1 评论
3308 浏览 5 评论
3632 浏览 9 评论
1093浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1411浏览 1评论
1909浏览 0评论
1225浏览 0评论
1363浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-18 03:36 , Processed in 0.732969 second(s), Total 76, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2174