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

[复制链接]
280|4
手机看帖
扫描二维码
随时随地手机跟帖
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 | 显示全部楼层
楼主解决了吗?

使用特权

评论回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则