
上一篇的内部晶振的系統時鐘設定已經對系統時鐘進行了配置,而外部晶振的倍頻隻需要改變上一篇的初始化函數就可以,其他均一樣!
第一步:建立一個HSE倍頻的初始化函數void SystemClock_Config(void)
是以我們由上一篇文章變為:
int main (void){ RCC_ClocksTypeDef RCC_Clocks; //初始化 SystemClock_Config(); //調用剛才改過的函數 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); Usart_Init(115200); //序列槽為了看資料而已 RCC_GetClocksFreq(&RCC_Clocks); //擷取各個時鐘頻率
while(1) { printf("SYSCLK_Frequency %d \r\n",RCC_Clocks.SYSCLK_Frequency); //printf("SYSCLK_Frequency %d \r\n",RCC_Clocks.SYSCLK_Frequency); }}
下面我們隊這個函數進行詳細的書寫:代碼如下:以及貼出了幾個庫函數的說明!
void SystemClock_Config(void) { RCC_DeInit(); //初始化 RCC_HSEConfig(RCC_HSE_ON); //打開外部時鐘HSE 8MHz if(RCC_WaitForHSEStartUp() == SUCCESS) //等待HSE啟動成功 { RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //選擇PLL的時鐘源并9倍 72Mhz RCC_PLLCmd(ENABLE); //使能PLL時鐘 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) //等待PLL時鐘就緒 { } RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //系統時鐘選擇PLL作為時鐘源 // * - 0x00: HSI used as system clock // * - 0x04: HSE used as system clock // * - 0x08: PLL used as system clock // * - 0x0C: HSI48 used as system clock, applicable only for STM32F072 devices while(RCC_GetSYSCLKSource()!=0x08) //判斷傳回的時鐘源是否為PLL時鐘源 { } RCC_HCLKConfig(RCC_SYSCLK_Div1); //PLL不分頻給系統時鐘 72MHz } }
庫函數:
最後序列槽列印結果:
· E N D ·