diff --git a/ch32v003fun/ch32v003fun.c b/ch32v003fun/ch32v003fun.c
index 9958905e35acdb8f63fd13e92ae3eda060cb753d..3a3939536d221a5e75f7dbb262e74807d4f973ac 100644
--- a/ch32v003fun/ch32v003fun.c
+++ b/ch32v003fun/ch32v003fun.c
@@ -1420,19 +1420,18 @@ void SystemInit()
 //#define BASE_CTLR	(((FUNCONF_HSITRIM) << 3) | HSEBYP | RCC_CSS)	// disable HSI in HSE modes
 
 #if defined(FUNCONF_USE_HSI) && FUNCONF_USE_HSI
-	#if defined(CH32V30x)
+	#if defined(CH32V30x) || defined(CH32V20x) || defined(CH32V10x)
 		EXTEN->EXTEN_CTR |= EXTEN_PLL_HSI_PRE;
 	#endif
 	#if defined(FUNCONF_USE_PLL) && FUNCONF_USE_PLL
-		RCC->CFGR0 = RCC_HPRE_DIV1 | RCC_PLLSRC_HSI_Mul2;
+		RCC->CFGR0 = RCC_HPRE_DIV1 | PLL_MULTIPLICATION;
 		RCC->CTLR  = BASE_CTLR | RCC_HSION | RCC_PLLON; 			// Use HSI, enable PLL.
 	#else
 		RCC->CFGR0 = RCC_HPRE_DIV1;                               	// PLLCLK = HCLK = SYSCLK = APB1
 		RCC->CTLR  = BASE_CTLR | RCC_HSION;     					// Use HSI, Only.
 	#endif
-#endif
 
-#if defined(FUNCONF_USE_HSE) && FUNCONF_USE_HSE
+#elif defined(FUNCONF_USE_HSE) && FUNCONF_USE_HSE
 
 	#if defined(CH32V003)
 		RCC->CTLR = BASE_CTLR | RCC_HSION | RCC_HSEON ;       		  // Keep HSI on while turning on HSE
diff --git a/ch32v003fun/ch32v003fun.h b/ch32v003fun/ch32v003fun.h
index 202ac998971e8f44d67f72b0b292d65fa9810be3..09099617fe5d97e3b4eb4aaade4befc65c48d1ba 100644
--- a/ch32v003fun/ch32v003fun.h
+++ b/ch32v003fun/ch32v003fun.h
@@ -12,7 +12,7 @@
 #define FUNCONF_USE_HSI 1               // Use HSI Internal Oscillator
 #define FUNCONF_USE_HSE 0               // Use External Oscillator
 #define FUNCONF_HSITRIM 0x10            // Use factory calibration on HSI Trim.
-#define FUNCONF_SYSTEM_CORE_CLOCK  48000000  // Computed Clock in Hz.
+#define FUNCONF_SYSTEM_CORE_CLOCK 48000000  // Computed Clock in Hz.
 #define FUNCONF_HSE_BYPASS 0            // Use HSE Bypass feature (for oscillator input)
 #define FUNCONF_USE_CLK_SEC	1			// Use clock security system, enabled by default
 #define FUNCONF_USE_DEBUGPRINTF 1