rt-thread使用segger_rtt打印,节约串口

串口,是单片机上一种非常重要的资源。
rt-thread的finsh功能(就是msh了)是非常重要的调试打印接口。

rt-thread默认使用一个串口去实现finsh的功能,然而实际产品设计的时候,串口往往不够用。
或者,有时候想调试时,发现没有带TTL或者RS232接线。

其实,很多片子,自带了一个速度达到M级别,又不占用MCU资源的端口,那就是SEGGER的RTT接口。简单点说,就是jLink的烧录口。只要你带了烧录器,就可以调试。

要用JLINK的RTT去实现finsh的输入输出,其实很简单,就下面三步:

1,添加SEGGER_RTT软件包。

在rt-thread setting里,添加软件包,搜索segger就可以了,很容易找。
在这里插入图片描述
###2,初始化jlink rtt
jlink rtt使用前需要初始化的,软件包作者已经封装好了函数:int rt_hw_jlink_rtt_init(void);
在这里插入图片描述
(这里吐槽一句,作者没写return,留了一个warning)
然后需要在配置console的device之前,初始化jlink rtt。
比如,下面就是一个新建项目的添加地方。在board.c的rt_hw_board_init()函数里。
在这里插入图片描述
###3,配置console使用的设备
修改rtconfig.h,需要手动了。把RT_CONSOLE_DEVICE_NAME使用jlinkRtt
#define RT_CONSOLE_DEVICE_NAME “jlinkRtt”
如下图:
在这里插入图片描述

看看效果

用jlink rtt viewer就能看到运行效果:
比一般的打印多了一句SEGGER_RTT ADDRESS的内容,可以无视。
在这里插入图片描述
可以看到新建立工程的hello rt-thread一直在打印。
再试试输入,没有问题。
在这里插入图片描述
之后,就可以愉快的使用MSH的功能了!

最后写两点注意问题。

有时候,打印消息不全,那是因为消息太长了,要修改下面BUFFER_SIZE_UP这个宏。
位置在package -> SEGGER_RTT -> RTT-> SEGGER_RTT_Conf.h里
在这里插入图片描述
jlink rtt viewer具体操作自行百度,这里提一句关键的:修改Input,如下图。
在这里插入图片描述

版权声明:本文为CSDN博主「m0_47132384」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_47132384/article/details/122397129

生成海报
点赞 0

m0_47132384

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

嵌入式基本概念

1.现代计算机架构 三大主键:CPU,内存条,硬盘 2.一些处理器概念 cpu:中央处理器,在PC机它是一个独立的芯片。 MPU (Microprocessor Un

【物联网项目】OLED改造

如何把7ping的SPI通信的OLED改造为IIC通信? 之前买OLED的时候发现有两款OLED。 一款是直接IIC通信的OLED只有4Pin管脚。 分别是GND VCC SCL SDA 另一款是支持SPI通信和IIC通信的

基于GD32MCU程序远程升级IAP设计思路

1.1 mcu设备远程升级程序的应用场景 在远程无线监控设备中,IAP程序远程升级功能起着重要作用。比如安装在监控区域的设备需要进行功能升级或者Bug修改,远程监控端可以通过WIFI、蓝牙、lora、以太网等模块将工

STM32开发笔记04---配置系统时间

架构图 思考重点 本文的目的是使用HSE外部晶振来配置系统时钟参考手册中的时钟树如何理解理解开发版初始化过程中对系统时钟的操作如何自行变更系统时钟 配置时钟源 在开发版STM32F429,以HSE, HSI, PLL作为主要