一、當STM32剛上電啟動時,它是從頻率為8 MHz 的內(nèi)部振蕩器運行的,假如程序設(shè)置外部高速時鐘(HSE)為系統(tǒng)時鐘源時,在外部高速時鐘準備好之前對HSI相關(guān)寄存器的操作是無效的,相關(guān)位的值將保持在默認值。因此,要想關(guān)閉HSI以節(jié)能,必須在外部高速時鐘準備好之后對HSI相關(guān)寄存器操作。
二、當STM32啟動時,它是從頻率為8 MHz 的內(nèi)部振蕩器運行的,因此內(nèi)部FLASH 的訪問時間不是一個問題。然而,一旦PLL啟用并作為時鐘源,對于運行在最高性能的Cortex CPU來說,F(xiàn)LASH的速度跟不上CPU。為了允許Cortex CPU 運行在72 MHz具有零等待狀態(tài),F(xiàn)LASH 存儲器具有由兩個64 位緩存器組成的預取緩沖器。這些緩沖器可以從FLASH 存儲器中進行64 位寬讀取,然后傳遞獨立的16 位或32 位指令給Cortex CPU執(zhí)行。但是,必須在主時鐘源切換到PLL前啟用預取緩沖器。啟用預取緩沖器,還必須調(diào)整FLASH 預取緩沖器所需的等待周期。
零等待狀態(tài),當0MHz< SYSCLK≤24MHz
一個等待狀態(tài),當24MHz< SYSCLK≤48MHz
兩個等待狀態(tài),當48MHz< SYSCLK≤72MHz
三、主流時鐘配置步驟:1.打開外部高速時鐘晶振(HSE);2.等待外部高速時鐘晶振穩(wěn)定振動;3.設(shè)置AHB預分頻器(HPRE[3:0]);4.設(shè)置低速APB1預分頻器(PPRE1[2:0]);5.設(shè)置高速速APB2預分頻器(PPRE2[2:0]);6.設(shè)置PLLMUL時鐘源以及PLLMUL的倍頻數(shù);7.使能PLL;8.等待PLL時鐘就緒;9.打開FLASH預取緩沖區(qū),設(shè)置FLASH等待周期數(shù);10.設(shè)置PLL輸出為系統(tǒng)時鐘(SW[1:0])。11.打開所要用到的外設(shè)的時鐘。
在配置 STM32 外設(shè)的時候,任何時候都要先使能該外設(shè)的時鐘!