【STM32】串口通信出现乱码(使用官方标准库)
Author:AXYZdong
自动化专业 工科男
有一点思考,有一点想法,有一点理性!
定个小小目标,努力成为习惯!在最美的年华遇见更好的自己!
更多精彩文章前往:👉 个人主页
- 开发板:stm32f407VET6
- 开发环境:keil5 MDK
为了使文章的内容完整,增加了一下原因的叙述,没有兴趣的话可以直接跳转到
问题解决
问题产生
最近学习了一下 32 的串口通信,串口配置还是很简单的,不过后面串口调试助手上面出现的乱码
。很让人头疼。
当然第一时间去百度寻求解决办法。
百度搜索总结:
- 在程序不出现问题的情况下,一定是
外部晶振设置
的问题。但是也要排查下面 👇 两个问题
先排查这两个问题
1.USB 转串口的问题
解决方法: USB 转串口坏了的话,换一个好的就没事了。(ps:这个出现的概率比较小)
2.波特率不同步的问题
出现乱码,首先检查一下,
串口助手的波特率是不是和程序设置的是一样的
,如果一样的话出现乱码,参考下面的解决方法。
外部晶振对串口的影响
stm32 的串口使用的是外部高速时钟的时钟源
串口外设是挂在 APB 总线上的,一般用于低速外设,它是 AHB 总线时钟分频所得。
这样设计分频是为了降低低速外设的开关损耗。
然而AHB总线的时钟又源自于高速时钟源
。高速时钟源可以是高速内部时钟、高速外部时钟、高速内部或外部时钟 PLL 倍频所得。
所以最终串口的波特率受高速时钟的影响。
问题解决
首先找到自己板子上外部晶振,并确定它的大小。
在官方标准库中,外部时钟频率配置默认 25MHz 的晶振。
而我们需要将外部时钟频率配置成适合自己板子的。
找到 stm32f4xx.h ,在 .h 文件 120 行左右的地方,默认是这样的:
▲ 默认 25Mhz
下面只需定义一下自己开发板的外部时钟源频率即可:(加个宏定义)
附:如果串口助手没有收到任何东西,请检查连接 TX 、RX 端子的杜邦线是否松动。
总结
对于 stm32 的 F1 和 F4 等系列,如果出现串口通信出现乱码的问题,都可以尝试使用上述方法解决。
自己开发板上的外部晶振要了解,如果某一总线的时钟来源于外部时钟源,自己使用的外设恰好挂靠在该总线上,利用官方标准库,一定要将 stm32f4xx.h 文件中相关配置加以修改。
【参考文献】
[1]:https://blog.csdn.net/qq34179721/article/details/97427395?utmmedium=distribute.pc_relevant.none-task-blog-baidujs-2
猜你喜欢:
【STM32】0.96 寸 OLED 显示屏(7 针 SPI 协议)软件模拟 SPI
【STM32】1.44 寸 TFT 液晶屏显示字符、汉字和图片
【STM32】stm32f407 + DS18B20 碰出不一样的火花
本次的分享就到这里
好书不厌百回读,熟读自知其中意。将学习成为习惯,用知识改变命运,用博客见证成长,用行动证明努力。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
听说 👉 点赞 👈 的人运气不会太差,每一天都会元气满满呦!^ _ ^
码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了👉 关注 👈我哦!
如果以上内容有任何错误或者不准确的地方,欢迎在下面👇留个言。或者你有更好的想法,欢迎一起交流学习~~~
版权声明: 本文为 InfoQ 作者【AXYZdong】的原创文章。
原文链接:【http://xie.infoq.cn/article/57250218fa184c602f054592f】。文章转载请联系作者。
评论