[AT32F413]

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

[复制链接]
237|6
手机看帖
扫描二维码
随时随地手机跟帖
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 | 显示全部楼层
楼主厉害

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则