替代串口打印,快来围观嵌入式中另一种打印调试的方法

一、前言

在我们的嵌入式开发中,常常把printf重定向到MCU的串口外设,再配合上位机界面软件,通过打印调试信息的方式来调试我们的嵌入式软件。

此处,我们介绍另一种打印调试的方法——SEGGER 的RTT 。RTT全称是Real Time Transmit(实时传输),是Segger公司推出的,是配合J-link使用的一种调试手段。其框图如下:

可见,我们的MCU通过J-Link,凭借RTT就可往电脑打印调试信息,电脑端这边用的是J-LINK 的小软件 RTT Viewer  (不能用别的软件哦)。

这样,我们就可以把MCU的串口资源释放出来了,特别对于一些串口资源不那么充足的MCU来说就可以省出一个串口去与其它外围芯片进行串口通讯。

二、SEGGER_RTT的使用

所需准备,J-LinkSEGGER_RTT源码,可在本公众号聊天界面回复关键词:RTT,即可获取下载链接。下面演示在Keil-MDK环境下使用SEGGER_RTT:

1、安装J-Link驱动

安装完之后就可在看到如图所示的J-Link RTT Viewer V6.44b,我们待会要把调试信息传输到这个软件上。

2、SEGGER_RTT的收发测试

(1)把SEGGER_RTT_V640添加到我们的工程文件夹中

SEGGER_RTT_V640中的内容如下:

(2)把SEGGER_RTT_V640下的RTT下的所有文件添加到我们的工程中

(3)添加文件路径

(4)在main.c中添加如下测试代码

左右滑动查看全部代码>>>

int main(void)
{
/* 今天是2019-08-15 */
#define YEAR 2019
#define MONTH 8
#define DAY 15

int GetKey;

/* 配置通道0,上行配置(STM32->RTT Viewer软件) */
SEGGER_RTT_ConfigUpBuffer(0, "RTTUP", NULL, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP);

/* 配置通道0,下行配置(RTT Viewer软件->STM32) */
SEGGER_RTT_ConfigDownBuffer(0, "RTTDOWN", NULL, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP);

while (1)
{
/* 收发测试 */
if (SEGGER_RTT_HasKey())/* 判断接收缓冲区中是否有数据 */
{
GetKey = SEGGER_RTT_GetKey();/* 从接受缓冲区中取出一个字符 */
SEGGER_RTT_SetTerminal(1);
SEGGER_RTT_printf(0, "GetKey = %c\r\nHello world! Today is %.4d-%.2d-%.2d", GetKey, YEAR, MONTH, DAY);
}
}

return 0;
}

需要注意的是:记得添加头文件SEGGER_RTT.h,范例工程可在聊天界面回复关键词RTT进行获取。

(5)编译下载到flash中,并启动RTT Viewer软件

这个测试程序是对SEGGER_RTT进行收发测试,其中SEGGER_RTT_printf与我们平时用的printf差不多,区别是不支持浮点数 。

三、最后

SEGGER_RTT基本上可以替换掉我们的串口打印调试,这篇笔记只是分享了平时比较常用的收发功能。

关于SEGGER_RTT还有其他可以学习的地方,比如输出颜色设置、多任务调度等,有需要的朋友可以自己进行学习使用,推荐资料:

1、http://www.armbbs.cn/forum.php?mod=viewthread&tid=86177&fromuid=58
2、https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer/

猜你喜欢:

《省电子设计竞赛一等奖作品分享(一)

《省电子设计竞赛一等奖作品分享(二)

《省电子设计竞赛一等奖作品分享(三)

【DSP笔记】TI官方例程中切换RAM、FLASH工程版本的方法

【DSP笔记】下载程序遇到的问题

《嵌入式软件工程师经典面试题(一)

《嵌入式软件工程师经典面试题(二)

我的个人博客:

https://zhengnianli.github.io

查看往期笔记:

聊天界面输入m获取往期笔记目录

留言板:

(0)

相关推荐

  • 目前网上嵌入式最好的printf,用起来!

    网上最好的printf? 最近在忙活搞别的事情(太难受了),严重影响了硪那一颗自由飞翔的芯~~ 所以今天打算分享一个麻省理工小伙写的printf家族的函数~说是号称目前网上嵌入式最好的printf喔. ...

  • 十分钟让你的JLINK成为调试利器

    小飞哥玩嵌入式 92篇原创内容 Official Account 点击上方「嵌入式实验基地」,选择「置顶公众号」第一时间查看嵌入式笔记! 觉得有用,别忘了点个赞哦,测试源码,关注公众号,后台回复&qu ...

  • 【首发】嵌入式调试神软——MicroLab正式发布!

    首发! 历时十五个月,有效代码量七万九千余行,蓝色星球上最好用的嵌入式开发调试神软--MicroLab  Ver.1.0.0 今天正式发布. 下载地址:https://gitee.com/fengme ...

  • 嵌入式开发输出调试和日志信息的几种方法

    基于MCU的嵌入式软件开发,可能在某些情况下没有多余存储空间,从而没有在本地有效保存调试和日志信息. 这时,通过某种方式把调试(Debug)和日志(Log)信息输出就显得有意义了. 下面就来讲讲关于嵌 ...

  • OTA到底对控制器做了什么?

    随着特斯拉将OTA的功能引入到汽车中,汽车行业发生了新的范式革命,智能汽车相比传统汽车成为新物种的存在,OTA不仅是汽车不断成长的"生命通道",更是成为了车企新商业模式的" ...

  • 《安富莱嵌入式周报》第207期:2021.04.05--2021.04.11

    说明: 1.乐鑫科技发布首款 Wi-Fi 6 + Bluetooth 5 (LE) 的 RISC-V SoC ESP32-C6     乐鑫推出 ESP32-C 系列中的又一款新品 ESP32-C6, ...

  • STM32 Nucleo-L432评测

    评测分两部分,一部分是环境,一部分是能耗. 本人之前是不太喜欢使用STM32的MCU.由于我个人的关系,经常在windows,linux,osx之间切换使用,一份代码维护几个工程觉不太方便很麻烦,加之 ...

  • 干货 | union在嵌入式中的一种实用应用

    其中应用于管理不同的数据的用法中有一些小伙伴不是很理解,给我留言了.这篇文章我们就一起看一些实例来进一步理解. 温馨提示:本公众号由于开通得比较晚,所以不具备留言功能.所以大家想看哪些内容,可以在公众 ...

  • 端午节快到了!教你几种包粽子的方法,圆的、扁的、四角的、锥形的…

    科普中国 中国科协科普工作官方微平台6小时前 端午节马上就要到了,教大家几种包粽子的方法,圆的.扁的.四角的.锥形的--只要你想学,都可以有↓↓↓ 北方四角棕↓↓↓ 特点: 北方四角棕在北方地区非常流 ...

  • 书法中的 18种运笔概念 及方法

    2021-07-02 09:45·TH绘鑫 书法中的 18种运笔概念 及方法

  • C刊中常用100种人文社科研究方法(草稿版)

    此版本为上课草稿版,欢迎大家就此提出改进意见. 搜集数据(材料)类方法: 调查类方法: 问卷调查法: 田野调查: 民族志: 虚拟民族志: 量化民族志: 元民族志研究方法: 观察法: 行动研究方法: 常 ...

  • vbs中的三种显示窗口的方法

    set objshell=createobject("wscript.shell") objshell.popup "看见我了没" wscript.echo & ...

  • 安卓系统中的几种创建快捷方式的方法

    使用Android的知道,有快捷方式这么一说,可以通过长按桌面来添加,也有的是第一次运行时候询问是否需要安装,有的直接放在桌面(MIUI是直接放在桌面的),那么为了驱动用户使用,有些应用在安装以后便直 ...

  • 趋势交易中的三种稳定致胜方法

    交易其实很简单!不需要多深的技术,不需要多高的天赋,我们只需要在牛市中持股,充分把握上升趋势,将利润最大化.在市场转入熊市时空仓,以规避市场的系统性风险.大道至简,大音希声.做交易惟一的不败法门就是: ...

  • 快来围观!美术界中的最佳“模特儿”身世大公开!它如何从默默无闻到画界顶流?

    第1549期 看到标题之后 是不是以为要大饱眼福啦? 以为今天我们要看的模特是一位帅哥? 或者是一位美女? 都错啦~ 今天我们要介绍的最佳"模特儿"是~ 是它啦~随处可见的苹果. ...

  • 中书协隶书委员会委员们写的隶书,你觉得如何?快来围观!

    书法征稿 4篇原创内容 公众号 张建会 张建会,1960年4月出生.现为中国书法家协会副主席.中国书法家协会隶书委员会主任.天津市文联副主席.天津市书法家协会常务副主席.国家一级美术师.享受国务院特殊 ...