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

使用Jlink打印单片机的调试信息

1.在工程中添加6个文件
在这里插入图片描述
除去RTT_Debug.h外的其他几个文件在jlink安装目录
在这里插入图片描述
在这里插入图片描述

RTT_Debug.h的内容如下

#ifndef _RTT_H_
#define _RTT_H_#include "SEGGER_RTT.h"#define STR_DEBUG
//#define USART_DEBUG#define DBGLOG
#define DBGWARNING
#define DBGERROR#if defined(STR_DEBUG)
#define _S_LINE(x) #x
#define __S_LINE(x) _S_LINE(x)
#define __S_LINE__ __S_LINE(__LINE__)#if defined(DBGLOG)
#define DBG_log(format, ...) SEGGER_RTT_printf(0,RTT_CTRL_TEXT_GREEN"[log]"RTT_CTRL_RESET format"["__FILE__ ":" __S_LINE__ "]\r\n",##__VA_ARGS__)
#else
#define DBG_log(format, ...)
#endif#if defined(DBGWARNING)
#define DBG_Warning(format, ...) SEGGER_RTT_printf(0,RTT_CTRL_TEXT_YELLOW"[Warning!]"RTT_CTRL_RESET format"["__FILE__ ":" __S_LINE__ "]\r\n",##__VA_ARGS__)
#else
#define DBG_Warning(format, ...)
#endif#if defined(DBGERROR)
#define DBG_Error(format, ...) SEGGER_RTT_printf(0,RTT_CTRL_TEXT_RED"[!Error!]"RTT_CTRL_RESET format"["__FILE__ ":" __S_LINE__ "]\r\n",##__VA_ARGS__)
#else
#define DBG_Error(format, ...)
#endif#else
#if defined(USART_DEBUG)#if defined(DBGLOG)
#define DBG_log(format, ...) printf("[log]"format"["__FILE__ ":" __S_LINE__ "]\r\n",##__VA_ARGS__)
#else
#define DBG_log(format, ...)
#endif#if defined(DBGWARNING)
#define DBG_Warning(format, ...) printf("[Warning!]"format"["__FILE__ ":" __S_LINE__ "]\r\n",##__VA_ARGS__)
#else
#define DBG_Warning(format, ...)
#endif#if defined(DBGERROR)
#define DBG_Error(format, ...) printf("[!Error!]"format"["__FILE__ ":" __S_LINE__ "]\r\n",##__VA_ARGS__)
#else
#define DBG_Error(format, ...)
#endif#else
#define DBG_log(format, ...)
#define DBG_Warning(format, ...)
#define DBG_Error(format, ...)#endif#endif#endif

2.添加头文件
在这里插入图片描述
3.调用API
在这里插入图片描述

4.编译,烧录

5.打开jlink rtt viewer
在这里插入图片描述

可以观察到调试信息
在这里插入图片描述

相关文章:

  • 数据结构编程实践20讲(Python版)—04队列
  • Django 常用注解
  • slam入门学习笔记
  • 某系统超级管理员密码重置通用型
  • ECMAScript与JavaScript的区别:深入解析
  • Virtio半虚拟化基本原理简介
  • 有关在.Net Core中以TEXT类型将Json格式字段存到数据库的学习
  • 孩子英语不好,能学编程吗?
  • 如何选择适合的编程工具提高工作效率
  • mysql学习教程,从入门到精通,SQL UNION 运算符(27)
  • 构建高可用和高防御力的云服务架构第二部分:SLB负载均衡(2/5)
  • muduo网络库介绍
  • 机器学习-模型集成
  • 信息安全工程师(25)网络安全体系框架主要组成和建设内容
  • WebAPI编程(第三天,第四天)
  • 2017前端实习生面试总结
  • Django 博客开发教程 8 - 博客文章详情页
  • eclipse(luna)创建web工程
  • Javascript 原型链
  • maya建模与骨骼动画快速实现人工鱼
  • node 版本过低
  • Quartz初级教程
  • 入手阿里云新服务器的部署NODE
  • 深入浅出webpack学习(1)--核心概念
  • 新书推荐|Windows黑客编程技术详解
  • 译米田引理
  • - 转 Ext2.0 form使用实例
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​低代码平台的核心价值与优势
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #include<初见C语言之指针(5)>
  • #window11设置系统变量#
  • $.proxy和$.extend
  • ${ }的特别功能
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (1)(1.9) MSP (version 4.2)
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (ZT)出版业改革:该死的死,该生的生
  • (笔记)M1使用hombrew安装qemu
  • (编译到47%失败)to be deleted
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (新)网络工程师考点串讲与真题详解
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)人的集合论——移山之道
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .net开发引用程序集提示没有强名称的解决办法
  • .NET开源快速、强大、免费的电子表格组件
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • :O)修改linux硬件时间