STM32F4時鍾配置庫函數詳解


   在STM32中,所有的應用都是基於時鍾,所以時鍾的配置就尤為重要了,而不能僅僅只知道使用默認時鍾。

 

  STM32F4的時鍾樹如上圖所示,HSE為外部接入的一個8M的時鍾,然后再給PLL提供輸入時鍾,經過分頻倍頻后產生PLLCLK時鍾,為SYSCLK提供基礎時鍾來源。

配置的步驟:

  1. 將RCC寄存器重新設置為默認值
  2. 打開外部高速時鍾晶振HSE
  3. 等待HSE時鍾晶振工作
  4. 設置AHB時鍾也就是HCLK時鍾
  5. 設置高速APB1時鍾也就是PCLK1
  6. 設置低速APB2時鍾也就是PCLK2
  7. 設置PLL
  8. 打開PLL
  9. 等待PLL工作
  10. 設置系統時鍾
  11. 判斷系統時鍾是否為PLL時鍾

 

重點設置為PLL的配置:

void RCC_PLLConfig( uint32_t RCC_PLLSource, 
                            uint32_t PLLM, 
                            uint32_t PLLN, 
                            uint32_t PLLP,
                            uint32_t PLLQ)

 

RCC_PLLSource為選擇的輸入時鍾源,在這里為HSE 

PLLM:VCO輸入時鍾分頻因子,取值2-63 經分頻后輸入時鍾范圍要在1-2M內

PLLN:VCO輸出時鍾倍頻因子,取值192-432經倍頻后輸出時鍾范圍要在192-432

PLLP:SYSCLK時鍾分頻因子,取值2、4、6、8

PLLQ:OTG、FS、SDIO、RNG時鍾分頻因子,取值4-15,分頻后最高48M

 

PLL_VCO輸出時鍾 = (RCC_PLLSource/PLLM)*PLLN

SYSCLK = ((RCC_PLLSource/PLLM)*PLLN)/PLLP

OTG、FS、SDIO、RNG Clock = ((RCC_PLLSource/PLLM)*PLLN)/PLLN

 

所以要將系統時鍾配置成120M則應設置參數(RCC_PLLSource_HSE,8,240,2,2);

在這里RCC_PLLConfig   (RCC_PLLSource_HSE,8,240,2,2);

SYSClock = 8/8*240/2 = 120M

 

void RCC_ClockConfig(void)
{
    RCC_DeInit();
    RCC_HSEConfig( RCC_HSE_ON );
  
  if(SUCCESS == RCC_WaitForHSEStartUp())    
    {
       RCC_HCLKConfig  (RCC_SYSCLK_Div1); 
           RCC_PCLK1Config (RCC_HCLK_Div1);      
           RCC_PCLK2Config (RCC_HCLK_Div1);        
           RCC_PLLConfig   (RCC_PLLSource_HSE,8,240,2,2);
           //SYSClock = 8/8*240/2 = 120M
        
      RCC_PLLCmd(ENABLE);

        while(RCC_GetFlagStatus ( RCC_FLAG_PLLRDY) == RESET )
        {
        
        }
    
        RCC_SYSCLKConfig  ( RCC_SYSCLKSource_PLLCLK );
        
        while(RCC_GetSYSCLKSource() != 0x08)
        {
            
        }
        
    }


}

 時鍾信號可由PA8和PC9引腳輸出查看。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM