编号10086 发表于 2021-7-19 15:22

GD32F103RCT6外部晶振能改成25M吗?

GD32F103的外部晶振能用25M的吗?
我官方的例程看了一下,是8M的晶振,我把 HXTAL_VALUE改成了25M,但是时钟初始化一直过不去,卡在
    /* wait until PLL is stable */
    while(0U == (RCU_CTL & RCU_CTL_PLLSTB)){
    }
这句话中

sonicll 发表于 2021-7-20 09:00

你需要把PLL倍频也修改一下,之前是(8M/2)* 27 = 108M,你现在可以改成(25M/2)* 8 = 100M试试

编号10086 发表于 2021-7-21 17:12

sonicll 发表于 2021-7-20 09:00
你需要把PLL倍频也修改一下,之前是(8M/2)* 27 = 108M,你现在可以改成(25M/2)* 8 = 100M试试 ...

我试了,不能用25M的,25M的不行,换成12M的,改PLL倍频和HSE宏定义就可以了

编号10086 发表于 2021-7-21 17:23

sonicll 发表于 2021-7-20 09:00
你需要把PLL倍频也修改一下,之前是(8M/2)* 27 = 108M,你现在可以改成(25M/2)* 8 = 100M试试 ...

貌似只能支持4-16M的外部晶振

紫气东升 发表于 2022-3-3 16:26

如果是使用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]
查看完整版本: GD32F103RCT6外部晶振能改成25M吗?