在文件system_gd32f4xx.c中有时钟配置好的选项:
//#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)
含义依次为:
内部RC震荡器,16MHz系统时钟;
高速外部晶体器,以外部晶体的频率为准;
内部RC震荡器为源,120MHz系统时钟;
高速外部晶体器为源,8M晶体,120MHz系统时钟;
高速外部晶体器为源,25M晶体,120MHz系统时钟;
内部RC震荡器为源,168MHz系统时钟;
高速外部晶体器为源,8M晶体,168MHz系统时钟;
高速外部晶体器为源,25M晶体,168MHz系统时钟;
内部RC震荡器为源,200MHz系统时钟;
高速外部晶体器为源,8M晶体,200MHz系统时钟;
高速外部晶体器为源,25M晶体,200MHz系统时钟;
GD32450i-EVAL使用的默认配置是 __SYSTEM_CLOCK_200M_PLL_25M_HXTAL
时钟设定后可以通过api函数rcu_clock_freq_get得到各个时钟最终的配置值。
uint32_t rcu_clock_freq_get(rcu_clock_freq_enum clock)
参数列表及含义如下:
CK_SYS: system clock frequency
CK_AHB: AHB clock frequency
CK_APB1: APB1 clock frequency
CK_APB2: APB2 clock frequency
Printf("system frequency:%dMHz\n", rcu_clock_freq_get(CK_SYS) / 1000000);
Printf("AHB frequency:%dMHz\n", rcu_clock_freq_get(CK_AHB) / 1000000);
Printf("APB1 frequency:%dMHz\n", rcu_clock_freq_get(CK_APB1) / 1000000);
Printf("APB2 frequency:%dMHz\n", rcu_clock_freq_get(CK_APB2) / 1000000);
打印结果:
system frequency:200MHz
AHB frequency:200MHz
APB1 frequency:50MHz
APB2 frequency:100MHz