diff --git a/ch32v003fun/ch32v003fun.c b/ch32v003fun/ch32v003fun.c
index eb0ebc497d333c37b8591e49a7d31abf06e5df80..12f693b4fb2c72b9cb3d1b318b52630a5d4354a8 100644
--- a/ch32v003fun/ch32v003fun.c
+++ b/ch32v003fun/ch32v003fun.c
@@ -1049,7 +1049,7 @@ void SystemInit()
 #endif
 
 #if defined( FUNCONF_USE_UARTPRINTF ) && FUNCONF_USE_UARTPRINTF
-	SetupUART( FUNCONF_UARTPRINTF_BAUD );
+	SetupUART( UART_BRR );
 #endif
 #if defined( FUNCONF_USE_DEBUGPRINTF ) && FUNCONF_USE_DEBUGPRINTF
 	SetupDebugPrintf();
diff --git a/ch32v003fun/ch32v003fun.h b/ch32v003fun/ch32v003fun.h
index dfd5e4efb75f67f3e2d4fe9fb62a0bca8e3d5403..c9b88cdaf0705899cc3c8c9b3d8533ff91995ab2 100644
--- a/ch32v003fun/ch32v003fun.h
+++ b/ch32v003fun/ch32v003fun.h
@@ -5092,9 +5092,13 @@ void DelaySysTick( uint32_t n );
 int main() __attribute__((used));
 void SystemInit(void);
 
-#define UART_BAUD_RATE 115200
+#ifdef FUNCONF_UART_PRINTF_BAUD
+	#define UART_BAUD_RATE FUNCONF_UART_PRINTF_BAUD
+#else
+	#define UART_BAUD_RATE 115200
+#endif
 #define OVER8DIV 4
-#define INTEGER_DIVIDER (((25 * (APB_CLOCK)) / ((OVER8DIV) * (UART_BAUD_RATE))))
+#define INTEGER_DIVIDER (((25 * (FUNCONF_SYSTEM_CORE_CLOCK)) / ((OVER8DIV) * (UART_BAUD_RATE))))
 #define FRACTIONAL_DIVIDER ((INTEGER_DIVIDER)%100)
 #define UART_BRR ((((INTEGER_DIVIDER) / 100) << 4) | (((((FRACTIONAL_DIVIDER) * ((OVER8DIV)*2)) + 50)/100)&7))
 // Put an output debug UART on Pin D5.