Keil 4通过printf打印到Debug(printf)Viewer窗口

1. 首先添加头文件 #include <stdio.h>

2. 增加以下代码到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       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. 添加printf到需要的文件中,加载程序

4. 菜单View-------SerialWindows-------Debug(printf)Viewer,打开窗口

5. 打印内容即会出现在Debug(printf)Viewer中

6. 这里本来应该结束了,多插一句,如果要实现printf到串口,实际只需要改动fputc这个函数即可,举一反三的事情就留给各位看客了

猜你喜欢

转载自blog.51cto.com/1537720/2495174
今日推荐