如题,移植GD32F305芯片驱动,修改时钟的方法。
硬件外部时钟为8MHz,官方demo文件为25MHz,基于此修改时钟配置。
1、选择system_gd32f30x.c并修改
如下图
1.1)注意查看 __HXTAL 的时钟是否为硬件电路对应的实际大小。
比如GD32F30x CL系列demo的时钟是25MHz,,你就需要手动改成8MHz(具体定义在gd32f30x.h文件中)。
1.2)修改时钟配置,如system_clock_120m_hxtal函数
如下是Cubemx的时钟配置图
结合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 即可。