J-Scope的RTT模式

📅 2026/7/19 19:23:07 👁️ 阅读次数 📝 编程学习
J-Scope的RTT模式

目录


前言

环境:

芯片:

Keil:V5.35.0.2


一、代码准备

通过网盘分享的文件:Jscope.7z

链接:https://pan.baidu.com/s/1y_KDlPv8L8A1YQNjoGFWmg?pwd=5q2g 提取码:5q2g 复制这段内容后打开百度网盘手机App,操作更方便哦

将文件下载并解压

将文件放到工程内:

添加注意事项:

需要将头文件包含进去。

代码编写:初始化代码

uint8_t buf[1048]; //定义全局变量 int main(void) { SEGGER_RTT_ConfigUpBuffer(1, "JScope_u2u2u2u2u2u2u2u2", buf, 1048, SEGGER_RTT_MODE_NO_BLOCK_SKIP);//初始化RTT模块 while(1) { //... } }

参数说明:

第一个参数:索引值,好像都是1,

第二个参数:类型:char* sName;这个值有讲究,所以我传输的值是8个无符号16位数据

示例:

如下,是在100us中断中增加的带有时间戳的代码,增加后JS cope中将不在有Symbol No 0

但是将会有时间,注意,增加的单位是us,如果放在ADC或其他不确定时间的中断中,时间将不准。

SEGGER_RTT_ConfigUpBuffer(1, "JScope_t4u4u4u4u4u4u4u4", buf, 1048, SEGGER_RTT_MODE_NO_BLOCK_SKIP);//初始化RTT模块 void SysTick_Handler(void)//100us中断 { rtt_data[0] += 100;//中断时间必须准确。否则后面的时间将不准 SEGGER_RTT_Write(1,&rtt_data,32); }

第三个参数:定义的全局变量名

第四个参数:定义的全局变量大小,需要一一对应。上同

第五个参数:RTT模式固定参数:SEGGER_RTT_MODE_NO_BLOCK_SKIP

数据传输代码:这个代码可以随处放置。看需要,如果放在100us中断,则频率就是10K。

uint16_t rtt_data[8]={0}; rtt_data[0] = 0; rtt_data[1] += 1; rtt_data[2] <<= 1; rtt_data[3] += 3; SEGGER_RTT_Write(1,&rtt_data,16);

参数说明

1.固定值

2.调用数据地址

3.每次更新的字节,配合我上面的8个16位数据

以上为代码部分。

二、J-Scope设置

1.

1.选择芯片型号,如果没有自己的芯片型号。看下面的操作步骤

2.速度,最好选择高速以便兼容。

无芯片操作步骤:

在打开的快捷方式路径里添加: --rttsearch "0x20000000 0x2000"

注意前面有一个空格。

参数说明:数据来自芯片的大小,根据这两个数据来修改就可以了。

2.直接开始

连接芯片,通电让MCU工作起来。然后点击Jscope开始。

Jscope会自己搜索RTT的参数。

因为是上传的参数,所以程序的变更也不会影响搜索的参数。


总结