当前位置:网站首页>【嵌入式开源库】使用J-Link打印日志,让你节省一个打印串口
【嵌入式开源库】使用J-Link打印日志,让你节省一个打印串口
2022-08-11 05:09:00 【凉开水白菜】
简介
EGGER RTT支持使用J-link调试器输出来自目标微控制器的信息,也可以接收输入,并且在高速度交互的同时不会影响目标处理器的实时性,可以省掉平常打印日志用的串口。
RTT工具支持 ARM Cortex-M0/M0+/M1/M3/M4/M7/M23/M33 内核和瑞萨 RX100/200/600 内核。
RTT工具的源码实现提供了完整的功能,可以自由使用。RTT的源码是作为J-Link软件包的一部分,在Jlink安装目录中的 Sample/RTT中,默认安装路径如下
本章使用环境:
正点原子stm32F4探索者
代码工程使用正点原子HAL库 实验0-1 Template工程模板-新建工程章节使用
工程移植

将压缩包中的RTT文件夹复制到工程目录中,然后再keil中添加该目录中的文件,并包含路径

到这里移植已经完成了,然后我们可以再main函数中测试一下
简单使用
#include "SEGGER_RTT.h" // 包含的头文件
// main函数中添加
SEGGER_RTT_printf(0, RTT_CTRL_TEXT_BRIGHT_BLACK"Hello, SEGGER RTT---%d!\r\n",i++);
SEGGER_RTT_printf(0, RTT_CTRL_TEXT_BRIGHT_RED"Hello, SEGGER RTT---%d!\r\n",i++);
SEGGER_RTT_printf(0, RTT_CTRL_TEXT_BRIGHT_GREEN"Hello, SEGGER RTT---%.2f!\r\n",1.23);
然后我们打开JLinkRTTViewer工具

选择USB模式,芯片选择自己对应的芯片,Interfance和speed根据自己的连接方式选择,Control Bolck选择Auto模式
Jlink支持三个虚拟串口,可以通过下面方式打开
程序中也需要进行修改通过SEGGER_RTT_SetTerminal(0);函数来修改虚拟串口号
SEGGER_RTT_SetTerminal(0);
SEGGER_RTT_printf(0, RTT_CTRL_TEXT_BRIGHT_BLACK"Hello, SEGGER RTT---%d!\r\n",i++);
SEGGER_RTT_SetTerminal(1);
SEGGER_RTT_printf(0, RTT_CTRL_TEXT_BRIGHT_RED"Hello, SEGGER RTT---%d!\r\n",i++);
SEGGER_RTT_SetTerminal(2);
SEGGER_RTT_printf(0, RTT_CTRL_TEXT_BRIGHT_GREEN"Hello, SEGGER RTT---%.2f!\r\n",1.23);
颜色打印有以下定义
#define RTT_CTRL_TEXT_BLACK "\x1B[2;30m"
#define RTT_CTRL_TEXT_RED "\x1B[2;31m"
#define RTT_CTRL_TEXT_GREEN "\x1B[2;32m"
#define RTT_CTRL_TEXT_YELLOW "\x1B[2;33m"
#define RTT_CTRL_TEXT_BLUE "\x1B[2;34m"
#define RTT_CTRL_TEXT_MAGENTA "\x1B[2;35m"
#define RTT_CTRL_TEXT_CYAN "\x1B[2;36m"
#define RTT_CTRL_TEXT_WHITE "\x1B[2;37m"
#define RTT_CTRL_TEXT_BRIGHT_BLACK "\x1B[1;30m"
#define RTT_CTRL_TEXT_BRIGHT_RED "\x1B[1;31m"
#define RTT_CTRL_TEXT_BRIGHT_GREEN "\x1B[1;32m"
#define RTT_CTRL_TEXT_BRIGHT_YELLOW "\x1B[1;33m"
#define RTT_CTRL_TEXT_BRIGHT_BLUE "\x1B[1;34m"
#define RTT_CTRL_TEXT_BRIGHT_MAGENTA "\x1B[1;35m"
#define RTT_CTRL_TEXT_BRIGHT_CYAN "\x1B[1;36m"
#define RTT_CTRL_TEXT_BRIGHT_WHITE "\x1B[1;37m"
#define RTT_CTRL_BG_BLACK "\x1B[24;40m"
#define RTT_CTRL_BG_RED "\x1B[24;41m"
#define RTT_CTRL_BG_GREEN "\x1B[24;42m"
#define RTT_CTRL_BG_YELLOW "\x1B[24;43m"
#define RTT_CTRL_BG_BLUE "\x1B[24;44m"
#define RTT_CTRL_BG_MAGENTA "\x1B[24;45m"
#define RTT_CTRL_BG_CYAN "\x1B[24;46m"
#define RTT_CTRL_BG_WHITE "\x1B[24;47m"
#define RTT_CTRL_BG_BRIGHT_BLACK "\x1B[4;40m"
#define RTT_CTRL_BG_BRIGHT_RED "\x1B[4;41m"
#define RTT_CTRL_BG_BRIGHT_GREEN "\x1B[4;42m"
#define RTT_CTRL_BG_BRIGHT_YELLOW "\x1B[4;43m"
#define RTT_CTRL_BG_BRIGHT_BLUE "\x1B[4;44m"
#define RTT_CTRL_BG_BRIGHT_MAGENTA "\x1B[4;45m"
#define RTT_CTRL_BG_BRIGHT_CYAN "\x1B[4;46m"
#define RTT_CTRL_BG_BRIGHT_WHITE "\x1B[4;47m"
在正点原子的工程中已经重定向printf了,所以我们需要在该文件中去修改
SEGGER_RTT_PutChar(0, ch); // 需要包含头文件使用

边栏推荐
- 如何阅读论文
- [No 2022 Shanghai Security Officer A Certificate Exam Question Bank and Mock Exam
- 金仓数据库 KingbaseGIS 使用手册(6.8. 几何对象输入函数)
- 2021年网络规划设计师下午案例题
- paddlepaddle实现CS_CE Loss且并入PaddleClas
- CAD2020 打开错误报告 e06d7363h Exception at 13644F69h
- Internet Protocol 1
- send_sig: kernel execution flow
- vector中resize() 用法排坑
- C语言:实用调试技巧
猜你喜欢

How to use svg-icon (svg-sprite-loader plugin)

Prometheus :(一)基本概念

Paper Notes: Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks

MySQL must know and must know (primary articles)

Switch and Router Technology - 25 - OSPF Multi-Area Configuration

绿盾加密如何顺利切换成IP-Guard加密

Switch and Router Technology - 22/23 - OSPF Dynamic Routing Protocol/Link State Synchronization Process

Switch and Router Technology-34-Dynamic NAT

leetcode 9. Palindromic Numbers

Switches and routers technologies - 30 - standard acls
随机推荐
HAVE FUN | "SOFA Planet" spacecraft plan, the latest progress of source code analysis activities
ESP8266 教程3 — 通过TCP组建局域网并通信
02. Fold hidden text
BGP Comprehensive Experiment
ALSA音频架构
2022年质量员-土建方向-通用基础(质量员)考试模拟100题及在线模拟考试
项目实战第二十七讲:状态模式在重名品牌中的应用
guava RateLimiter均匀限流
Golden Warehouse Database KingbaseGIS User Manual (6.10. Geometric Object Operation Operator)
FPGA工程师面试试题集锦121~130
How to use svg-icon (svg-sprite-loader plugin)
ALSA音频架构 -- snd_pcm_open函数分析
In the closing pages/uninstall (unload) sends a request to the server before the document
vector中resize() 用法排坑
[QNX Hypervisor 2.2用户手册]10.15 vdev timer8254
C语言题解:谁是凶手!
我的LaTeX入门
ALSA音频架构 -- aplay播放流程分析
form form submission database Chinese becomes a question mark
论文笔记:Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks