GD32F407V主频问题引起的串口异常

[复制链接]
3232|10
 楼主| wjp_860623 发表于 2022-1-14 17:30 | 显示全部楼层 |阅读模式
本帖最后由 wjp_860623 于 2022-1-14 17:40 编辑

   调试串口时发现设置的波特率打印出来的数据都是乱码,一直认为是软件配置问题,查软件也没查出问题,所以在串口调试助手中手动选择波特率,发现代码设置的波特率是115200在38400时才可以打印出正确的数据,这才意识到时序问题,发现代码默认设置的时钟是200MHZ,但是GD407VE手册介绍是Max=168M.
另外,当配置成外部8M晶振168MHZ和200Mhz时串口都不能正常工作,当改为内部IRC16M 168M和200M时串口都能正常打印。
测试代码官方:GD32F4xx_Demo_Suites_V2.3.0
2.png
1.png
锐鑫同创 发表于 2022-1-14 18:06 | 显示全部楼层
把HXTAL_VALUE的值修改成外部晶振频率值,不然会导致波特率发生器产生错误频率。另外时钟配置是条件编译,选择407时钟会按照407的逻辑进行配置。如果晶振和程序里面默认使用的晶振不同,可以自己修改分频和倍频参数。
锐鑫同创 发表于 2022-1-14 18:10 | 显示全部楼层
另外,波特率发生器会根据频率设置自动计算生成波特率,不会受到主频影响。还是看一下HXTAL_VALUE的值对不对
 楼主| wjp_860623 发表于 2022-1-14 18:31 | 显示全部楼层
锐鑫同创 发表于 2022-1-14 18:06
把HXTAL_VALUE的值修改成外部晶振频率值,不然会导致波特率发生器产生错误频率。另外时钟配置是条件编译, ...

#define HXTAL_VALUE   ((uint32_t)8000000)改为8M,外部晶振可以工作了,谢谢。
huquanz711 发表于 2022-1-15 09:25 来自手机 | 显示全部楼层
楼主解决了吗?
qcliu 发表于 2022-2-5 17:53 | 显示全部楼层
会不会导致不是常规波特率呢
tfqi 发表于 2022-2-5 17:58 | 显示全部楼层
换一下时钟源试试看
wiba 发表于 2022-2-5 18:04 | 显示全部楼层
主频最快能达到多少啊
zljiu 发表于 2022-2-5 18:10 | 显示全部楼层
倍频 分频 总是可以的
coshi 发表于 2022-2-5 18:26 | 显示全部楼层
修改成外部晶振频率值
 楼主| wjp_860623 发表于 2022-2-16 09:27 | 显示全部楼层

解决了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部