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