STM32 時鐘樹(結合系統時鐘函式理解)

2021-09-25 11:49:05 字數 2189 閱讀 2035

時鐘樹的概念:

我們可以把mcu的執行比作人體的執行一樣,人最重要的是什麼?是心跳! 心臟的週期性收縮將血液幫浦向身體各處。心臟對於人體好比時鐘對於mcu,微控制器(mcu)的執行要靠週期性的時鐘脈衝來驅動,而這個脈衝的始源往往是由外部晶體振盪器提供時鐘輸入,最終轉換為多個外部裝置的週期性運作。這種時鐘「能量」的傳遞路徑猶如大樹的養分由主幹流向個分支,因此稱為時鐘樹。

stm32時鐘:

在stm32中每個外設都有其單獨的時鐘,在使用某個外設之前必須開啟該外設的時鐘 ,為什麼要這麼麻煩來設定每乙個外設的時鐘而不是將所有外設的時鐘統一開啟?因為stm32的外設繁多,外設的運作所需要的最佳時鐘各不相同,如果所有時鐘同時執行會給mcu帶來極大的負載,所以stm32採取自助餐式的時鐘管理方式——隨用隨開。

stm32時鐘樹系統:

認識stm32的時鐘管理方式後就要對其時鐘樹系統有乙個大體的掌握,時鐘樹系統的結構如下,從圖中可以知曉有多少時鐘、時鐘速度為多少、時鐘如何分配等。圖看起來很複雜,但我們只需要大體了解其運作流程即可。

各類時鐘簡括:

1.hse時鐘(高速外部時鐘):**為外部無源晶振,通常速度8m。

由rcc_cr時鐘控制暫存器中的16:hseon控制。

2.hsi時鐘(高速內部時鐘):**為晶元內部,大小為8m,當hse故障時,系統時鐘會自動切換到hsi,知道hse啟動成功,相當於hse的替補。

由rcc_cr時鐘控制暫存器的位0:hsion控制。

3.pllclk(鎖相環時鐘):**為hsi/2、hse經過倍頻所得。

由cfgr(時鐘配置暫存器)中pllxtpre、pllmul控制。

4.sysclk(系統時鐘):**為hsi、hse、pllclk,最高速度為72m。

由cfgr中的sw控制。

5.hclk(ahb高速匯流排時鐘):**由系統時鐘分頻得到,速度最高為72m。

由cfgr中的hpre控制。

6.pclk1(apb1低匯流排時鐘):**為hclk分頻得到,速度最高為36m ,為apb1匯流排上的外設提供時鐘。

由rcc_cfgr時鐘配置暫存器的ppre1位控制。

7.pclk2(apb2高匯流排時鐘):**為hclk分頻得到,速度最高為72m,為apb2匯流排上的外設提供時鐘。

由rcc_cfgr時鐘配置暫存器的ppre2位控制。

8.rtc時鐘:**為hse_rtc(hse分頻得到)、lse、lsi,為晶元內部的rtc外設提供時鐘。

由rcc備份域控制暫存器rcc_bdcr中rtcsel控制。

9.mco時鐘輸出 :**為pllclk/2、hse、hsi、sysclk,微控制器時鐘輸出引腳,由pa8復用所得。

由crgr中mco控制。

系統時鐘配置流程

結合系統時鐘函式進行說明,此處利用hse作為系統時鐘**,**源於野火教程,由於此**是幫助我們熟悉系統時鐘配置流程,故不要求可以run

void hse_setsysclock(uint32_t pllmul)

2 51

52 // 當 pll 穩定之後,把 pll 時鐘切換為系統時鐘 sysclk

53 rcc_sysclkconfig(rcc_sysclksource_pllclk);

5455 // 讀取時鐘切換狀態位,確保 pllclk 被選為系統時鐘

56 while (rcc_getsysclksource() != 0x08)

58 } else

64 }

65 }

**步驟 :

1.開啟hse,並等待hse穩定;

2.設定ahb、apb1、apb2的預分頻因子;

3.設定pll的時鐘**和倍頻因子;

4.開啟pll,並等待pll穩定;

5.把pllclk切換為系統時鐘sysclk;

6.讀取時鐘切換狀態位,確保pllclk被選為系統時鐘。

配置流程圖:

圖中序號1~7對應著系統設定配置的流程

結語:其實只要掌握了配置流程圖中黃色部分的配置流程就已經大半理解stm32的時鐘樹了,剛開始學有點懵逼,但看多了,在心中排練的多了就會慢慢熟悉的。

STM32時鐘系統

下面我們根據這張圖說說有關stm32時鐘系統的那些事 io uint32 t cr hsi,hse,css,pll等的使能和就緒標誌位 io uint32 t cfgr pll等的時鐘源選擇,分頻係數設定 io uint32 t ahbenr dma,sdio等時鐘使能 io uint32 t ap...

stm32 時鐘系統

1.stm32有5個時鐘源 hsi hse lsi lse pll 1 hsi是高速內部時鐘,rc振盪器,頻率為8mhz,精度不高 2 hse是高速外部時鐘,可接石英或陶瓷諧振器,或者接外部時鐘源,頻率範圍4mhz 16mhz 3 lsi是低速內部時鐘,rc振盪器,頻率為40mhz,提供低功耗時鐘。...

STM32時鐘系統

1.stm32 有5 個時鐘源 hsi hse lsi lse pll hsi 是高速內部時鐘,rc振盪器,頻率為 8mhz 精度不高。hse 是高速外部時鐘,可接石英 陶瓷諧振器,或者接外部時鐘源,頻率範圍為4mhz 16mhz。lsi是低速內部時鐘,rc振盪器,頻率為 40khz 提供低功耗時鐘...