网上大神关于基于SWO的printf打印输出4种方式, ·基于Keil的『Debug(printf)Viewer』 ·基于IAR的『Terminal IO』 ·基于ST-LINK Utility的『Serial Wire Viewer』 ·基于J-Link的『SWO Viewer』 现在只有 基于ST-LINK Utility SWO printf打印输出测试是有效的,记录如下: 1、main.c文件中,重定向printf到ITM,实现SWO输出
#include "stdio.h"
........
int fputc(int ch, FILE *f)
{
ITM_SendChar(ch);
return ch;
}
2、keil配置-1 3、keil配置-2 4、ST-LINK Utility配置 5、例程
int main(void)
{
int TEST_num=0;
........
.......
TEST_num=3;
printf("cnt = %d\n", TEST_num);
delay_ms(1000);
TEST_num=6;
printf("cnt = %d\n", TEST_num);
}
以上测试ok。
问题: 如果采用keil debug方式,Debug (printf)Viewer窗口总是不断打印出 ”e0“等乱码,不知道哪里有问题 不死心又试了这个大神的方法,目前有效 Keil中使用Debug (printf) Viewer显示串口信息代替物理串口 这种方式不需要重写int fputc(int ch, FILE *f) 函数。
参考:
使用SWO代替UART,实现Printf打印功能 printf系列教程05_SWO打印输出配置,基于ST-LINK Utility『SWV』 printf系列教程
|