gd32f103切换系统时钟源
时间: 2023-08-13 22:10:01 浏览: 127
gd32f103是一款基于ARM Cortex-M3内核的微控制器,其系统时钟源可以通过RCC寄存器进行配置和切换。以下是切换系统时钟源的步骤:
1. 开启外部晶振或内部RC振荡器。
在使用外部晶振时,需要将HXTALEN位设置为1,启用外部晶振;在使用内部RC振荡器时,需要将IRC28MEN位设置为1,启用内部RC振荡器。
2. 配置时钟分频器。
通过设置AHB、APB1、APB2的分频系数来控制总线时钟频率。
3. 选择系统时钟源。
通过设置SYSCLKSEL位来选择系统时钟源,可选项有:HXTAL、PLL和IRC28M。
4. 配置PLL(可选)。
如果选择PLL作为系统时钟源,则需要配置PLL的分频系数和倍频系数,以得到所需的系统时钟频率。
下面是一份示例代码,用于将系统时钟源从内部RC振荡器切换到外部晶振,并将系统时钟频率设置为72MHz。
```c
#include "gd32f10x.h"
void SystemClock_Config(void)
{
/* 开启外部晶振 */
RCC_HSEConfig(RCC_HSE_ON);
while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);
/* 配置时钟分频器,AHB时钟 = SYSCLK / 1,APB1时钟 = AHB时钟 / 2,APB2时钟 = AHB时钟 / 1 */
RCC_HCLKConfig(RCC_SYSCLK_DIV1);
RCC_PCLK1Config(RCC_HCLK_DIV2);
RCC_PCLK2Config(RCC_HCLK_DIV1);
/* 选择系统时钟源为HXTAL */
RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);
/* 配置PLL,PLL输入时钟 = HXTAL / 1,PLL倍频系数 = 9,得到系统时钟频率为 72MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* 选择PLL作为系统时钟源 */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
}
```
以上代码仅供参考,具体的时钟配置方式和参数需要根据实际需求进行调整。