解决STM32使用printf通过串口输出中文乱码的问题


一、问题阐述

最近在学习hal库串口通信时,对printf进行重定向,发现当输出字符为数字字母时,串口打印正常;当输出字符为中文时,串口打印乱码。
在这里插入图片描述

二、解决步骤

1.查看波特率是否匹配

起初以为是波特率不匹配的问题,大部分都是这种,仔细检查代码发现串口1和串口2的波特率都是115200,串口助手设置的波特率也是匹配的。
在这里插入图片描述

2.查看编码格式是否正确

后来我想到了查看编码,这时刚好我关闭vscode,用keil打开工程,发现编码也是GB2312,感觉没什么问题,再次编译烧录打印出来的字符还是乱码,但是我用之前备份的文件printf中文字符烧录又每什么问题。
在这里插入图片描述
之后想不明白,用vscode打开了工程发现右下角的编码格式编程了utf-8。在这里插入图片描述
立刻修改编码格式为GB2312保存重新编译烧录,问题解决! 在这里插入图片描述
参考:
https://www.cnblogs.com/zhaoo-o/articles/17280529.html

总结

用vscode打开keil的工程要注意看编码是否正确,注意即使编码格式不是GB2312中文也有可能会正常显示,更改编码时要关闭keil,不要双开!
仔细看上面的问题阐述,一步步做下来就可以了。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/miaoyulun/article/details/131794264