在用MDK软件做软件仿真时,通常用到printf()函数,为了在软仿下,用printf()函数能在 Debug (printf) Viewer窗口下能看到正确数据,需做以下配置:

   (1) 打开keil的工程设置,在Targe下勾选Use Cross-ModuleOptimizationUse MicroLIB选项,具体如下图

      wKiom1na3x_ju6FjAACQiaoTonI617.png-wh_50    

2)在自己的main.c中添加代码:

    #include <string.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) {

        while (ITM_Port32(0) == 0);

        ITM_Port8(0) = ch;

      }

      return(ch);

    }

3)设置工程为软仿。如下图

wKioL1na3vjBDWeNAABxYNLhSTc964.png-wh_50 

4)编译,并进入调试窗口,在view->Serial Windows->Debug (printf) Viewer,这样就打开了Debug (printf) Viewer窗口,其次软仿自己的程序