个人中心 - GD32 MCU 开发者社区

liang_zedong
LV.1
liang_zedong LV.1
2026年6月1日
5 评论
活跃 时间:2026-06-04
66 次浏览
2
0
5
起风了
时间:2026-06-04

官网可以下固件库,里面有时钟初始化的代码,不同频率主频都有写,可以通过对应的宏切换就可以配置为不同的系统时钟,如果没有对应频率的宏,自己也可参考已写的时钟配置代码,改一下里面的pll倍频和分频系数就好

liang_zedong LV.1
2026年5月29日
3 评论
活跃 时间:2026-06-01
75 次浏览
2
0
3
已采纳
NDY HE
时间:2026-06-01

下载GD32F30x标准固件库,里面有个Examples,文件夹。

GD32F303 设置系统时钟
liang_zedong
时间:2026-06-01

纠正一下:

// 系统时钟初始化 8MHz外部晶振 -> 120MHz
void Clock_Init(void)
{
		rcu_osci_on(RCU_HXTAL);
		while(rcu_osci_stab_wait(RCU_HXTAL) == ERROR); // 等待HSE稳定
 
		/* 2. 配置PLL */
		// GD32F303VE的PLL配置公式: PLL = (HSE / PREDV0) * PLLMF
		// 目标: HSE=8MHz → PLL=120MHz
		// 选择PREDV0不分频(=1), PLLMF=15倍频 (8MHz * 15 = 120MHz)
		rcu_predv0_config(RCU_PREDV0_DIV1);           // PREDV0 = 1分频
		rcu_pll_config(RCU_PLLSRC_HXTAL_IRC48M   , RCU_PLL_MUL15); // PLL倍频15, 
 
		/* 3. 使能PLL并等待就绪 */
		rcu_osci_on(RCU_PLL_CK);
		while(rcu_osci_stab_wait(RCU_PLL_CK) == ERROR);
 
		/* 4. 配置Flash等待周期(120MHz需3个等待周期) */
		fmc_wscnt_set(WS_WSCNT_2);
 


		/* 5. 配置AHB/APB分频 */
		rcu_ahb_clock_config(RCU_AHB_CKSYS_DIV1);     // AHB = 120MHz

		rcu_apb1_clock_config(RCU_APB1_CKAHB_DIV2);   // APB1 = 60MHz

		rcu_apb2_clock_config(RCU_APB2_CKAHB_DIV1);   // APB2 = 120MHz
 
		 /* 6. 切换系统时钟源到PLL */

	   rcu_system_clock_source_config(RCU_CKSYSSRC_PLL);
   while(RCU_SCSS_PLL != rcu_system_clock_source_get()){}
			 
	  SystemCoreClockUpdate();
	 
}
GD32F303 设置系统时钟
liang_zedong
时间:2026-06-01

改成这样可以了

// 系统时钟初始化 8MHz外部晶振 -> 120MHz
void Clock_Init(void)
{
rcu_osci_on(RCU_HXTAL);
while(rcu_osci_stab_wait(RCU_HXTAL) == ERROR); // 等待HSE稳定

/* 2. 配置PLL */
// GD32F303VE的PLL配置公式: PLL = (HSE / PREDV0) * PLLMF
// 目标: HSE=8MHz → PLL=120MHz
// 选择PREDV0不分频(=1), PLLMF=15倍频 (8MHz * 15 = 120MHz)
rcu_predv0_config(RCU_PREDV0_DIV1);           // PREDV0 = 1分频
rcu_pll_config(RCU_PLLSRC_HXTAL_IRC48M   , RCU_PLL_MUL15); // PLL倍频15, 

/* 3. 使能PLL并等待就绪 */
rcu_osci_on(RCU_PLL_CK);
while(rcu_osci_stab_wait(RCU_PLL_CK) == ERROR);

/* 4. 配置Flash等待周期(120MHz需3个等待周期) */
fmc_wscnt_set(WS_WSCNT_2);



/* 5. 配置AHB/APB分频 */
rcu_ahb_clock_config(RCU_AHB_CKSYS_DIV1);     // AHB = 120MHz

rcu_apb1_clock_config(RCU_APB1_CKAHB_DIV2);   // APB1 = 60MHz

rcu_apb2_clock_config(RCU_APB2_CKAHB_DIV1);   // APB2 = 120MHz

 /* 6. 切换系统时钟源到PLL */

 rcu_system_clock_source_config(RCU_CKSYSSRC_HXTAL);
 while(RCU_SCSS_HXTAL != rcu_system_clock_source_get()){}

//systick_config();
SystemCoreClockUpdate();

}

关于GD32F303的开发例子
liang_zedong
时间:2026-06-01

买了开发板,找了更详细一些的例子

暂无内容

相关内容会显示在这里,期待您的分享与发现。

暂无内容

相关内容会显示在这里,期待您的分享与发现。

暂无内容

相关内容会显示在这里,期待您的分享与发现。

确定删除吗?
删除后无法恢复,请确认后操作!
编辑