标准库函数printf需要调用fputc函数来实现间字符输出,所以重写fputc函数可以实现将字符输出到ITM跟踪端口,从而在MDK的Debug (printf) Viewer得到打印信息。
keil官网有关于实现的详细步骤
http://www.keil.com/support/man/docs/jlink/jlink_trace_itm_viewer.htm
根据官网说明先创建了一个文件重写了fputc函数,如下:
#include <stdio.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