STM32時鐘總結(jié)剖析_第1頁
STM32時鐘總結(jié)剖析_第2頁
STM32時鐘總結(jié)剖析_第3頁
STM32時鐘總結(jié)剖析_第4頁
STM32時鐘總結(jié)剖析_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、STM32時鐘總結(jié) TOC o 1-5 h z HYPERLINK l bookmark2 o Current Document 一、時鐘基本概念2二、時鐘樹7 HYPERLINK l bookmark10 o Current Document 三、STM32上電后時鐘的過程 7 HYPERLINK l bookmark12 o Current Document 執(zhí)行 Systemlnit ()函數(shù)7 HYPERLINK l bookmark14 o Current Document 執(zhí)行 SetSysClock()函數(shù)8執(zhí)行 SetSysClockTo72 ()函數(shù)8判斷外部高速時鐘源是否穩(wěn)

2、定8 HYPERLINK l bookmark18 o Current Document FLASH 配置9系統(tǒng)時鐘配置是 HCLK,PCLK2 為 HCLK,PCLK1 為 HCLK的一半9配置PLL在這里修改倍頻值。RCC_CFGR_PLLMULL99失能PLL;判斷PLL是否Readay;選擇PLL為系統(tǒng)時鐘,一直等到時鐘穩(wěn)定9 HYPERLINK l bookmark28 o Current Document 四、時鐘源的選擇10 HYPERLINK l bookmark30 o Current Document 系統(tǒng)默認配置時鐘8*9=72M 10配置HSI (高速內(nèi)部時鐘)為系統(tǒng)主

3、時鐘(永遠不變8M)10配置HSE為系統(tǒng)主時鐘。8M (和外部晶振有關(guān)).11配置PLLCLK為系統(tǒng)主時鐘11程序11五、配置 HCLK,PCLK1,PCLK2 11、時鐘基本概念LSE時鐘RCC_BDCR (備 份與寄存器控 制)32.768kHz 的 低速外部晶體 或陶瓷諧振器外部時鐘源 (LSE旁路)必須提高一個 32.768kHz 頻 率的外部時鐘 源,設(shè)置 (RCC_(RCC_BD CR)里的 LSEB 和LSEON位來 選擇這個模式)LSI低功耗時鐘源 的角色,它可 以在停機和待 機模式下保持 運行.為獨立 看門狗和自動 喚醒單元提供 時鐘LSI RC可以通 過控制/狀態(tài) 寄存器

4、(RCC_CSR)里 的LSION位來 啟動或關(guān)閉。LSI校準HSE時鐘高速外部時鐘 信號(HSE)由 以下兩種時鐘 源產(chǎn)生:HSE 外部晶體/陶 瓷諧振器HSE用戶 外部時鐘.外部時鐘源 (HSE旁路)在 這個模式里, 必須提供外部 時鐘。它的頻 率最高可達 25MHz。用戶可 通過設(shè)置在時 鐘控制寄存器 中的HSEBYP 和HSEON位來 選擇這一模 式。外部晶體/陶 瓷諧振器(HSE 晶體 ); 416Mz外部振 蕩器可為系統(tǒng) 提供更為精確 的主時鐘在時鐘控制寄 存器RCC_CR 中的HSERDY 位用來指示高 速外部振蕩器 是否穩(wěn)定。在 啟動時,直到 這一位被硬件 置 1 ,時鐘 才被

5、釋放出 來。如果在時 鐘中斷寄存器 RCC_CIR 中允 許產(chǎn)生中斷, 將會產(chǎn)生相應(yīng) 中斷。系統(tǒng)時鐘 (SYSCLK)選擇系統(tǒng)復(fù)位后, HSI振蕩器被 選為系統(tǒng)時只有當目標時 鐘源準備就緒 了(經(jīng)過啟動2鐘。當時鐘源 被直接或通過 PLL間接作為 系統(tǒng)時鐘時, 它將不能被停 止。穩(wěn)定階段的延 遲或PLL穩(wěn) 定),從一個時 鐘源到另一個 時鐘源的切換 才會發(fā)生。在 被選擇時鐘源 沒有就緒時, 系統(tǒng)時鐘的切 換不會發(fā)生。 直至目標時鐘 源就緒,枚 生切換。時鐘安全系統(tǒng) (CSS)時鐘安全系統(tǒng) 可以通過軟件 被激活。一旦 其被激活,時 鐘監(jiān)測器將在 HSE振蕩器啟 動延遲后被使 能,并在HSE 時鐘

6、關(guān)閉后關(guān) 閉。如果HSE時鐘 發(fā)生故障,HSE 振蕩器被自動 關(guān)閉,時鐘失 效事件將被送 到高級定時器 TIM1的剎車輸 入端,并產(chǎn)生 時鐘安全中斷 CSSI,允許軟 件完成營救操 作。此CSSI中 斷連接到 CortexM3 的 NMI中斷。一旦CSS被激 活,并且HSE 時鐘出現(xiàn)故 障,CSS中斷 就產(chǎn)生,并且 NMI也自動產(chǎn) 生。NMI將被 不斷執(zhí)行,直 到CSS中斷掛 起位被清除。因此,在NMI 的處理程序中 必須通過設(shè)置 時鐘中斷寄存 器(RCC_CIR) 里的CSSC位 來清除CSS中 斷。如果HSE振蕩 器被直間或間 接地作為系統(tǒng) 時鐘,(間接的 意思是:它被 作為PLL輸入 時

7、鐘,并且PLL 時鐘被作為系 統(tǒng)時鐘),時鐘 故障將導(dǎo)致系 統(tǒng)時鐘自動切 換到HSI振蕩 器,同時外部 HSE振蕩器被 關(guān)閉。在時鐘 失效時,如果 HSE振蕩器時 鐘(被分頻或 未被分頻)是 用作系統(tǒng)時鐘 的PLL的輸入 時鐘,PLL也 將被關(guān)閉。RTC時鐘RTCCLK時鐘源 可 以 由 HSE/128、 LSE 或LSI時鐘提 供。除非備份 域復(fù)位,此選 擇不能被改除非備份域復(fù) 位,此選擇不 能被改變。3變??撮T狗時鐘如果獨立看門 狗已經(jīng)由硬件 選項或軟件啟 動,LSI振蕩器 將被強制在打 開狀態(tài),并且 不能被關(guān)閉。在LSI振蕩器 穩(wěn)定后,時鐘 供應(yīng)給IWDG。時鐘輸出微控制器允許 輸出時鐘

8、信號 至U夕卜部MCO管 腳。相應(yīng)的GPIO端 口寄存器必須 被配置為相應(yīng) 功能四個時鐘信號 可被選作MCO 時鐘:SYSCLKHSIHSE除2的PLL 時鐘HSI時鐘HSI時鐘信號 由內(nèi)部8MHz的 RC振蕩器產(chǎn) 生,可直接作 為系統(tǒng)時鐘或 在2分頻后作 為PLL輸入。HSI RC振蕩器 能夠在不需要 任何外部器件 的條件下提供 系統(tǒng)時鐘校準.在時鐘 控制寄存器里 的 HSITRIM4:0 位來調(diào)整HSI 頻率。當HSI被用于 作為PLL時鐘 的輸入時,系 統(tǒng)時鐘的最大 頻率不得超過 64MHz。PLL內(nèi)部PLL可以 用來倍頻HSI RC的輸出時鐘 或HSE晶體輸 出時鐘。PLL的設(shè)置(選

9、擇HIS振蕩器 除2或HSE振蕩 器為PLL的輸 入時鐘,和選 擇倍頻因子) 必須在其被激 活前完成。一 旦PLL被激活, 這些參數(shù)就不 能被改動。如果需要在應(yīng) 用中使用USB 接口,PLL必須 被設(shè)置為輸出 48 或 72MHz 時 鐘,用于提供 48MHz的USBCLK 時鐘。4APB2 APB1 AHBAPB(APB2)和APB(APB1)域 的頻率用戶可通過多 個預(yù)分頻器配 置AHB、高速 APB(APB2)和 低速APB(APB1)域 的頻率。AHB 和APB2域的 最大頻率是 72MHZ。APB1 域的最大允許 頻率是36MHZ。SDIO接口的時 鐘頻率固定為 HCLK/2。Sys

10、Tick 時鐘 與ADC時鐘RCC通過AHB 時鐘8分頻后 供給Cortex 系統(tǒng)定時器的 (SysTick)外 部時鐘通過對 SysTick 控制 與狀態(tài)寄存器 的設(shè)置,可選 擇上述時鐘或 Cortex AHB 時 鐘作為 SysTick 時鐘 AHB不分頻ADC時鐘由高 速APB2時鐘 經(jīng)2、 4、 6或 8分頻后獲得。定時器時鐘定時器時鐘頻 率分配由硬件 按以下2種情 況自動設(shè)置:1.如果相應(yīng) 的APB預(yù)分 頻系數(shù)是 1,定時器 的時鐘頻 率與所在 APB總線頻 率一致。2.否則,定時 器的時鐘 頻率被設(shè) 為與其相 連的APB總 線頻率的2 倍。Legend:HSE = Speed Ex

11、terra I clock $詞HSI = High Speed Internal clock signalLSI= Low Speed Interna) clock signalLSE = Low Speed External clock sWI注意1: LSI校準:校準可以通過使用TIM5的輸入時鐘(TIM5_CLK)測量LSI時鐘頻率實現(xiàn)。測 量以HSE的精度為保證,軟件可以通過調(diào)整RTC的20位預(yù)分頻器來獲得精確的 RTC時鐘基數(shù),以及通過計算得到精確的獨立看門狗(IWDG)的超時時間。LSI校準步驟如下:.打開TIM5,設(shè)置通道4為輸入捕獲模式;.設(shè)置AFIO_MAPR的TIM5_C

12、H4_IREMAP位為 1,在內(nèi)部把LSI連接到TIM5的通道 4;.通過TIM5的捕獲/比較4事件或者中斷來測量LSI時鐘頻率;.根據(jù)測量結(jié)果和期望的RTC時間基數(shù)和獨立看門狗的超時時間,設(shè)置20位預(yù)分 頻器。注意2: AHB,APB2,APB1復(fù)位和時鐘控制用戶可通過多個預(yù)分頻器配置AHB、高速APB(APB2)和低速APB(APB1)域的頻 率。AHB和APB2域的最大頻率是72MHZ。APB1域的最大允許頻率是36MHZ。SDIO 接口的時鐘頻率固定為HCLK/2。注意3:MCO:微控制器時鐘輸出由軟件置 1或清零。0 xx:沒有時鐘輸出;100:系統(tǒng)時鐘(SYSCLK)輸出;101:

13、內(nèi)部8MHz的RC振蕩器時鐘輸出;110:外部4-25MHz振蕩器時鐘輸出;111: PLL時鐘2分頻后輸出。注意:-該時鐘輸出在啟動和切換MCO時鐘源時可能會被截斷。-在系統(tǒng)時鐘作為輸出至MCO管腳時,請保證輸出時鐘頻率不超過50MHz (IO口最高頻 率)時鐘樹48 MHzUSBCLK48 MHzUSBCLK to USB interfaceUSBPrescaler/1S 1.5OSC OUTOSC INOSC32 INOSC32 OUTfl8 MHzHSI RCHSI/2PLLGRC 叫yIUL,x1 6 x3s x4 PLL4-16 MHzHSE OSCLSE OSC32.768 kH

14、zSWSY-CLK:PLLXTPRE/2/1I28 LSEPLLCLK72MHZmaxCSStoRTCRTCCLKRTCSEL1-0Peripheral clockenable:AHBPrescaler1252to Independent Watchdog (IWDG)LSI RCLSIIWDGCLKHSIHSESYSCLKMCOMainClack Output .12 -PLLCLKl2S3CLK to I2S3Peripheral clock enableI2S2CLK to I2S2Peripheral elexk L enable皿 clKisdP加冷h呀田田Bek enableFSM

15、CCLK tQ FSMC72 MHz max/8JldX 、Clock - Enable刊畫HCLK to AHB bus. core, memary and DMAAPB1Prescaler12 4 a 16* to Cortex System time rA FGLKCgtQfree running clock36 MHz maxPC ILK 1 toAPBl r 用ri ph 9kl Clock peri pherals Enable (20 bits)TIM2:34,5S7If (APB1 prescaler =1) stAPB2Prescaler/1S2S 4 8, 16IM乙34名

16、 J TIMXCLKPeripheral Clock Enable (6 bits)72 MHz maxPeripherh Clock8 and 7、PCLK2 .-peripherals to APB2Enable (15 bits)TlM1 & 8 timersi l If (APB2 prescaler =1)x1 else x2toTIMl and TIMiADCPrescaler 4, 0 8/2匚U TIMxCLK 必riph口ral門小之k Enable (2 bii)to ADC1, 2 or 3ADCCLKHCLK,2ITo SDIO AHB interface Periph

17、eral clock enableLegend;HSE = High Speed External dock signal HSI = High Speed Internal deck signsl LSI = Low Speed Internal clock signal LSE - Low Speed External clock signal三、STM32上電后時鐘的過程執(zhí)行 Systemlnit ()函數(shù)。復(fù)位RCC寄存器的有關(guān)時鐘的位和失能時鐘。執(zhí)行$小丫8。00鼠)函數(shù)。L * Istatic void SetSysClock(void)|#ifdef SYSCLK_FR.E(LH

18、SESetSysCloclkToHSE( ) elif defined SYGCLK_FREQ_24MHz SetSysCloclkTo24();elif defined SYGCLK_FREQ_36MHzSetSysCloclkTo36( ) jelif defined SYSCLK_FREQl_4SMHzSetSysClockTo48()jelif defined 0YGCLK_FREQ5呂MHzSetSysCloclkTo56( ) elif defined SYSCLK_FREQ72MHz SetSysCloclkTo72();#endif3 /* If none of the def

19、ine above is e source (default after reset) */)宏定義SYSCLK_FREQ_72MHz define SYSCLK_FR.EQ72MHz 720000003.3執(zhí)行SetSysClockTo72 ()函數(shù)。失能HSE(高速外部時鐘)產(chǎn) Enable HSE 力RCC-CR |= (uint32_t)RCC_CR_HSEON)-判斷外部高速時鐘源是否穩(wěn)定。HSEStatus = RCC-CR & RCC_CR_H0ERD;判斷他是否時鐘源準備好了 = StartUpCounter+H-j while(HSEStatus = 0) & (StartU

20、pCounter != H5E_STARTUP_TIMEOUT)穩(wěn)定后將HSEStatus置為1.FLASH 配置FLASH-ACR |= FLASH_ACR_PRFTBE/* Flash 2 wait state */FLASH-ACR &= (uint32_t)(uint32_t)-FLASH_ACR_LATENCY)jFLASH-ACR |= (uint32_t)FLA5H_ACR_LATENCY_2j系統(tǒng)時鐘配置是HCLK, PCLK2為HCLK, PCLK1為HCLK的一半。/* HCLK = 5YSCLK */RCC-CFGR |= (uin132_t)RCC_C FGR_HPRE

21、_DIV1j /* PCLK2 = HCLK */RCC-CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIVlj /* PCLK1 = HCLK */RCC-CFGR |=(uint32_t)RCC_CFGR_PPREl_DIV2-配置PLL。在這里修改倍頻值。RCC_CFGR_PLLMULL9PLL configuration: PLLCLK = HSE * 9 = 72 MHz */RCC-CFGR &= (uint32_t)(uint32_t)-(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |RCC_CFGR_PLLMULL)jRCC-C

22、FGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE RCC_CFGR_PLLMULL9)5在這里可以修改成 16M,24M,32M,48, 56M,64M,72M.RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_3);RCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_2);4*2,16范圍為8M,64M。失能PLL;判斷PLL是否Readay;選擇PLL為系統(tǒng)時鐘,一直等到時鐘 穩(wěn)定。/* Enable PLL */RCC-CR |= RCC_CR_PLLON;/* Wai

23、t till PLL is ready */ while(RCC-CR & RCC_CR_PLLRDY) = 0)/* Select PLL as system clock source */RCC-CFGR &= (uint32_t)(uint32_t)-(RCC_CFGR_SW)jRCC-CFGR |= (uint32_t)RCC_C FGR_SW_P L L-/* Wait till PLL is used as system clock source */while (RCC-CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0 x08)四、時鐘源

24、的選擇初始化后為72M選擇外部高速時鐘做為時鐘源,8M晶振倍頻9倍為72M,如 果外部晶振是12M,那么主時鐘頻率為12*9 108M。4.1系統(tǒng)默認配置時鐘8*9=72MRCCJnitStruct.0 x200003BO &RCC_Init.struct Q 5Y5CLK_Fr.0 xO44AA200unsigned intQ HCLK_Freq.0 xO44AA200unsigned intPCLKl_Fre.0 x02255100unsigned intQ PCLK2_Fre.0 xD44AA200unsigned intQ ADCCLK_F.0 x02255100unsigned in

25、t配置HSI(高速內(nèi)部時鐘)為系統(tǒng)主時鐘(永遠不變8M)RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); SYSCLK_Fr.Q HCLK_Freq.0 x007A1200unsigned int0 x007 A1200unsigned int3CLKl_Frequency .0 x003D0900unsigned intPCLK2_Fre.Q ADCCLK_F.0 x007A1200unsigned int0 x003D0900unsigned int10配置HSE為系統(tǒng)主時鐘。8M (和外部晶振有關(guān))Q SYSCLK_Fr.J HCLK_Freq.0 x007A1200unsigned int0 x007A1200unsigned int3CLKl_Frequency0 x003 D0900unsigned intV PCLK2_Fre.Q ADCCLKF.0 x007A1200unsigned int0 x003 D0900unsigned intRCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);配置PLL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論