這個控制系統時鐘(SYSCLK)利用的是的HSE(外部高速時鐘8M)來做爲時鐘源fetch
首先HSE通過PLLXTPRE(選擇分頻)時選擇不分頻ui
到了PLLSRC(選擇鎖相環時鐘源)時選擇HSEcode
在通過PLLMUL(選擇倍頻數)選擇9倍頻 8*9=72Mblog
注意:這裏能夠選擇16倍頻,達到816=144可是不夠穩定*flash
代碼實現it
bsp_rccclkconfig.c變量
void HSE_SetSysClk(uint32_t RCC_PLLMul_x)//這裏的入口參數是選擇倍頻的數目(2-16) { ErrorStatus HSEStatus;//建立時鐘狀態變量sed
//使能外部高速時鐘 RCC_HSEConfig(RCC_HSE_ON); HSEStatus = RCC_WaitForHSEStartUp();//等待外部時鐘的開啓 if( HSEStatus = SUCCESS) { //使能預取址 **注意**這是flash裏面的操做 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); FLASH_SetLatency(FLASH_Latency_2); //配置分頻因子 RCC_HCLKConfig(RCC_SYSCLK_Div1);//AHB和系統時鐘(72M)相等 RCC_PCLK1Config(RCC_HCLK_Div2);//APB1爲系統時鐘(72M)的一半36M 注意當APB1爲ADC模式時系統時鐘比36M大 RCC_PCLK2Config(RCC_HCLK_Div1);//APB2和系統時鐘(72M)相等 //設置鎖相環的參數設置 外部高速時鐘 選擇9倍頻 8*9=72M RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_x); //使能PLL RCC_PLLCmd(ENABLE); //等待PLL時鐘穩定 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //選擇系統時鐘 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //查看是否系統時鐘源是否爲PLL鎖相環時鐘 //- 0x00: HSI used as system clock //- 0x04: HSE used as system clock //- 0x08: PLL used as system clock while( RCC_GetSYSCLKSource() != 0x08 ); } else { //外部時鐘開啓失敗操做 }
}配置