STM32時鐘系統

2021-07-17 04:18:32 字數 2549 閱讀 5367

下面我們根據這張圖說說有關stm32時鐘系統的那些事

__io uint32_t cr;           // hsi,hse,css,pll等的使能和就緒標誌位 

__io uint32_t cfgr; // pll等的時鐘源選擇,分頻係數設定

__io uint32_t ahbenr; // dma,sdio等時鐘使能

__io uint32_t apb2enr; // apb2線上外設時鐘使能

__io uint32_t apb1enr; // apb1線上外設時鐘使能

外設時鐘使能暫存器-控制ahb,apb1,apb2

例如:

ahb控制sdio時鐘,crc時鐘使能

apb1控制io口時鐘使能

apb1控制串列埠使能,i2

更多配置項參考資料手冊

時鐘源的使能和就緒標誌位

使能時鐘源(cr振盪器和外部晶振),使能後不能立刻穩定(有乙個起振的過程),需要等待穩定

穩定後會在cr暫存器設定標誌位

cr暫存器包含多個標誌位,記錄是否時開啟和就緒

選取位0和位1(hsi)進行說明(其他詳見資料手冊)

位0-hsion:內部高速時鐘8m是否使能(0:關閉,1:使能)

位1-hsirdy:內部高速時鐘是都就緒(是否已穩定 0:尚未就緒,1:已就緒)

設定時鐘源的選擇和分頻/倍頻係數暫存器

rcc_cdgr暫存器:

系統時鐘切換控制位1:0

ahb預分頻係數控制位7:4

所有選擇器的最終選擇結果都是有cfgr暫存器配置的

所有預分頻器/倍頻器的實際引數也是由cfgr暫存器配置的

庫函式分類

//時鐘源使能配置

rcc_lseconfig(),

rcc_hseconfig(),

rcc_hsicmd(),

rcc_lsicmd(),

rcc_pllcmd()...

//時鐘源選擇配置:(最終配置的是cfgr暫存器)

rcc_pllconfig(),

rcc_sysclkconfig(),

rcc_rtcclkconfig()...

//分頻係數選擇

rcc_hclkconfig();

rcc_pclk1config();

rcc_pclk2config();

//外設時鐘使能:

rcc_apb1periphclockcmd(); //apb1線上外設使能

rcc_apb2periphclockcmd(); //apb2線上外設使能

rcc_ahbperiphclockcmd(); //ahb線上外設使能

//其他外設時鐘使能:

rcc_adcclkconfig();

rcc_rtcclkconfig()

//狀態引數獲取引數:

rcc_getclocksfreq();

rcc_getsysclksource();

rcc_getflagstatus();

//rcc中斷相關函式:

rcc_itconfig();

rcc_getitstatus();

rcc_clearitpendingbit();

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 提供低功耗時鐘...

STM32時鐘系統

在stm32 時鐘系統中,有5 個重要的時鐘源,分別是lsi lse hsi hse pll。按照時鐘頻率分可分為高速時鐘源和低速時鐘源,在這5 個中hsi,hse 以及pll 屬於高速時鐘,lsi 和lse 屬於低速時鐘。按照時鐘 可分為外部時鐘源和內部時鐘源,外部時鐘源就是在stm32 晶振管腳...