gd32f103切换系统时钟源
时间: 2023-08-13 16:10:01 浏览: 39
gd32f103可以通过设置 RCC_CFGR 寄存器中的 SW 位来切换系统时钟源。具体步骤如下:
1. 配置 RCC_CFGR 寄存器,选择要使用的时钟源。可以使用 RCC_CFGR 寄存器的 SWS 位来查看当前系统时钟源。
2. 等待系统时钟源稳定。
3. 将 RCC_CFGR 寄存器中的 SW 位设置为要使用的时钟源。
4. 等待系统时钟源切换完成。
下面是一份示例代码:
```c
#include "gd32f10x.h"
int main(void)
{
/* 使能外部高速晶振 */
RCC_HSEConfig(RCC_HSE_ON);
while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET) {}
/* 配置 PLL 和系统时钟 */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6);
RCC_PLLCmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* 配置 AHB 和 APB 分频器 */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PCLK2Config(RCC_HCLK_Div1);
/* 配置 GPIO 为输出模式 */
GPIO_Init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13);
/* 切换系统时钟源为 HSE */
RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);
/* 等待系统时钟源切换完成 */
while (RCC_GetSYSCLKSource() != RCC_SYSCLKSource_HSE) {}
/* 将 GPIOC_Pin_13 设置为高电平 */
GPIO_SetBits(GPIOC, GPIO_PIN_13);
while (1);
}
```
在这个示例代码中,我们首先使能了外部高速晶振,并根据需要配置了 PLL 和系统时钟。然后将系统时钟源切换为 HSE,等待切换完成后将 GPIOC_Pin_13 设置为高电平。