RCC 使用HSE配置系統時鐘

2021-09-25 12:24:35 字數 1938 閱讀 7255

晶元提供時鐘就要有時鐘樹

時鐘樹在參考手冊rcc章節開頭就有(這裡的時鐘樹看到感覺眼睛打了馬賽克,小弟截圖技術有限)

晶振:晶體振盪器,用於各種電路中產生振盪頻率,每個微控制器裡都會有晶振,給微控制器提供時鐘頻率,振盪得越快,時鐘頻率就越高,微控制器執行的速度就越快

時鐘是由晶振提供的,首先要找到時鐘的入口點。圖中osc_in 和 osc_out,這兩個是外部晶振的引腳,所以時鐘是從這裡進入的。接有源晶振時,時鐘從osc_in進入,osc_out懸空。接無源晶振時,時鐘從osc_in 和 osc_out一起進入

時鐘進入以後會經過pll鎖相環,進入前會經過乙個m分頻,進入pll鎖相環之後就會進入n倍頻,輸出時經過乙個p分頻,輸出的時鐘為pllclk

可以選擇pllclk、hse、his作為系統時鐘

然後經過ahb匯流排的分頻因子,成為hclk作為ahb匯流排的時鐘,或者再經過apb的分頻因子作為apb1、apb2匯流排的時鐘(根據參考手冊ahb匯流排頻率最大為180mhz 、高速apb2匯流排頻率最大為90mhz 低速apb1匯流排頻率最大為45mhz)

上述分析的是時鐘樹的系統時鐘,還有其他時鐘rtc實時時鐘、看門狗時鐘、i2s時鐘、乙太網時鐘、mco輸出時鐘,這些等需要用到的時鐘看吧

(hsi也是同樣的思路)

啟動hse,在標頭檔案尋找hse啟動的函式void rcc_hseconfig(uint8_t rcc_hse)

等待hse穩定errorstatus rcc_waitforhsestartup(void)

這個函式是如何實現的:在這個函式中還呼叫了函式

flagstatus rcc_getflagstatus(uint8_t rcc_flag)

那先講解這個函式是如何實現的:這個函式的功能是檢查是否設定了指定的rcc標誌。rcc的標誌(rcc_flag)都會有自己的值,首先檢查引數,然後得到rcc暫存器的位號(根據rcc的標誌確定在rcc的哪個暫存器裡),最後獲得rcc暫存器的位置判斷是否設定了指定的引數,然後返回值,如果設定了返回1,否返回0

判斷hse是否準備好,如果是返回1,否返回0

設定hclk、apb1、apb2預分頻因子

void rcc_hclkconfig(uint32_t rcc_sysclk)

void rcc_pclk1config(uint32_t rcc_hclk)

void rcc_pclk2config(uint32_t rcc_hclk)

設定進入pll鎖相環的m分頻因子 pll鎖相環的n倍頻因子 出pll鎖相環的p分頻因子 void rcc_pllconfig(uint32_t rcc_pllsource, uint32_t pllm, uint32_t plln, uint32_t pllp, uint32_t pllq)控制系統時鐘的頻率就在於這幾個分頻因子

啟動pll void rcc_pllcmd(functionalstate newstate)

等待pll穩定 使用了flagstatus rcc_getflagstatus(uint8_t rcc_flag)把rcc_flag設為rcc_flag_pllrdy,若準備好返回1

設定pllclk為系統時鐘void rcc_sysclkconfig(uint32_t rcc_sysclksource)

讀取狀態位確保pllclk被選中為系統時鐘

uint8_t rcc_getsysclksource(void)//該函式功能:返回時鐘源用作系統時鐘

若返回數值為pllclk數值,則pllclk被選為系統時鐘

函式的形參根據函式中需要傳入的資料所設定

void hse_setsysclk ( uint32_t pllm, uint32_t plln, uint32_t pllp, uint32_t pllq)

else}}

系統時鐘配置

define rcc rcc typedef rcc base 我們先定義乙個結構體指標rcc base,我們知道指標就是位址空間,我們確定了乙個結構體的首位址,那麼這個結構體的大小隨之確定了,這個結構體的成員將會按首位址依次排列,並逐個占用位址空間.訪問乙個結構體指標成員我們用rcc cr.rcc...

使用HSE 16分頻作為RTC時鐘源

rtc時鐘要求提供1hz的時鐘,hse配置為rtc時鐘源,主要配置系統時鐘,使能hse。然後設定好hse分頻 rtc prer分頻暫存器的值。計算如下 stm32f7xx的可程式設計預分配器 rtc prer 分為2個部分 1.通過rtc prer暫存器的prediv a位配置的7位非同步預分頻器。...

系統時鐘的配置流程

rcc oscinittypedef 結構體來定義時鐘 上面案例是用外部8mhz晶振9倍頻得到72mhz,就是圖中1所示的區域rcc clkinittypedef 結構體型別定義匯流排時鐘配置,是圖中2所示,一般都選擇使能系統時鐘 ahb apb1 和 apb2 匯流排時鐘,其中只有 apb1 匯流...