OpenEdv-开源电子网

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

求助关于STM32F407 串口波特率只有设定值一半的问题

[复制链接]

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-12-11
在线时间
18 小时
发表于 2017-12-11 19:28:24 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 rong1990 于 2017-12-11 19:36 编辑

大家好,从开试接触stm32到现在一个月左右,这个串口波特率问题一直没有解决,实在想不通哪里出现问题

我的串口波特率初始化112500,串口助手乱码。然后串口助手上一个一个波特率试,发现选取57600时正常
我查过,以下两种情况都没问题呀(或者有我没发现?)
1.    #define HSE_VALUE    ((uint32_t)8000000)   这里没问题呀  我是8MHz的晶振
2.    PLL_M=8   PLL_N=336   PLL_P=2   这里也没问题

我试着修改PLL_M,PLL_N的值,波特率没有变化,还是初始化115200时,助手设定57600正常接收
当我修改HSE_VALUE=4000000  时  初始化115200时,助手设定115200正常接收


还有我的工程是用原子教程中的工程源码修改的  ,但并没有修改任何与时钟有关的地方.

这个没解决脑子里总是惦记着不踏实呀   
还麻烦帮忙分析一下,不胜感谢!

stm32f4xx和system_stm32f4xx.rar

61.15 KB, 下载次数: 67

stm32f4xx.h和system_stm32f4xx.c文件

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-12-11
在线时间
18 小时
 楼主| 发表于 2017-12-11 19:56:39 | 显示全部楼层
按照工程模板做的,程序设置应该没问题吧?  或许是Keil5的设置问题? Target中的Xtal我填写的也是8.0呀难道还和硬件有关系吗?
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-12-11
在线时间
18 小时
 楼主| 发表于 2017-12-11 22:41:00 | 显示全部楼层
#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx)            
    /* PCLK2 = HCLK / 2*/
    RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;
               
    /* PCLK1 = HCLK / 4*/
    RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;
#endif /* STM32F40_41xxx || STM32F427_437x || STM32F429_439xx */


是不是这里少了东西呀?
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-12-11
在线时间
18 小时
 楼主| 发表于 2017-12-12 18:54:29 | 显示全部楼层
本帖最后由 rong1990 于 2017-12-12 19:00 编辑

今天试了USART3  还是一样的情况  uart_init(115200)   但是串口助手调到57600才正常。  有没有可能是硬件的问题呢?  因为 我把原子哥的教程    《实验4 串口实验》  作为模板  不修改任何东西  波特率也是一半呀?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2017-12-13 00:48:09 | 显示全部楼层
很明显主频配置的问题,我论坛发过几个帖子,自己找找吧。
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-12-11
在线时间
18 小时
 楼主| 发表于 2017-12-13 11:30:40 | 显示全部楼层
正点原子 发表于 2017-12-13 00:48
很明显主频配置的问题,我论坛发过几个帖子,自己找找吧。

原子哥,谢谢!  不过很疑惑,我是用工程模板测试的呀,并没有修改任何东西,我的外部晶振也是8MHz.  按理应该设置不会有问题呀。
我也很怀疑 是我主频配置的问题,也用“STM32F4xx-Clock-Configuration-V1.1.0.xls”这个文件工具自动配置过,但实验结果也是一半。
我修改PLL_M,与PLL_N的值,发现对波特率并没有影响呀。 只有修改HSE_value时才会有影响。MDK的宏定义我也对过,是没问题的。

所以现在感觉有点找不到解决问题的方向了。  我按原子哥的建议还是再次核对主频设置吧!
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-12-11
在线时间
18 小时
 楼主| 发表于 2017-12-13 13:00:23 | 显示全部楼层
本帖最后由 rong1990 于 2017-12-13 16:17 编辑
正点原子 发表于 2017-12-13 00:48
很明显主频配置的问题,我论坛发过几个帖子,自己找找吧。

核对了一遍几个关键地方没有发现问题。 包括使用其他人没问题的模板  不修改任何东西,下载验证,还是一半
修改PLL_M与PLL_N值不影响波特率  修改HSE_VALUE 会影响。  怀疑系统是直接使用的 HSE  而非  PLL。
但是修改以下代码也没有改变波特率。
#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx)      
    /* PCLK2 = HCLK / 2*/
    RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;     → //将RCC_CFGR_PPRE2_DIV2修改后不影响波特率

    /* PCLK1 = HCLK / 4*/
    RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;     → //将RCC_CFGR_PPRE1_DIV4修改后不影响波特率

回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-12-11
在线时间
18 小时
 楼主| 发表于 2017-12-13 16:29:12 | 显示全部楼层
本帖最后由 rong1990 于 2017-12-13 16:31 编辑
正点原子 发表于 2017-12-13 00:48
很明显主频配置的问题,我论坛发过几个帖子,自己找找吧。

突然想到:  我的硬件接线是这样的,    ST-Link插在电脑usb1上然后连接开发板   然后串口1(PA9,PA10) 通过ch340下载线插在电脑usb2上(只接下载线的RX、TX ,不接VCC、VDD),现在感觉这样应该会出问题(3.3V和5V????)。
回复

使用道具 举报

2

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
477
金钱
477
注册时间
2016-10-21
在线时间
88 小时
发表于 2017-12-13 16:50:54 | 显示全部楼层
为啥不接VCC和地呢。。。
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-12-11
在线时间
18 小时
 楼主| 发表于 2017-12-13 17:06:27 | 显示全部楼层
Crime毛豆 发表于 2017-12-13 16:50
为啥不接VCC和地呢。。。

因为看到不接也有信号所以。。。。。   
现在出问题才想到,晚上回去从硬件着手调看看。
程序配置这块弄了好久,自己写的包括拿别人的  都试过  应该没问题。
谢谢提醒!!!
回复

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2017-11-12
在线时间
18 小时
发表于 2017-12-13 18:36:00 | 显示全部楼层
不共地会有大问题
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-12-11
在线时间
18 小时
 楼主| 发表于 2017-12-13 18:50:55 | 显示全部楼层

我接了VCC 和GND   还是不行!
我用   STM32F4xx-Clock-Configuration-V1.1.0.xls   这个文件自动配置时钟,不用HSE而是用 HSI 如下图一配置后,,奇迹般地正常了。     难道晶振有问题??   上面明明标着8.000啊  ?

我之前如图二配置  怎么弄都不行波特率只有初始化的一半。  修改PLL_M  PLL_N没有任何变化。

图一

图一
图二.png
回复

使用道具 举报

7

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2019-3-15
在线时间
34 小时
发表于 2019-3-29 13:51:58 | 显示全部楼层
rong1990 发表于 2017-12-12 18:54
今天试了USART3  还是一样的情况  uart_init(115200)   但是串口助手调到57600才正常。  有没有可能是硬件 ...

好像串口1 串口3挂在不同的时钟上
回复

使用道具 举报

33

主题

218

帖子

0

精华

高级会员

Rank: 4

积分
568
金钱
568
注册时间
2015-1-12
在线时间
75 小时
发表于 2021-9-9 15:26:03 | 显示全部楼层
我遇到问题是其他串口正常,只有UART9串口,发送波特率是接收的一半,才能通信。比如单片机波特率设为9600,串口助手19200才能正常通信,否则乱码。同一个原子例程模板改的,串口1,2,6,7,8都是正常相同的波特率
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2022-11-25
在线时间
0 小时
发表于 2023-2-13 17:03:00 | 显示全部楼层
大佬,我也遇到了同样的问题,方不方便发下您的qq我问下你,或者加下我的qq2245881681,谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 20:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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