我手头上用的keil 5.0的开发环境,仿真调试器工具用的山寨ulink2。想利用仿真器打印printf的调试信息在开发环境的debug(printf) view窗口上。
#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) { while (ITM_Port32(0) == 0); ITM_Port8(0) = ch; } return(ch); }
按照上述要求进行修改了,还是出现死循环的现象,暂时搁置到这里了,下次接着调吧
参考资料:
STM32用JLINK V8 SWD输出调试信息到ITM Viewer的问题(转)
原文:http://blog.csdn.net/yongyooh/article/details/19112013