通过JLinkSWD接口实现printf功能!!
芯片STM32F103RC,仿真工具使用了JLink V8 ,在Debug环境中使用
必须使用SW模式,并且必须连接SWO!很多精简版的JLink只保留了GNDSWCSWD,若想使用此功能,必须将SWO(JTAG模式下的TDO)管脚引出,管脚分布及对应的JTAG接口如下图:
代码:
#include <stdio.h>
#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          0x01000000
struct __FILE { int handle; /* Add whatever needed */ };
FILE __stdout;
FILE __stdin;
int fputc(int ch, FILE *f) {
  if (DEMCR & TRCENA) {
printf怎么实现的    while (ITM_Port32(0) == 0);
    ITM_Port8(0) = ch;
  }
  return(ch);
}
主函数:
#include <stdio.h>
int main(void)
{
  printf("nihao ITM Test\n\r");
    while(1)
    {
    }
}
1 打开工程配置

2 Debug分栏下选择调试器为JLink,并打开Setting
3 Port下拉栏中选择SW模式


4、切换至Trace分栏,在CoreClock中输入当前芯片工作的主频(根据不同的IC,不同的配置,
这里的数据会有所不同,需要注意),并在ITM Stimulus Ports中按照下图所示进行配置,以便让ITM Port0能够捕获信息:
5 进入Debug模式,并在菜单中依此选择View — Serial Windows – Debug(printf) Viewer,此时窗口右下角会出现相应的窗口
6 运行程序,此时就会看到打印出的信息了!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。