现在我们发现一个好的方法,就是只用JLINK一根线,就可以既在线调试程序,同时也可以查看printf显示的数据,方法如下:
首先,建立一个.c 的文件,内容如下:
#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 0x01000000struct __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;}
然后在配置里面(Options for Target)选择调试工具为J-LINK/J-TRACE Cortex,点击Settings,选择Trace选项,使能Trace,时钟选择实际时钟,比如我是72MHz,在ITM Stimulus Ports只勾选Port0,。
最后,点击仿真,选择View---serial windows----debug viewer就可以像在串口调试工具里面一样显示了。