OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7876|回复: 7

串口出现乱码的原因之一

[复制链接]

3

主题

20

帖子

1

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2012-7-17
在线时间
175 小时
发表于 2015-11-12 13:46:03 | 显示全部楼层 |阅读模式
串口出现乱码的原因其中一个就是软件程序的HSE值跟硬件的晶振值不一致。
在F4DSP标准库当中V1.4.0在stm32f4xx.h对HSE的定义如下
#if !defined  (HSE_VALUE) 
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
  
#endif /* HSE_VALUE */
在V1.5.1中,stm32f4xx.h对HSE的定义如下
#if defined(STM32F40_41xxx) || defined(STM32F427_437xx)  || defined(STM32F429_439xx) || defined(STM32F401xx)  || defined(STM32F411xE)
 #if !defined  (HSE_VALUE) 
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */
#elif defined(STM32F446xx)
 #if !defined  (HSE_VALUE) 
  #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */
#endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx || STM32F411xE */
这里使用了25兆的时钟频率,与外部的8兆不符合,所以串口通信的时候会乱码,当25兆改成8兆的时候通信会正常。
还有人认为改keil里面如下


修改这里也没有用,因为我试过,也是乱码。

其实最好的解决方法如下


就是在这里修改HSE的值,其他的不用修改,这样就可以通信正常了,修改stm32f4xx.h里面的值不是不可以,
但是感觉修改里面的东西不是很好,毕竟都是库来的,以后调用的时候也不用想着这个问题。

串口通信出现乱码总结: 1、修改stm32f4xx.h里面HSE_VALUE    的值。
                                        2、在keil里面添加HSE_VALUE    的值进行初始化
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
发表于 2015-11-12 15:37:12 | 显示全部楼层
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2015-11-16 15:47:38 | 显示全部楼层
感谢分享!

学到一招
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2016-6-22
在线时间
16 小时
发表于 2017-3-31 15:20:07 | 显示全部楼层
感谢,解决问题。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2018-1-19
在线时间
3 小时
发表于 2018-1-22 18:15:04 | 显示全部楼层
楼主 我还是乱码啊
回复 支持 反对

使用道具 举报

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2018-1-3
在线时间
15 小时
发表于 2018-1-23 11:56:12 | 显示全部楼层
HAL库,用原子哥的例程,输出乱码,求解啊。
回复 支持 反对

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2018-1-18
在线时间
18 小时
发表于 2018-1-25 16:30:09 | 显示全部楼层
这个是指所有串口吗?我用429的开发板,没有在keil里设置外部时钟频率,我试了485通讯是正常的。没有出现波特率不准确的问题。我在stm32f4xx.h里面没有找到HSE_VALUE这个量。这是为什么呢?
不意人夸声色好,愿留心音在乾坤!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2018-10-16
在线时间
0 小时
发表于 2018-10-16 23:54:34 | 显示全部楼层
yijuanzhi 发表于 2018-1-23 11:56
HAL库,用原子哥的例程,输出乱码,求解啊。

已经试过
无标题.png
无标题.png
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 10:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表