STM32 時鐘分析

在嵌入式系統中時鐘是其脈搏,處理器內核在時鐘驅動下完成指令執行,狀態變換等動作。外設部件在時鐘的驅動下完成各種工作,比如串口數據的發送、A/D轉換、定時器計數等等。

  • STM32
Image placeholder
管理員 2021-04-01 10:44

01?前言

在嵌入式系統中時鐘是其脈搏,處理器內核在時鐘驅動下完成指令執行,狀態變換等動作。外設部件在時鐘的驅動下完成各種工作,比如串口數據的發送、A/D轉換、定時器計數等等。

02?STM32時鐘源

  • HSI是高速內部時鐘,RC振蕩器,頻率為8MHz。

  • HSE是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,比較常用的8MHz 12MHz ?25MHz。

  • LSI是低速內部時鐘,RC振蕩器,頻率為40kHz。

  • LSE是低速外部時鐘,接頻率為32.768kHz的石英晶體。

在STM32中每個外設都有其單獨的時鐘,在使用某個外設之前必須打開該外設的時鐘 ,為什么要這么麻煩來設置每一個外設的時鐘而不是將所有外設的時鐘統一打開?因為STM32的外設繁多,外設的運作所需要的最佳時鐘各不相同,如果所有時鐘同時運行會給MCU帶來極大的負載,所以STM32為了實現低功耗,而設計的功能完善構成復雜的時鐘系統,稱之時鐘樹。使外設功能的時鐘可自配置。

03?STM32 時鐘樹

▲ 圖源網絡

  • 上圖下紅框中LSE和LSI是提供給系統看門狗和RTC(實時時鐘)使用的。如果需要精度較高的RTC時鐘,需要使用LSE,頻率為32.768K提供一個精確的時鐘源。

  • HSI為8M,和HSE相比精度較差,對于性能無要求場景又要節省成本使用HSI。

  • 在時鐘樹系統中,主時鐘選擇由PLL生成,PLL為鎖相環倍頻輸出,其時鐘輸入源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72MHz。

  • css時鐘監視系統但HSE失效時自動切換至HSI5、外設有獨立的時鐘分頻配置,主要有USB、SDIO、FSMC、APB1、APB2、ADC等。APB1和APB2是倆個總線橋:APB1和APB2,其中APB1是低速總線,APB2是全速總線。

具體哪些外設掛在那條總線上可參考下圖:

** 使用STM32CubeMX配置時鐘**
以STM32F105為例打開工程選擇HSE,選擇外部晶振作為輸入。

點擊Clock Configuration如下圖:

04?結尾

本篇主要分析STM32的時鐘,并以stm32f105為例使用STM32CubeMX配置時鐘演示。如有疑問,歡迎留言討論。

評論0