STM32的系統時鍾設置SystemClock_Config()探究


一、首先了解幾個硬件名詞:

stm32有多種時鍾源,為HSE、HSI、LSE、LSI、PLL,對於L系統的,還有一個專門的MSI

1、HSE是高速外部時鍾,一般8M的晶振,精度比較高,比較穩定。

2、HSI是高速內部時鍾,RC振盪器,頻率為8MHz。精度略差。

3、LSE是低速外部時鍾,接頻率為32.768kHz的石英晶體。一般為RTC使用。

4、LSI是低速內部時鍾,RC振盪器,頻率為40kHz。

5、PLL為鎖相環倍頻輸出,其時鍾輸入源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72MHz。

6、MSI是L系列獨有的,它是一個產生於內部的可選擇的時鍾源,能提供12種不同頻率:100 kHz, 200 kHz, 400 kHz, 800 kHz, 1 MHz, 2 MHz, 4 MHz (default value), 8 MHz, 16 MHz, 24 MHz, 32 MHz and 48 MHz。可以直接選擇為系統主系統時鍾,也可以作為PLL源,經倍頻后選擇作為系統的主系統時鍾。為低功耗提供更多的選擇。其相當於代替了HSI了。

stm32有多個總線,主要有AHBAPB總線

AHB是高速總線,是一種系統總線,它主要負責連接處理器、DMA等一些內部接口。AHB 系統由主模塊、從模塊和基礎結構3部分組成,整個AHB總線上的傳輸都由主模塊發出,由從模塊負責回應。
APB是低速總線,它主要負責連接外圍設備,它又分為APB1和APB2,它的總線架構不像 AHB支持多個主模塊,在APB里面唯一的主模塊就是APB 橋。APB橋就是連接AHB和APB中間的玩意。
APB1最大時鍾頻率為36MHz
APB2最大時鍾頻率為72MHz

二、其次了解三個結構體:

stm32的HAL庫,在系統時鍾設置的結構有,RCC_OscInitTypeDef和RCC_ClkInitTypeDef、RCC_PLLInitTypeDef三個。

1、RCC_OscInitTypeDef為設置系統各時鍾的來源

 

typedef struct
{
  uint32_t OscillatorType;           //選定將被配置的振盪器        
  uint32_t HSEState;               //HSE狀態              
  uint32_t LSEState;               //LSE狀態            
  uint32_t HSIState;               //HSI狀態             
  uint32_t HSICalibrationValue;      //HSI校准調整值  
  uint32_t LSIState;               //LSI狀態              
  RCC_PLLInitTypeDef PLL;       //PLL結構體參數         
} RCC_OscInitTypeDef;

 

2、RCC_ClkInitTypeDef哦設置AHBAPB總線時鍾配置

 

 

 

typedef struct
{
  uint32_t ClockType;       //選定將被配置的時鍾             
  uint32_t SYSCLKSource;    //用作系統時鍾的時鍾源選擇         
  uint32_t AHBCLKDivider;   //AHB時鍾(HCLK)分頻器,該時鍾由SYSCLK而來      
  uint32_t APB1CLKDivider;  //APB1時鍾(PCLK1)分頻器,該時鍾由HCLK而來      
  uint32_t APB2CLKDivider;  //APB2時鍾(PCLK2)分頻器,該時鍾由HCLK而來      
} RCC_ClkInitTypeDef;

 3、RCC_PLLInitTypeDef設置PLL的相關參數

typedef struct
{
  uint32_t PLLState; //PLL狀態
  uint32_t PLLSource;//PLL輸入時鍾
  uint32_t PLLM;     //PLL
  uint32_t PLLN; 
  uint32_t PLLP; 
  uint32_t PLLQ;      
}RCC_PLLInitTypeDef;

 

 

 

 

 


免責聲明!

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



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