一、问题阐述
最近在学习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,不要双开!
仔细看上面的问题阐述,一步步做下来就可以了。