晶元提供時鐘就要有時鐘樹
時鐘樹在參考手冊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 匯流...