当前位置: 首页 > news >正文

SEGGER | 基于STM32F405 + Keil - RTT组件02 - RTT Viewer替代串口调试,实时打印调试log

导言


J-LINK RTT Viewer不需要USART,只需SWD接口就可以实现高速调试信息打印(J-LINK RTT Viewer),数据可视化(J-Scope),且移植过程非常简单。

开发板 + JLink:
在这里插入图片描述
在这里插入图片描述
如上所示,在J-LINK RTT Viewer软件上打印调试log,分别在终端0、终端1、终端2上。
项目源码:https://github.com/q164129345/MCU_Develop/tree/main/jlink_rtt_viewer
J-LINK驱动下载:https://www.segger.com/products/debug-probes/j-link/tools/rtt-viewer/
官方文档:https://wiki.segger.com/RTT

一、代码


1.1、main.h

在这里插入图片描述
在main.h添加#include "SEGGER_RTT.h"

1.2、main.c在这里插入图片描述

在这里插入图片描述

二、编译、烧录


在这里插入图片描述
如上图所示,0 Error,0 Warning.

三、J-LINK RTT Viewer


在这里插入图片描述
如上所示,打开RTT Viewer后,按照以上配置即可,点击OK即可查看Log。
在这里插入图片描述

四、细节补充


4.1、SEGGER_RTT_WriteString()与SEGGER_RTT_printf()的区别是什么?

优先使用 SEGGER_RTT_WriteString():简单场景下效率更高,减少系统开销。在需要动态内容时选择 SEGGER_RTT_printf(),但要注意控制格式化内容的复杂度,避免不必要的性能损失。

SEGGER_RTT_WriteString()

功能

  • 用于将一个固定字符串直接写入 RTT 通道。
  • 不支持格式化操作,只能发送纯字符串。
    优点
  • 效率高:因为不需要格式化处理,直接将字符串写入缓冲区。
  • 代码简单:只需传递字符串指针,操作简单直观。
    用法
SEGGER_RTT_WriteString(0, "Hello, RTT!\n");

适用场景

  • 输出简单的调试信息(如固定文本或日志标记)。
  • 不需要动态内容或复杂的格式化处理。

SEGGER_RTT_printf()

功能

  • 类似于标准库的 printf(),支持格式化字符串
  • 允许将变量值嵌入字符串中动态输出。
    优点
  • 灵活性高:支持格式化占位符(如 %d, %s, %f 等),适合需要动态内容的情况。
  • 功能强大:能够生成复杂的输出内容。
    用法
int value = 42;
SEGGER_RTT_printf(0, "The answer is %d\n", value);

适用场景

  • 需要输出动态数据或变量值。
  • 需要格式化显示内容,例如对齐、填充、精度控制等。

4.2、log字体颜色设置

只有SEGGER_RTT_WriteString()支持修改字体颜色,SEGGER_RTT_printf()不支持修改字体颜色
摘自:https://wiki.segger.com/RTT

在这里插入图片描述
在这里插入图片描述
如上所示。在代码SEGGER_RTT.h里能找到这些字体颜色选项。

// 用法
SEGGER_RTT_WriteString(0,RTT_CTRL_TEXT_RED"Hello,World\n"); // 红色字体
SEGGER_RTT_WriteString(0,RTT_CTRL_TEXT_YELLOW"Hello,World\n"); // 黄色字体
SEGGER_RTT_WriteString(0,RTT_CTRL_TEXT_BLUE"Hello,World\n");  // 蓝色字体
SEGGER_RTT_WriteString(0,RTT_CTRL_TEXT_GREEN"Hello,World\n"); // 绿色字体

http://www.mrgr.cn/news/80202.html

相关文章:

  • 渗透测试-前端验签绕过之SHA256+RSA
  • 计算机毕业设计PySpark+PyFlink+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Hadoop 机器学习 深度学习
  • cuda附加到python进程(vscode)
  • 代码随想录-算法训练营-番外(图论03:孤岛的总面积,沉没孤岛,水流问题,建造最大岛屿)
  • 【数据库】Oracle
  • 【漏洞复现】CVE-2024-34102 Magento Open Source XXE漏洞
  • 【通信网络】二层基础:02 VLAN基础之一
  • 深入理解RSA算法:核心概念与原理详解
  • Linux shell的七大功能 --- history
  • 测试工程师八股文04|计算机网络 和 其他
  • MySQL 存储过程与函数:增强数据库功能
  • Quad Remesher使用教程
  • 区间和并—acwing
  • backtesting.py介绍和相关资料
  • 29.在Vue 3中使用OpenLayers读取WKB数据并显示图形
  • 学习笔记069——Java集合框架
  • 理解数据结构 hashtable的简易理解思路
  • 米哈游前端面试题及参考答案
  • [OpenGL] Transform feedback 介绍以及使用示例
  • More Effective C++之操作符operators
  • gpu硬件架构
  • 《拉依达的嵌入式\驱动面试宝典》—前言目录篇
  • 操作系统内存管理
  • c语言数据结构与算法--简单实现线性表(顺序表+链表)的插入与删除
  • Leetcode二叉树部分笔记
  • 单片机最小系统