STM32F1開發標準教程 課件 ch09實驗8-RCC_第1頁
STM32F1開發標準教程 課件 ch09實驗8-RCC_第2頁
STM32F1開發標準教程 課件 ch09實驗8-RCC_第3頁
STM32F1開發標準教程 課件 ch09實驗8-RCC_第4頁
STM32F1開發標準教程 課件 ch09實驗8-RCC_第5頁
已閱讀5頁,還剩40頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

實驗8——RCC卓越工程師培養系列本書獲深圳大學教材出版資助STM32F1開發標準教程1.RCC功能框圖RCC功能框圖如圖9-1所示,本書中的所有實驗均涉及RCC,下面依次介紹高速外部時鐘HSE、鎖相環時鐘選擇器和倍頻器、系統時鐘SYSCLK選擇器、AHB預分頻器、APB1和APB2預分頻器定時器倍頻器、ADC預分頻器和Cortex系統時鐘分頻器。1.RCC功能框圖HSE是高速外部時鐘的縮寫,HSE可以由有源晶振提供,也可以由無源晶振提供,頻率范圍為4~16MHz。STM32核心板板載晶振為無源8MHz晶振,通過OSC_IN和OSC_OUT兩個引腳接入芯片,同時還要配諧振電容。如果選擇有源晶振,則時鐘從OSC_IN接入,OSC_OUT懸空。1.高速外部時鐘HSE1.RCC功能框圖鎖相環時鐘PLLCLK由兩級選擇器和一級倍頻器組成。第一級鎖相環時鐘選擇器通過RCC_CFGR的PLLXTPRE選擇HSE二分頻或HSE作為下一級的時鐘輸入第二級鎖相環時鐘選擇器通過RCC_CFGR的PLLSRC選擇HSE(或HSE二分頻)或HSI二分頻(4MHz)作為下一級的時鐘輸入。本書所有實驗均選擇HSE(8MHZ)作為下一級的時鐘輸入。HSI是內部高速時鐘的縮寫,由內部RC振蕩器產生,頻率為8MH,但不穩定。鎖相環時鐘倍頻器通過RCC_CFGR的PLLMUL選擇對上一級時鐘進行2、3、4、...16倍頻輸出,由于本書所有實驗中PLLMUL均為0111,即配置為9倍頻,因此,此處輸出時鐘(PLLCLK)的頻率為72MHz。2.鎖相環時鐘選擇器和倍頻器1.RCC功能框圖通過RCCCFGR的SW選擇系統時鐘SYSCLK的時鐘源可以選擇HSIHSE或PLLCLK作為SYSCLK的時鐘源。本書所有實驗均選擇PLLCLK作為SYSCLK的時鐘源由于PLLCLK是72MHz,因此,SYSCLK同樣也是72MHz。AHB預分頻器通過RCCCFGR的HPRE對SYSCLK進行1、2、4、8、16、64、128256或512分頻,本書所有實驗的AHB預分頻器均未對SYSCLK進行分頻即AHB時鐘依然為72MHz。3.系統時鐘SYSCLK選擇器4.AHB預分頻器1.RCC功能框圖AHB時鐘是APB1和APB2預分頻器的時鐘輸入,APB1預分頻器通過RCC_CFGR的PPRE1對AHB時鐘進行1248或16分頻APB2預分頻器通過RCC_CFGR的PPRE2對AHB時鐘進行1、2、4、8或16分頻。本書所有實驗的APB1預分頻器均對AHB時鐘進行2分頻,APB2預分頻器對AHB時鐘未進行分頻因此,APB1時鐘頻率為36MHZ,APB2時鐘頻率為72MHz。需要注意的是,APB1時鐘最大頻率為36MHZAPB2時鐘最大頻率為72MHz。5.APB1和APB2預分頻器1.RCC功能框圖STM32有8個定時器其中TIM2~7時鐘由APB1時鐘提供TIM1和TIM8時鐘由APB2時鐘提供。當APBx預分頻器的分頻系數為1時,定時器的時鐘頻率與APBx時鐘頻率相等否則,當APBx預分頻器的分頻系數不為1時,定時器的時鐘頻率是APBx時鐘頻率的2倍本書所有實驗的APB1預分頻器的分頻系數均為2,APB2預分頻器的分頻系數為1,而且APB1時鐘頻率為36MHzAPB2時鐘頻率為72MHz因此TIM27的時鐘頻率為72MHzTIM1和TIM8的時鐘頻率同樣為72MHz。6.定時器倍頻器1.RCC功能框圖STM32微控制器的ADC時鐘由APB2時鐘提供ADC預分頻器通過RCCCFGR的ADCPRE對APB2時鐘進行246或8分頻于APB2時鐘是72MHZ而本書最后兩個實驗(DAC實驗和ADC實驗)的ADC預分頻器的分頻因子為6因此,最終的ADC時鐘為72MHz/6=12MHz。AHB時鐘或AHB時鐘經過8分頻作為Cortex系統時鐘。本書中的SysTick實驗使用的即為Cortex系統時鐘AHB時鐘頻率為72MHz,因此,SvsTick時鐘頻率同樣是72MHz或是9MHz。本書所有實驗的Cortex系統時鐘頻率均默認為72MHz,因此,SysTick時鐘頻率也為72MHz。7.ADC預分頻器8.Cortex系統時鐘分頻器2.RCC部分寄存器RCC_CR的結構、偏移地址和復位值如圖9-2所示,對部分位的解釋說明如表9-1所示。1.時鐘控制寄存器(RCC_CR)2.RCC部分寄存器RCC_CFGR的結構偏移地址和復位值如圖9-3所,對部分位的解釋說明如表9-2所示。2.時鐘配置寄存器(RCC_CFGR)2.RCC部分寄存器RCC_CIR的結構、偏移地址和復位值如圖9-4所示對部分位的解釋說明如表9-3所示。3.時鐘中斷寄存器(RCC_CIR)3.RCC部分固件庫函數RCC_DeInit函數的功能是將外設RCC寄存器重設為默認值,通過向RCC→CR、RCC→CFGR和RCC→CIR寫入參數來實現。具體描述如表9-4所示。1.RCC_Delnit3.RCC部分固件庫函數RCC_HSECong函數的功能是設置外部高速晶振(HSE),通過向RCC→CR寫入參數來實現。具體描述如表9-5所示。參數RCC_HSE為HSE的新狀態,可取值如表9-6所示。2.RCC_HSEConfig3.RCC部分固件庫函數RCC_WaitForHSEStartUp函數的功能是等待HSE起振,通過讀取并判斷RCC→CR、RCC→BDCR或RCC→CSR來實現。具體描述如表9-7所示。3.RCC_WaitForHSEStartUp3.RCC部分固件庫函數RCC_HCLKConfig函數的功能是設置AHB時鐘(HCLK),通過向RCC→CFGR寫入參數來實現。具體描述如表9-8所示。參數RCC_HCLK用來設置AHB時鐘,可取值如表9-9所示。4.RCC_HCLKConfig3.RCC部分固件庫函數RCC_PCLK1Config函數的功能是設置低速APB時鐘(即APB1時鐘PCLK1),通過向RCC→CFGR寫入參數來實現。具體描述如表9-10所示。5.RCC_PCLK1Config3.RCC部分固件庫函數參數RCC_PCLK1用來設置低速APB時鐘,可取值如表9-11所示。5.RCC_PCLK1Config3.RCC部分固件庫函數RCC_PCLK2Config函數的功能是設置高速APB時鐘(即APB2時鐘或PCLK2),通過向RCC→CFGR寫入參數來實現。具體描述如表9-12所示。6.RCC_PCLK2Config3.RCC部分固件庫函數參數RCC_PCLK2用來設置高速APB時鐘,可取值如表9-13所示。6.RCC_PCLK2Config3.RCC部分固件庫函數RCC_PLLCmd函數的功能是使能或除能PLL,通過讀取RCC→CR來實現。具體描述如表9-14所示。7.RCC_PLLCmd3.RCC部分固件庫函數RCC_GetFlagStatus函數的功能是獲取指定的RCC標志位狀態,通過讀取RCC→CR、RCC→BDCR或RCC→CSR來實現。具體描述如表9-15所示。8.RCC_GetFlagStatus3.RCC部分固件庫函數參數RCC_FLAG用來指定待獲取的RCC標志位,可取值如表9-16所示。8.RCC_GetFlagStatus3.RCC部分固件庫函數RCC_SYSCLKConfig函數的功能是設置系統時鐘(SYSCLK)通過向RCC→CFGR寫入參數來實現。具體描述如表9-17所示。9.RCC_SYSCLKConfig3.RCC部分固件庫函數參數RCC_SYSCLKSource為用作系統時鐘的時鐘源,可取值如表9-18所示。9.RCC_SYSCLKConfig3.RCC部分固件庫函數RCC_GetSYSCLKSource函數的功能是返回用作系統時鐘的時鐘源,通過讀取RCC→CFGR來實現。具體描述如表9-19所示。10.RCC_GetSYSCLKSource4.Flash部分寄存器STM32的內部Flash總共有8個寄存器本實驗僅涉及閃存訪問控制寄存器(FLASH_ACR)。FLASH_ACR的結構偏移地址和復位值如圖9-5所示,對部分位的解釋說明如表9-20所示。5.Fash部分固件庫函數FLASH_PrefetchBuferCmd函數的功能是使能或除能預取指緩存,通過向FLASH→ACR寫入參數來實現。具體描述如表9-21所示。1.FLASH_PrefetchBufferCmd5.Fash部分固件庫函數參數FLASH_PrefetchBuffer用來選擇FLASH預取指緩存的模式,可取值如表9-22所示。1.FLASH_PrefetchBufferCmd5.Fash部分固件庫函數FLASH_SetLatency函數的功能是設置代碼延時值,通過向FLASH→ACR寫入參數來實現。具體描述如表9-23所示。2.FLASH_SetLatency5.Fash部分固件庫函數參數FLASH_Latency用來設置FLASH存儲器延時時鐘周期數,可取值如表9-24所示。2.FLASH_SetLatency03實驗步驟步驟1:首先,將“D:STM32KeilTestMaterial08RCC實驗”文件夾復制到“D:STM32KeilTestProduct”文件夾中。然后,雙擊運行“DSTM32KeilTestProductl08RCC實驗Project”文件夾中的STM32KeilPrjuvprojx,單擊工具欄中的按鈕。當BuildOutput欄出現FromELF:creatinghexfile...時,表示已經成功生成hex文件,出現0Error(s)0Warming(s)表示編譯成功最后,將axf文件下載到STM32的內部Flash,觀察STM32核心板上的兩個LED是否交閃爍。如果兩個LED交替閃爍,串口正常輸出字符串,表示原始工程是正確的,接著就可以進入下一步操作。復制并編譯原始工程步驟2:首先,將“D:STM32KeilTestProductl08RCC實驗HWRCC”文件夾中的RCCc添加到HW分組,具體操作可參見2.3節步8。然后,將“D:STM32KeilTestProducti08RCC實驗HWRCC”路徑添加到IncludePaths欄,具體操作可參見23節步11。添加RCC文件對步驟3:單擊

按鈕進行編譯,編譯結束后,在Project面板中,雙擊RCC.c下的RCC。在RCCh文件的“包含頭文件”區,添加代碼#include"DataType.h”。在RCCh文件的“API函數聲明”區,添加如程序清單9-1所的API函數聲明代碼ImitRCC函數主要是初始化RCC時鐘控制器模塊。完善RCC.h文件步驟4:在RCCc文件的“包含頭文件”區的最后,添加代碼#include"stm32f10xconfh"。在RCC.c文件的“內部函數聲明”區,添加ConfigRCC函數的聲明代碼,如程序清單9-2所示,ConfigRCC函數用于配置RCC。完善RCC.c文件步驟4:在RCCc文件的“內部函數實現”區,添加ConfigRCC函數的實現代碼,如程序清單9-3所示。下面按照順序對ConfigRCC函數中的語進行解釋說明。(1)通過RCC_DeInit函數將RCC部分存器重設為默認值,這些寄存器包括RCC_CR、RCC_CFGR、RCC_CIR和RCC_CFGR2。(2)通過RCC_HSEConfg函數使能外部高速晶振。該函數涉及RCC_CR的HSEONHSEON為0除能外部高速晶振,HSEON為1使能外部高速晶振,可參見圖9-2和表9-1。完善RCC.c文件步驟4:(3)通過RCC_WaitForHSEStartUp函數判斷外部高速時鐘是否就緒,返回值賦給HSEStartUpStatus。該函數涉及RCC_CR的HSERDY,HSERDY為1表示外部高速時鐘準備就緒,HSEStartUpStatus為SUCCESS;HSERDY為0表示外部高速時鐘未就緒,HSEStartUpStatus為ERROR,可參見圖9-2和表9-1。(4)通過FLASHPrefetchBufferCmd函數啟用Fash預讀取緩沖區,這樣可以加速內部Flash的讀取。該函數涉及FLASHACR的PRFTBE,PRFTBE為0關閉Flash預讀取緩沖區PRFTBE為1啟用Flash預讀取緩沖區,可參見圖9-5和表9-20。完善RCC.c文件步驟4:(5)通過FLASH_SetLatency函數將時延設置為兩個等待狀態。該函數涉及FLASH_ACR的LATENCY[2:0],系統時鐘SYSCLK時鐘頻率在0~24MHz時,LATENCYT[2:0]取值為000(零等待狀態);時鐘頻率在24~48MHz時,取值為001(一個等待狀態);時鐘頻率在48~72MHz時,取值為010(兩個等待狀態),可參見圖9-5和表9-20。(6)通過RCC_HCLKCofig函數將高速AHB時鐘的預分頻系數設置為1。該函數涉及RCC_CFGR的HPRE[3:0],AHB時鐘是系統時鐘SYSCLK時鐘進行1、2、4、8、16、64128、256或512分頻的結果,HPRE[3:0]控制AHB時鐘的預分頻系數,可參見圖9-3和表9-2。本實驗的HPRET3:01為0000,即AHB時鐘與SYSCLK時鐘頻率相等,SYSCLK時鐘頻率為72MHz,因此,AHB時鐘頻率同樣也為72MHz。完善RCC.c文件步驟4:(7)通過RCC_PCLK2Confg函數將高速APB2時鐘的預分頻系數設置為1。該函數涉及RCC_CFGR的PPRE2[2:0],APB2時鐘是AHB時鐘進行1248或16分頻的結果PPRE2[2:0]控制APB2時鐘的預分頻系數可參見圖9-3和表9-2本實驗的PPRE22:01為000即APB2時鐘與AHB時鐘頻率相等AHB時鐘頻率為72MH此APB2時鐘頻率同樣也為72MHz。(8)通過RCC_PCLK1Confg函數將高速APB時鐘的預分頻系數設置為2。該函數涉及RCC_CFGR的PPRE12:01APB1時鐘是AHB時鐘進行1248或16分頻的結果PPRE1T[2:0]控制APB1時鐘的預分頻系數可參見圖9-3和表9-2本實驗的PPRE1[2:0]為100即APB1時鐘是AHB時鐘的2分頻由于AHB時鐘頻率為72MH因此,APB1時鐘頻率為36MHZ。完善RCC.c文件步驟4:(9)通過RCC_PLLConfig函數設置PLL時鐘源及倍頻系數。該函數涉及RCC_CFGR的PLLMUL[3:0]、PLLXTPRE和PLLSRC,PLLMUL[3:0]用于控制PLL時鐘倍頻系數,PLLSRC和PLLXTPRE用于選擇HSI時鐘2分頻HSE時鐘或HSE時鐘2分頻作為PLL時鐘可參見圖9-3和表9-2。本實驗的PLLSRC為1,PLLXTPRE為0,PLLMUL為0111,因此,頻率為8MHz的HSE時鐘經過9倍頻后作為PLL時鐘,即PLL時鐘為72MHz。(10)通過RCCPLLCmd函數使能PLL時鐘。該函數涉及RCCCR的PLLON,PLLON用于除能或使能PLL時鐘,可參見圖9-2和表9-1。完善RC

溫馨提示

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

最新文檔

評論

0/150

提交評論