stm32 打印調試的時候,大部分使用硬件串口進行打印輸出。但是近期一個項目中遇到一個問題。就是串口已經都被佔用了。沒有其他的串口進行打印輸出了。對解決問題產生了很大的干擾。基於這個問題,我想了好多辦法。最後發現在MDK 軟件裏面,可以使用調試接口,進行打印輸出。省了一個串口。
操作辦法,直接上圖:
1、找到軟件的魔術棒
2、軟件設置順序
3、需要在軟件中添加代碼
#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);
}
4、打開調試界面,操作步驟
5、按照上面,全速運行之後,在終端頁面就可以看到打印數據。