修改主频
GD32开发出来了自己的库、虽然和STM的标准库差不多但是也有一些差异。
使用GD32F407IG、今天在做测试的时候怀疑是时钟有问题、于是就想修改一下时钟、然后读取出各个总线的时钟、看看倍频是否成功。
在找了一圈之后终于找到了:
找到了在“system_gd32f4xx.c”文件的第43行到54行之间通过宏定义来定义选择哪个时钟作为时钟源、和主频多少M;
/* 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)
我选择的是外部25M的晶振主频168MHz。
获取主频
获取主频的函数在“gd32f4xx_rcu.c”中。
源代码如下:通过参数可以获取不同总线的频率。
/*!
\brief get the system clock, bus and peripheral clock frequency
\param[in] clock: the clock frequency which to get
only one parameter can be selected which is shown as below:
\arg CK_SYS: system clock frequency
\arg CK_AHB: AHB clock frequency
\arg CK_APB1: APB1 clock frequency
\arg CK_APB2: APB2 clock frequency
\param[out] none
\retval clock frequency of system, AHB, APB1, APB2
*/
uint32_t rcu_clock_freq_get(rcu_clock_freq_enum clock){
...
...
...
}
测试代码如下:通过不同的参数获取不同的主频。
/************ 测试代码 *****************/
{
uint32_t fre=0;
fre = rcu_clock_freq_get(CK_SYS);
}
不积跬步无以至千里-.-;