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

摘要:
STM32程序printf将汉字打印到串口以解决乱码问题作者:有些学生在编写SCM程序时喜欢使用printf将相关信息打印到串口,然后在串口调试助手中观察数据变化。然而,当我使用printf打印汉字时,串口助手出现了乱码。检查后,这不是波特率问题。因为每次在CubeMX配置完成后生成代码时,默认情况下IAR都是以UTF-8编码的,这导致了中文乱码。
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函数的代码,有什么不懂得可以留言评论,能力有限,如果写的不足的也麻烦各位指出,可以探讨一下

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

免责声明:文章转载自《STM32程序中使用printf打印中文字符乱码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇simulink模块执行顺序C#学习笔记(6)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

密码学解密网站汇总

0x00.综合 网站中包含大多编码的解码。http://web2hack.org/xssee/https://www.sojson.com/http://web.chacuo.net/ python的反编译 https://tool.lu/pyc/ 0x01.文字倒序排列 http://www.qqxiuzi.cn/zh/daoxu/ 0x02.cmd5解...

无套路,3分钟带你轻松上手SonarQube

前言 想成为一名优秀的工程师,代码质量一定要过关! 开始搭建 SonarQube 1、获取 postgresql 的镜像 $ docker pull postgres 2、启动 postgresql $ docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d...

android安全——Activity劫持的防范程序

如果真的爆发了这种恶意程序,我们并不能在启动程序时每一次都那么小心去查看判断当前在运行的是哪一个程序。因此,前几个星期花了一点时间写了一个程序,叫反劫持助手。原理很简单,就是获取当前运行的是哪一个程序,并且显示在一个浮动窗口中,以帮忙用户判断当前运行的是哪一个程序,防范一些钓鱼程序的欺骗。 在这一次,由于是“正当防卫”,就不再通过枚举来获取当前运行的程序了...

C#刷遍Leetcode面试题系列连载(1)

目录 系列教程索引 为什么要刷LeetCode 刷LeetCode有哪些好处? LeetCode vs 传统的 OJ LeetCode刷题时的心态建设 C#如何刷遍LeetCode 选项1: VS本地Debug + 在线验证后提交 选项2: VS Code本地Debug + 在 LeetCode 插件中验证和提交 安装C#相关插件 配置 .NET...

Android直播实现 Android端推流、播放

原文地址  :http://www.cnblogs.com/endv/p/7487685.html 最近想实现一个Android直播,但是对于这方面的资料都比较零碎,一开始是打算用ffmpeg来实现编码推流,在搜集资料期间,找到了几个强大的开源库,直接避免了jni的代码,集成后只用少量的java代码就可实现编码、推流和取流播放,整理了一下做了一个demo...

PHP条件语句if的使用

方法/步骤 if(条件){是否执行的代码...}:这样的用法常用于判断单一条件,当然,可以可以用逻辑符号将多个条件组合成同一条件。 if else语句:如果条件不成立,就会执行else后面{}里的代码块。 if elseif...语句:使用格式为 if(条件1){条件1成立的话执行的代码块,后面的条件不再去理会}elseif(...