0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于一种高效printf打印方式

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 作者:黄工的嵌入式技术 2020-02-29 16:29 次阅读

1写在前面

SWO:Serial Wire Output,串行线输出

RTT:Real Time Transfer,实时传输

前面SWO文章,实现原理是通过MCU的SWO引脚输出信息(到显示终端SWV)。

而本文讲述的RTT不需要通过额外SWO引脚,即可实现printf输出,而且性能(耗时)远高于SWO。

2关于RTT

SEGGER实时传输(RTT)是一种在嵌入式应用中实现交互式用户I/O的技术。

它结合了SWO和半主机( semihosting)的优点,具有很高的性能。

使用RTT,可以从目标微控制器输出信息,并以非常高的速度向应用程序发送输入,而不会影响目标的实时性。

Cortex - M0不支持SWO,而本文讲述的RTT则支持Cortex - M0,文末提供STM32F0工程。

3关于J-Link RTT Viewer

J-Link RTT Viewer是在调试主机上使用RTT功能的Windows GUI应用程序。

RTT Viewer可以独立使用,打开自己与J-Link的连接,并与正在运行的调试会话目标或并行,连接到它并使用现有的J-Link连接。

RTT Viewer支持RTT的主要功能:

·通道0上的终端输出

·将文本输入发送到通道0

·最多16个虚拟终端,只有一个目标通道

·控制文本输出:彩色文本,擦除控制台

·在通道1上记录数据

·

·

本文主要结合J-Link RTT Viewer讲述,当然支持RTT的还有J-Link RTT Client 和J-Link RTT Logger。

更多相关介绍,可以参看:

https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer

(公号不支持外链接,请复制链接到浏览器打开)

4获取RTT源码

我们需要在工程中添加RTT源码,同时需要J-Link RTT Viewer查看器支持。

J-Link / J-Trace下载地址(Windows版本):

https://www.segger.com/downloads/jlink/JLink_Windows.exe

安装之后,在安装目录下包含RTT源码:

C:Program Files (x86)SEGGERJLinkSamplesRTT

解压SEGGER_RTT_V***.zip之后,复制整个RTT目录源码到你工程。

提示:

解压之后,只需复制RTT目录就行。

4.1 添加RTT到工程

添加源码文件到工程主要有两个步骤:1.添加源码文件到工程。 2.添加文件路径。

这里不讲述具体添加过程,Keil 和 IAR之前有讲述,请参看我的文章:

Keil新建基础软件工程

IAR新建基础软件工程

当然,我下面有提供添加好的源码工程。

4.2 应用程序

调用RTT的打印,和常规的printf类似。

添加头文件:#include "SEGGER_RTT.h"

再调用SEGGER_RTT_printf函数打印输出:

这里SEGGER_RTT_printf和print不同的是:前面多了一个“终端号”参数。(我们使用终端0)

5RTT Viewer配置、输出

和前面讲述的SWV查看器类似,配置相关信息即可输出。

安装目录:C:Program Files (x86)SEGGERJLink

下载程序到MCU,连接J-Link,打开安装目录下的J-Link RTT Viewer,配置参数:

输出效果:

6下载

为方便大家理解,提供源码工程下载,参考代码:

STM32F051(HAL)_JLink-RTT

STM32F103(HAL)_JLink-RTT

百度网盘:

https://pan.baidu.com/s/1aYBuHtOgtLqLvj6SsMYlQA

提取码:nbd3

提示:

1.公众号不支持外链接,请复制链接到浏览器打开。

2.源码仅供个人学习参考,不一定适用于实际项目。

3.若链接失效,请关注公众号,回复『printf系列教程』获取最新链接。

7

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 串行
    +关注

    关注

    0

    文章

    237

    浏览量

    33765
  • SWOT
    +关注

    关注

    0

    文章

    4

    浏览量

    7958
  • Printf
    +关注

    关注

    0

    文章

    81

    浏览量

    13602
收藏 人收藏

    评论

    相关推荐

    一种简单高效配置FPGA的方法

    本文描述了一种简单高效配置FPGA的方法,该方法利用微处理器从串行外围接口(SPI)闪存配置FPGA设备。这种方法减少了硬件组件、板空间和成本。
    的头像 发表于 10-24 14:57 228次阅读
    <b class='flag-5'>一种</b>简单<b class='flag-5'>高效</b>配置FPGA的方法

    激光打印机好还是喷墨式打印机好

    激光打印机与喷墨式打印机作为目前市场上主流的两打印设备,各自具有独特的特点和适用场景。 、激光打印
    的头像 发表于 10-14 13:48 361次阅读

    还不会吗?三分钟让你速通Printf~

    Printf简介Printf个标准的c库API,用来打印信息显示的。Printf的底层输
    的头像 发表于 07-27 08:11 227次阅读
    还不会吗?三分钟让你速通<b class='flag-5'>Printf</b>~

    STM32CubeIDE printf浮点数,浮点数丢失数值的原因?

    出来:第一种情况:A=2.0000;B=0.0000;第二情况:A=-2.0000; B
    发表于 06-03 07:07

    CC2340R5无法读取到按键按下的动作怎么解决?

    电平,自己实现长按/短按的逻辑判断。 调用接口GPIO_read;如下所示: MenuModule_printf()打印方式已调整为滚屏打印; 经验证task1中的GPIO_toggle(CONFIG_GPIO_LED_GRE
    发表于 05-30 07:59

    关于使用DAVE 4开发XMC4200时UART打印的问题求解

    主题关于使用 DAVE 4 开发 XMC4200 时 UART 打印问题的技术询问 目前,我在使用 DAVE 4 为 XMC4200 进行开发时遇到了个问题。 按照论坛上提供的重定向配置指南,我
    发表于 05-21 06:35

    【GD32H757Z海棠派开发板使用手册】第九讲 USART-printf打印实验

    通过本实验主要学习以下内容: •串口简介 •GD32H757串口工作原理 •使用printf打印信息
    的头像 发表于 05-15 11:39 600次阅读
    【GD32H757Z海棠派开发板使用手册】第九讲 USART-<b class='flag-5'>printf</b><b class='flag-5'>打印</b>实验

    【GD32F470紫藤派开发板使用手册】第九讲 USART-printf打印实验

    通过本实验主要学习以下内容: 串口简介 GD32F470串口工作原理 使用printf打印信息
    的头像 发表于 05-13 10:14 1545次阅读
    【GD32F470紫藤派开发板使用手册】第九讲  USART-<b class='flag-5'>printf</b><b class='flag-5'>打印</b>实验

    用keil仿真无法用printf打印怎么解决?

    用keil仿真 无法用printf打印.想用printf重定向到Usart1的方法,使printf打印信息能够在UART#1的窗口
    发表于 04-11 08:20

    STM32的疑难杂症之Printf的使用

    Printf简介Printf个标准的C库API,用来打印信息显示的。Printf的底层输
    的头像 发表于 04-02 08:09 3171次阅读
    STM32的疑难杂症之<b class='flag-5'>一</b>:<b class='flag-5'>Printf</b>的使用

    M487JIDAE如何使用ITM功能实现printf打印?

    M487JIDAE如何使用ITM功能实现printf打印?
    发表于 01-16 08:03

    新型适用于太空的生物打印设备

    科研人员开发了一种嵌入式3D生物打印策略,利用一种悬浮培养基既能3D打印MBT生物墨水,又能原位培养打印出的肿瘤模型(图3A)。
    的头像 发表于 01-11 09:55 426次阅读
    <b class='flag-5'>种</b>新型适用于太空的生物<b class='flag-5'>打印</b>设备

    解决printf无法打印输出的问题

    FreeRTOS中直接使用newlib库是有问题的,相信使用过freertos进行printf都能发现这个问题,这个问题网上有两种方法:1、使用printf.stdarg.c,问题在于,这个库没有
    的头像 发表于 01-04 08:00 1627次阅读
    解决<b class='flag-5'>printf</b>无法<b class='flag-5'>打印</b>输出的问题

    研究人员设计一种新的3D喷墨打印技术

    据悉,只带韧带和肌腱的骨骼机械手现在可以通过次3D打印完成 —— 这是通过一种新的增材制造方法实现的,这种方法可以同时以高分辨率打印刚性
    的头像 发表于 11-20 17:01 675次阅读

    南京理工在3D打印生物光纤研究中获重要进展

    近日,南京理工大学电子工程与光电技术学院沈华教授课题组成功利用自研的悬浮式投影光固化3D打印方法制备出了一种高效、稳定的新型生物光接口—渐变折射率水凝胶光纤
    的头像 发表于 11-14 10:30 795次阅读
    南京理工在3D<b class='flag-5'>打印</b>生物光纤研究中获重要进展