[AT32F413] stm32f103移植到at32f413,频率改为200MHz,串口乱码

[复制链接]
 楼主| 1742231254 发表于 2022-9-19 23:21 | 显示全部楼层 |阅读模式
如题,有大佬知道哪出了问题吗,晶振用的也是8MHz,实在不知道哪出了问题
muyichuan2012 发表于 2022-9-20 08:35 | 显示全部楼层
建议直接使用AT32的BSP。
楼主这种现象的根本原因是,ST的串口初始化函数要根据获取的主频和波特率计算除频值,而ST的这个函数无法获取200M的主频,从而导致计算出的波特率错误。
 楼主| 1742231254 发表于 2022-9-20 09:45 来自手机 | 显示全部楼层
muyichuan2012 发表于 2022-9-20 08:35
建议直接使用AT32的BSP。
楼主这种现象的根本原因是,ST的串口初始化函数要根据获取的主频和波特率计算除频 ...

我这代码量有点大,用AT32的BSP工作量有点大啊。串口初始化函数我也看了,为什么stm32获取不了200MHz呢,还是说有什么限制
muyichuan2012 发表于 2022-9-20 12:46 来自手机 | 显示全部楼层
因为st的库函数没有设计获取200M时钟的代码,st主频为72M,它不需要去做这个操作。
 楼主| 1742231254 发表于 2022-9-20 14:26 来自手机 | 显示全部楼层
muyichuan2012 发表于 2022-9-20 12:46
因为st的库函数没有设计获取200M时钟的代码,st主频为72M,它不需要去做这个操作。 ...

好的,谢谢,我再仔细研究下
 楼主| 1742231254 发表于 2022-9-21 09:41 来自手机 | 显示全部楼层
muyichuan2012 发表于 2022-9-20 12:46
因为st的库函数没有设计获取200M时钟的代码,st主频为72M,它不需要去做这个操作。 ...

经过我的研究,at32把系统时钟倍频寄存器扩展了两位,而stm32库函数获取倍频数的时候并没有把那两位算进去,所以频率不对串口乱码,我修改库函数之后就正常了
muyichuan2012 发表于 2022-9-21 20:07 来自手机 | 显示全部楼层
楼主厉害
Jacquetry 发表于 2022-10-4 21:21 | 显示全部楼层
厉害了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

16

帖子

0

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