stm32项目中重定向printf打印不出来东西?三种解决方案

项目场景:

在stm32项目中为了调试将某些参数打出来,重定向printf


问题描述

printf打印不出东西
在这里插入图片描述
缓冲区满了才打印出来
在这里插入图片描述


原因分析:

使用printf函数必须等到缓冲区满或程序结束时,才进行写入到屏幕


解决方案:

解决方法一:加 \n 回车
在这里插入图片描述
解决方法二: 加 fflush(stdout); 刷新输出流将缓冲区中的数据立即写入到文件(或显示设备)中,而不是等到缓冲区满或程序结束时才进行写入。
在这里插入图片描述
解决方法三: 在初始化中加入 setvbuf(stdout, NULL, _IONBF, 0); 将缓冲区置为0
在这里插入图片描述