SEGGER 的实时传输 (RTT) 是一种用于嵌入式应用程序中交互式用户 I/O 的技术。它以非常高的性能结合了 SWO 和半主机的优势。但是在笔者使用时(RTT v758版本),其暂时不支持浮点数打印的功能。我们可以通过修改源码添加该功能。 跳转到RTT>SEGGER_RTT_printf.c>SEGGER_RTT_vprintf(unsigned, const char*, va_li...
针对你的问题“segger_rtt_printf打印浮点数”,我将按照提供的提示进行回答: 确认segger_rtt_printf函数是否原生支持浮点数打印: SEGGER RTT(Real-Time Transfer)是一个高效的实时数据传输机制,通常用于嵌入式系统的调试。segger_rtt_printf是SEGGER RTT提供的一个类似于标准printf的函数,用于向主机发送格式化字符串。
就拿最简单的J-Link RTT Viewer举例子,在开始菜单或者是搜索框找到它: 默认情况下只需设置需要调试的芯片跟调试器接口即可,可以参照下图: 设置好点击OK就可以开始愉快的看日志了(SEGGERRTTprintf函数的第一个参数就是指定在哪个Terminal窗口显示,默认是0。 五、封装RTT库接口 使用RTT毕竟是拿来打日志的,直接调用prin...
{if((a = SEGGER_RTT_WaitKey()) >0) { SEGGER_RTT_SetTerminal(0); SEGGER_RTT_printf(0,"SEGGER_RTT_GetKey = %c\r\n", a); } } RTT Viewer打印结果如下: 四、扩展应用 经过上面对SEGGER_RTT的使用,发现其确实非常的方便,大多数调试都能够替代串口调试实现了,但是SEGGER_RTT_printf()函数无法...
经过上面对SEGGER_RTT的使用,发现其确实非常的方便,大多数调试都能够替代串口调试实现了,但是SEGGER_RTT_printf()函数无法打印浮点数。手册中对该函数列出了支持的转换说明符如下: 其中并没有浮点数f选项。但是可以使用SEGGER_RTT输出函数自己修改一个printf函数,这样就可以使用完整的printf函数了。
这个测试程序是对SEGGER_RTT进行收发测试,其中SEGGER_RTT_printf与我们平时用的printf差不多。 三、最后 SEGGER_RTT基本上可以替换掉我们的串口打印调试,关于SEGGER_RTT还有其他可以学习的地方,比如输出颜色设置、多任务调度等,有需要的朋友可以自己进行学习使用,推荐资料: ...
我使用的方法是直接使用RTT提供的API实现fputc,需要MDK开启微库支持: 在main.c最后实现fputc函数: 代码语言:javascript 复制 intfputc(int ch,FILE*f){SEGGER_RTT_PutChar(0,ch);returnch;} 修改代码,测试printf是否可以正常使用: 代码语言:javascript
RTT的原理很简单,他利用printf类似的函数功能,讲我们想要发送出来的信息存储在Ram中的一个固定区域,上位机的软件,就可以通过SWD接口快速的读取这块的缓存数据,然后将它们显示在界面窗口里面。 移植RTT的时候,我们是如何增加颜色的呢? 如上面的宏定义,我们在RTT_printf外面又套了一层壳子,除了我们原本打印的数据外,我...
SEGGER为jlink提供了各种工具,例如J-Scope,RTT(Real Time Transfer)等。今天的内容就是把RTT Client嵌入到VS Code中。 最终效果:只插一个Jlink,使用SWD接口,无需占用串口,无需SWO引脚,实现日志printf输出(带颜色)如下: 1 为什么需要日志 虽然利用断点、调用堆栈和变量窗口能很方便地进行调试,但是在一些情况下,是不...
一旦segger_rtt初始化完成,实时传输就会开始。 嵌入式系统可以通过调用segger_rtt_printf()、segger_rtt_write()等函数将调试信息传输到主机上。这些函数将会写入RTT控制块的缓冲区中,并通过UART传输到主机。 主机可以通过读取UART接口来接收来自嵌入式系统的数据。segger_rtt提供了一套API,用于主机程序的开发,以便能够...