J-Scope的RTT模式 目录前言环境芯片KeilV5.35.0.2一、代码准备通过网盘分享的文件Jscope.7z链接:https://pan.baidu.com/s/1y_KDlPv8L8A1YQNjoGFWmg?pwd5q2g 提取码:5q2g 复制这段内容后打开百度网盘手机App操作更方便哦将文件下载并解压将文件放到工程内添加注意事项需要将头文件包含进去。代码编写初始化代码uint8_t buf[1048]; //定义全局变量 int main(void) { SEGGER_RTT_ConfigUpBuffer(1, JScope_u2u2u2u2u2u2u2u2, buf, 1048, SEGGER_RTT_MODE_NO_BLOCK_SKIP);//初始化RTT模块 while1 { //... } }参数说明第一个参数索引值好像都是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的参数。因为是上传的参数所以程序的变更也不会影响搜索的参数。总结