天天看點

Jlink、SWD、Printf重定向輸出

1、在代碼中加入一下printf的重定向代碼

#define ITM_Port8(n)    (*((volatile unsigned char *)(xE0000000+*n)))
#define ITM_Port16(n)   (*((volatile unsigned short*)(xE0000000+*n)))
#define ITM_Port32(n)   (*((volatile unsigned long *)(xE0000000+*n)))
#define DEMCR           (*((volatile unsigned long *)(xE000EDFC)))
#define TRCENA          x01000000

struct __FILE {
    int handle; /* Add whatever needed */
};
FILE __stdout;
FILE __stdin;
typedef   signed           int int32_t;
volatile int32_t ITM_RxBuffer=;

int fputc(int ch, FILE *f) {
    if (DEMCR & TRCENA) {
        while (ITM_Port32(0) == 0);
        ITM_Port8(0) = ch;
    }
    return(ch);
}
           

2、到debug菜單下點選settings

Jlink、SWD、Printf重定向輸出

選中Track Enable

Jlink、SWD、Printf重定向輸出

3、利用軟體仿真模式

Jlink、SWD、Printf重定向輸出

4、進入debug模式

Jlink、SWD、Printf重定向輸出

選中之後,然後全速運作,即可在該視窗中顯示資訊。

Jlink、SWD、Printf重定向輸出

5、DEMO連結位址

繼續閱讀