mdk 軟件內調試 debug (printf)

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、按照上面,全速運行之後,在終端頁面就可以看到打印數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章