通过JLink的SWD接口实现printf功能!!
芯片STM32F103RC,仿真工具使用了JLink V8 ,在Debug环境中使用
必须使用SW模式,并且必须连接SWO!很多精简版的JLink只保留了GND、SWC、SWD,若想使用此功能,必须将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、 打开工程配置
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小时内删除。
发表评论