GD32官方提供的固件库中使用的晶振配置一般为8M或25M,如果读者使用其他频率的晶振如何修改配置呢?本文为大家讲解如何修改。
以GD32F303为例,官方固件库中的晶振及时钟配置代码如下,改配置代码为使用外部8M晶振倍频到120M时钟。
在此我们举例,若外部晶振使用16M该如何配置,主要修改以下两点:
修改HXTAL_VALUE为16M,如下红色底纹部分。
#if !defined HXTAL_VALUE #ifdef GD32F30X_CL #define HXTAL_VALUE ((uint32_t)25000000) /*!< value of the external oscillator in Hz */ #else #define HXTAL_VALUE ((uint32_t)16000000) /* !< from 4M to 32M *!< value of the external oscillator in Hz*/ #endif /* HXTAL_VALUE */ #endif /* high speed crystal oscillator value */
修改时钟倍频到120M.如下红色底纹部分,配置15倍频,计算公式为16M/2*15=120M.
/* select HXTAL/2 as clock source */ RCU_CFG0 &= ~(RCU_CFG0_PLLSEL | RCU_CFG0_PREDV0); RCU_CFG0 |= (RCU_PLLSRC_HXTAL_IRC48M | RCU_CFG0_PREDV0); /* CK_PLL = (CK_HXTAL/2) * 15 = 120 MHz */ RCU_CFG0 &= ~(RCU_CFG0_PLLMF | RCU_CFG0_PLLMF_4 | RCU_CFG0_PLLMF_5); RCU_CFG0 |= RCU_PLL_MUL15;
PS:GD固件库中修改使用内部时钟非常方便,只要打开内部时钟的宏定义就可以啦。
/* select a system clock by uncommenting the following line */ /* use IRC8M */ //#define __SYSTEM_CLOCK_IRC8M (uint32_t)(__IRC8M) //#define __SYSTEM_CLOCK_48M_PLL_IRC8M (uint32_t)(48000000) //#define __SYSTEM_CLOCK_72M_PLL_IRC8M (uint32_t)(72000000) //#define __SYSTEM_CLOCK_108M_PLL_IRC8M (uint32_t)(108000000) //#define __SYSTEM_CLOCK_120M_PLL_IRC8M (uint32_t)(120000000)
-
晶振
+关注
关注
34文章
2824浏览量
67899 -
编程
+关注
关注
88文章
3591浏览量
93592 -
GD32
+关注
关注
7文章
403浏览量
24217 -
gd32f303
+关注
关注
4文章
38浏览量
3674
发布评论请先 登录
相关推荐
评论