运用keil的ULINK2下的ITM机制打印调试信息

来源:互联网 发布:创维电视机推荐 知乎 编辑:程序博客网 时间:2024/05/22 03:22



     我手头上用的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          0x01000000struct __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);}

     打开keil\arm\startup\stm32dbg.ini文件,DBGMCU_CR的TRACE_IOEN位,需要在调试文件STM32DBG.INI中配置,默认是0,选为1即可。否则程序就会在while (ITM->PORT[0].u32 == 0);处死循环。

    按照上述要求进行修改了,还是出现死循环的现象,暂时搁置到这里了,下次接着调吧


    参考资料:

STM32用JLINK V8 SWD输出调试信息到ITM Viewer的问题(转)

                                             
0 0
原创粉丝点击