JLink的SWO 调试设置方法

JLink的SWO 调试设置方法目前 JLINK 的功能越来越强大 为了解放 UART 在调试的时候方便 printf 打印所需要的信息 下面说下 SWO 的使用方法以及步骤 以 STM32F103C8T 为例 SWO 接口即为 JLink 的 TDO 接口 实现下图的功能第一步 按照下图设置在 Project 里会生成 Compiler 菜单第二部 在设置选项里操作如下选项第三步 在代码里添加下列指令 进行 p

目前JLINK的功能越来越强大,为了解放UART,在调试的时候方便printf打印所需要的信息,下面说下SWO的使用方法以及步骤。

以STM32F103C8T6为例:SWO接口即为JLink的TDO接口。

实现下图的功能

JLink的SWO 调试设置方法

第一步:按照下图设置

JLink的SWO 调试设置方法

在Project里会生成Compiler菜单

JLink的SWO 调试设置方法

第二部:在设置选项里操作如下选项

JLink的SWO 调试设置方法

第三步:在代码里添加下列指令,进行printf的重定向。

#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))

#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))

#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))

#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))

#define TRCENA          0x0

struct __FILE { int handle; /* Add whatever you need here */ };

FILE __stdout;

FILE __stdin;

int fputc(int ch, FILE *f) {

  if (DEMCR & TRCENA) {

    while (ITM_Port32(0) == 0);

    ITM_Port8(0) = ch;

  }

  return(ch);

}

与下图一样

JLink的SWO 调试设置方法

第四步:在main函数里,就可以直接printf打印了。

JLink的SWO 调试设置方法

第五步:对程序进行编译下载,然后开始你debug的swo输出之旅

在debuge调试框里添加printf窗口

JLink的SWO 调试设置方法

调试打印信息如下所示

JLink的SWO 调试设置方法

问题总结:

      使用stm32cubemx生成的代码debug不能正常运行

      STM32F103出现CPU could not be halted问题的解决方案JLink的SWO 调试设置方法

解决办法:

将HAL_MspInit()的__HAL_AFIO_REMAP_SWJ_DISABLE();注释掉,换成

__HAL_AFIO_REMAP_SWJ_NOJTAG();

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229718.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午4:03
下一篇 2026年3月16日 下午4:03


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号