GD32时钟设置与获取

修改主频

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);
		}

不积跬步无以至千里-.-;

你可能感兴趣的:(GD32)