天天看點

STM32F103外部晶振HSE倍頻設定系統時鐘

STM32F103外部晶振HSE倍頻設定系統時鐘

    上一篇的内部晶振的系統時鐘設定已經對系統時鐘進行了配置,而外部晶振的倍頻隻需要改變上一篇的初始化函數就可以,其他均一樣!

第一步:建立一個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    }  }      

庫函數:

STM32F103外部晶振HSE倍頻設定系統時鐘
STM32F103外部晶振HSE倍頻設定系統時鐘

最後序列槽列印結果:

STM32F103外部晶振HSE倍頻設定系統時鐘

 · E N D ·