#include "stm32f10x.h" // Device header
#include "rccclkconfig.h"
void HSE_SetSysClk(uint32_t RCC_PLLMul_x)
{
RCC_DeInit();//把RCC寄存器复位成复位值,必须要有,否则不成功
ErrorStatus HSEStatues;
//使能HSE
RCC_HSEConfig(RCC_HSE_ON);
HSEStatues = RCC_WaitForHSEStartUp();
if(HSEStatues == SUCCESS)
{
//使能预取指
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
//设置等待两个周期
FLASH_SetLatency(FLASH_Latency_2);
//配置三个总线的分频因子 设置 AHB、APB2、APB1 预分频因子
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK1Config(RCC_SYSCLK_Div2);
RCC_PCLK2Config(RCC_SYSCLK_Div1);
//配置锁相环 PLLCLK =HSE*RCC_PLLMul_x
//使能PLL
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_x);
RCC_PLLCmd(ENABLE);
//等待PLL时钟稳定
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
//选择系统时钟
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource()!=0x08);
}
else
{
/*如果HSE启动失败,用户可以在这里添加错误处理代码*/
}
}
以上代码参考野火单片机教程