STM32 串口通信乱码问题总结 1.外部晶振频率的宏定义不匹配 这也是是我遇到的问题,将工程的“HSE_VALUE“(stm32f4xx.h)进行修改。 stm32F4的标准库中默认就是25M晶振,168MHz的运行速度。在这里要改为8M,就需要到stm32f4xx.h中将改为。
在修改外部晶振频率的宏定义以后,中断输出的字符串由乱码变成了想要的内容”我在学习stm32“。
第一次看到不是乱码还是很激动的 2.串口波特率不对应导致乱码 下图中两个地方的波特率必须一样,否则会出现乱码。这里注意波特率设置应该在以下,太高也会乱码。
3.代码编码方式没有改为ANSI 一般默认的是UTF-8编码方式,但这会导致乱码。这里需要将print语句所在的.c程序用记事本打开,修改编码方式为ANSI后覆盖原文件。
4.keil5里写中文时出现乱码 一开始我发现在.c文件中甚至不能输入中文。总是显示一串问号。
在keil5设置,再选择Editor,可以发现Encoding选项为Encode in ANSI。 ANSI编码通常是针对拉丁字母表的字符集,对于中文字符的支持有限。这就是为什么输入中文会显示问号。 但这个地方不能修改,需要保持原样。 仔细观察能注意到下面有中文选项,但如果使用使用Chinese GB2312或者UTF8去写prinf函数里的中文,能输出中文,但编译会报错,程序也无法下载。所以这两个选项只能拿来写中文注释,还是不能出现在执行程序中。 我想到的解决办法是为用记事本去打开程序,在对应的地方写入中文,另存为时选择保存类型为ANSI。
这样修改以后,回到keil5,发现中文已经写进去了,并且编译运行不会报错。 以上就是我总结的四点stm32串口通信乱码的问题以及解决方式。 今天的实验需要使用串口中断输出学号姓名,多次尝试依然出现乱码。于是一边向老师求教一边在网上搜寻解决办法,最终解决了问题。高兴之余我总结了一些可能导致出现乱码的因素,供后来者参考。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/30729.html