GD32F103RCT6外部晶振能改成25M吗?
GD32F103的外部晶振能用25M的吗?我官方的例程看了一下,是8M的晶振,我把 HXTAL_VALUE改成了25M,但是时钟初始化一直过不去,卡在
/* wait until PLL is stable */
while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
}
这句话中 你需要把PLL倍频也修改一下,之前是(8M/2)* 27 = 108M,你现在可以改成(25M/2)* 8 = 100M试试 sonicll 发表于 2021-7-20 09:00
你需要把PLL倍频也修改一下,之前是(8M/2)* 27 = 108M,你现在可以改成(25M/2)* 8 = 100M试试 ...
我试了,不能用25M的,25M的不行,换成12M的,改PLL倍频和HSE宏定义就可以了 sonicll 发表于 2021-7-20 09:00
你需要把PLL倍频也修改一下,之前是(8M/2)* 27 = 108M,你现在可以改成(25M/2)* 8 = 100M试试 ...
貌似只能支持4-16M的外部晶振 如果是使用GD32F4XX芯片:
在system_gd32f4xx.c文件开头定义有以下宏:
/* system frequency define */
#define __IRC16M (IRC16M_VALUE) /* internal 16 MHz RC oscillator frequency */
#define __HXTAL (HXTAL_VALUE) /* high speed crystal oscillator frequency */
#define __SYS_OSC_CLK (__IRC16M) /* main oscillator frequency */
/* select a system clock by uncommenting the following line */
//#define __SYSTEM_CLOCK_IRC16M (uint32_t)(__IRC16M)
//#define __SYSTEM_CLOCK_HXTAL (uint32_t)(__HXTAL)
//#define __SYSTEM_CLOCK_120M_PLL_IRC16M (uint32_t)(120000000)
//#define __SYSTEM_CLOCK_120M_PLL_8M_HXTAL (uint32_t)(120000000)
//#define __SYSTEM_CLOCK_120M_PLL_25M_HXTAL (uint32_t)(120000000)
//#define __SYSTEM_CLOCK_168M_PLL_IRC16M (uint32_t)(168000000)
//#define __SYSTEM_CLOCK_168M_PLL_8M_HXTAL (uint32_t)(168000000)
//#define __SYSTEM_CLOCK_168M_PLL_25M_HXTAL (uint32_t)(168000000)
//#define __SYSTEM_CLOCK_200M_PLL_IRC16M (uint32_t)(200000000)
//#define __SYSTEM_CLOCK_200M_PLL_8M_HXTAL (uint32_t)(200000000)
#define __SYSTEM_CLOCK_200M_PLL_25M_HXTAL (uint32_t)(200000000)
板子上使用多少M的晶振,就将哪个宏开放出来。我的板子使用25M的,所以我将25M的宏开放出来。
同时,修改HXTAL_VALUE的值为晶振大小,我的板子使用25M的,所以HXTAL_VALUE改为(uint32_t)25000000
页:
[1]