基本流程: HSE默认8M--->PLLSRC----->PLLMUL*9倍频------>得PLLCLK 72M----->将PLLCLK设 置为系统时钟SYSCLK----->设置 AHB(HCLK 1分频 72M) APB1(PCLK1 2分频 36M) ABP2 (PCLK2 1分频 72M) 对应的时钟---->控制外设
void HSE_SetSysClk(uint32_t RCC_PLLMul_x)
{
ErrorStatus HSEStatus;
RCC_DeInit(); //把RCC寄存器复位
RCC_HSEConfig(RCC_HSE_ON); //使能HSE
HSEStatus=RCC_WaitForHSEStartUp();
if(HSEStatus==SUCCESS)
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//使能预取指
FLASH_SetLatency(FLASH_Latency_2);
RCC_HCLKConfig(RCC_SYSCLK_Div1); //HCLK=72M
RCC_PCLK1Config(RCC_HCLK_Div2); //PCLK1=36M
RCC_PCLK2Config(RCC_HCLK_Div1); //PCLK2=72M
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_x);
//配置 PLLCLK=HSE*RCC_PLLMul_x 8*9=72M
RCC_PLLCmd(ENABLE); //使能PLL
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET); //等待PLL稳定
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //选择系统时钟
while(RCC_GetSYSCLKSource()!=0x08);
}
else
{
}
}