自学自记:

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

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 即可。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐