打印
[研电赛技术支持]

串口发送数据乱码-时钟问题GD32F305 CL由25MHz修改为8MHz

[复制链接]
108|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
自学自记:

别找其它资料了,坑我已经踩过了,这就是最简单的方式:

GD32F305 CL由25MHz修改为8MHz

第一步






详细说明:

移植GD32F305芯片驱动,修改时钟的方法。

硬件外部时钟为8MHz,官方demo文件为25MHz,基于此修改时钟配置。

1、选择system_gd32f30x.c并修改



注意查看 __HXTAL  的时钟是否为硬件电路对应的实际大小。

比如GD32F30x CL系列demo的时钟是25MHz,,你就需要手动改成8MHz(具体定义在gd32f30x.h文件中)。



1.2)修改时钟配置,如system_clock_120m_hxtal函数



结合Cubemx的时钟配置图来看,箭头所指的是开关配置项,这一点不需要改动。

圆圈所指的是分频和倍频项,需要修改。

Perdiv1是指HSE外部时钟送到PLL1的输入时钟,由于F305无法选择8*15的倍频,所以输入时钟要分频为4MHz,然后倍频30倍得到120MHz时钟。  --即Perdiv1要2分频,PllMul要30倍频。

再结合代码来看:

下图是demo文件的原始配置



下图是修改后的配置



代码逻辑是,先将寄存器RCU_CFG0清零,再置位,然后将寄存器RCU_CFG1清零再置位。

RCU_CFG0寄存器是先使能外部时钟,然后30倍频。

RCU_CFG1,由于demo文件是25MHz,由如下公式:CK_PREDIV0 = (CK_HXTAL)/5 *8 /10 = 4 MHz 得到输入时钟。改成8MHz,修改公式对应配置项为 CK_PREDIV0 = (CK_HXTAL)/16 *8 /1 = 4 MHz 即可。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/u011878611/article/details/147670678

使用特权

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

本版积分规则

34

主题

139

帖子

1

粉丝