Jlink、SWD、Printf重定向输出

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

#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;
typedef   signed           int int32_t;
volatile int32_t ITM_RxBuffer=0;

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重定向输出_第1张图片

选中Track Enable

Jlink、SWD、Printf重定向输出_第2张图片

3、利用软件仿真模式

Jlink、SWD、Printf重定向输出_第3张图片

4、进入debug模式

Jlink、SWD、Printf重定向输出_第4张图片

选中之后,然后全速运行,即可在该窗口中显示信息。
Jlink、SWD、Printf重定向输出_第5张图片

5、DEMO链接地址

你可能感兴趣的:(STM32系列)