STM32程序中使用printf打印中文字符乱码

STM32程序printf打印中文字符到串口出现乱码解决方法


作者 : 李剀
出处 :

https://blog.csdn.net/Kevin_8_Lee/

或者

https://www.cnblogs.com/kevin-nancy/

欢迎转载,但也请保留上面这段声明。 谢谢! (以上两个链接均是我个人的博客,只是在不同的平台上面)


前言:

相信同我一样,有一部分同学在写单片机程序的时候喜欢用printf打印相关信息到串口,然后在串口调试助手看数据变化。

但是我之前在使用printf去打印中文字符的时候,出现了乱码,这种问题以前也碰到过,只是没去深究为什么,往往都是重新建工程,写代码。 但是时隔很久,又再次碰到这个问题,就想好好把这个问题修改完,


我是使用的IAR平台,使用的keil的小伙伴也可以用这个方法解决,都是一样的。

1、首先看一下错误。串口打印中文,串口助手出现乱码。经检查不是波特率的问题

在这里插入图片描述

因为每次用CubeMX配置完之后生成代码,IAR都是以默认编码UTF-8编码的,所以导致了中文乱码,如果设置成系统设置,也会乱码,错误设置如下(同样,keil也有可能是这样的情况跟,可以尝试用类似的方法解决)

在这里插入图片描述

只要改成GB2312中文编码即可,但是这里改正之后编译下载,并不行,因为还是utf-8,

可以看到右下角还是utf-8

需要重启一下IAR软件

如果重启不可以,就用记事本或者你们个人使用的查看代码的软件打开src文件夹里面的main.c 然后另存为GB2312编码格式的

我用的是VScode,直接另存就可以了,之哟啊保存为GB2312或者GBK编码格式就可以,然后打开IAR或者keil工程
注: 其他编辑器例如sublime,记事本,notepad++,sourceinsight等等,都可以做的
在这里插入图片描述
这里提示的是中文编码就可以了

关于如何使用printf,可以参考我的另一篇博客—>>> 关于重定向printf出错 Error[Pe020]: identifier “FILE” is undefined 解决方案,里面有重定向printf函数的代码,有什么不懂得可以留言评论,能力有限,如果写的不足的也麻烦各位指出,可以探讨一下

只有心中怀揣着火热的梦想时,人生才是最美丽的 加油吧!

posted @ 2019-08-04 19:38  K35inL  阅读(3835)  评论(0编辑  收藏  举报