第七章復(fù)位和系統(tǒng)時鐘_第1頁
第七章復(fù)位和系統(tǒng)時鐘_第2頁
第七章復(fù)位和系統(tǒng)時鐘_第3頁
第七章復(fù)位和系統(tǒng)時鐘_第4頁
第七章復(fù)位和系統(tǒng)時鐘_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第七章復(fù)位和系統(tǒng)時鐘7.1 復(fù)位復(fù)位,是系統(tǒng)開始正常運轉(zhuǎn)前的一個必經(jīng)過程,復(fù)位部分設(shè)計的好壞,關(guān)系體統(tǒng)的穩(wěn)定。STM32F10xxx支持三種復(fù)位形式,分別為系統(tǒng)復(fù)位、上電復(fù)位和備份區(qū)域復(fù)位。7.1.1 系統(tǒng)復(fù)位系統(tǒng)復(fù)位將復(fù)位除時鐘控制寄存器CSR中的復(fù)位標(biāo)志和備份區(qū)域中的寄存器以外的所有寄存器(見圖 7-1-1)。圖7-1-1復(fù)位系統(tǒng)圖當(dāng)以下事件中的一件發(fā)生時,產(chǎn)生一個系統(tǒng)復(fù)位:1 . NRST管腳上的低電平(外部復(fù)位)2 .窗口看門狗計數(shù)終止(WWDG復(fù)位)3 .獨立看門狗計數(shù)終止(IWDG復(fù)位)4 .軟件復(fù)位(SW復(fù)位)5 .低功耗管理復(fù)位可通過查看RCC_CSR控制狀態(tài)寄存器中的復(fù)位狀態(tài)

2、標(biāo)志位識別復(fù)位事件來源。軟件復(fù)位,通過將Cortex?-M3中斷應(yīng)用和復(fù)位控制寄存器中的SYSRESETREQ位置1',可實現(xiàn)軟件復(fù)位。低功耗管理復(fù)位在以下兩種情況下可產(chǎn)生低功耗管理復(fù)位:1 .在進(jìn)入待機模式時產(chǎn)生低功耗管理復(fù)位:通過將用戶選擇字節(jié)中的 nRST_STDBY位置1'將使能該復(fù)位。這時,即使執(zhí)行了進(jìn)入待機模式的過程,系統(tǒng)將被復(fù)位而不是進(jìn)入待機模式。2 .在進(jìn)入停止模式時產(chǎn)生低功耗管理復(fù)位:通過將用戶選擇字節(jié)中的 nRST_STOP位置1'將使能該復(fù)位。這時,即使執(zhí)行了進(jìn)入停機模式的過程,系統(tǒng)將被復(fù)位而不是進(jìn)入停機模式。7.1.2 電源復(fù)位當(dāng)以下事件中之一發(fā)

3、生時,產(chǎn)生電源復(fù)位:1 .上電/掉電復(fù)位(POR/PDR復(fù)位)2 .從待機模式中返回電源復(fù)位將復(fù)位除了備份區(qū)域外的所有寄存器。(見圖7-1-1) 圖中復(fù)位源將最終作用于RESET 管腳,并在復(fù)位過程中保持低電平。復(fù)位入口矢量被固定在地址0x0000_0004。備份區(qū)域擁有兩個專門的復(fù)位,它們只影響備份區(qū)域。7.1.3 備份域復(fù)位當(dāng)以下事件中之一發(fā)生時,產(chǎn)生備份區(qū)域復(fù)位。軟件復(fù)位,備份區(qū)域復(fù)位可由設(shè)置備份區(qū)域控制寄存器RCC_BDCR中的BDRST位產(chǎn)生。在Vdd和Vbat兩者掉電的前提下,Vdd或Vbat上電將引發(fā)備份區(qū)域復(fù)位。7.2 時鐘三種不同的時鐘源可被用來驅(qū)動系統(tǒng)時鐘(SYSCLK)

4、:HSI 振蕩器時鐘HSE 振蕩器時鐘PLL 時鐘這些設(shè)備有以下2種二級時鐘源:1. 40kHz低速內(nèi)部RC,可以用于驅(qū)動獨立看門狗和通過程序選擇驅(qū)動RTC。RTC用于從停機/待機模式下自動喚醒系統(tǒng)。2. 32.768kHz 低速外部晶體也可用來通過程序選擇驅(qū)動RTC(RTCCLK) 。當(dāng)不被使用時,任一個時鐘源都可被獨立地啟動或關(guān)閉,由此優(yōu)化系統(tǒng)功耗。圖 7-2-1 是系統(tǒng)的時鐘樹。20OSC32_OUT內(nèi)部忒:時仲8MHz內(nèi)部RC葉鐘PLLSRC pLliMULHSIPLLCLKUSESW5CLK72 MH / makcssOSC.OUTOSO IN4-16 MHz外部時鐘PLLXTFRE

5、RTC時鐘外部低速時鏟32. 768EH2RTCSEL|1:0內(nèi)部低速RC時鐘4即工USB分頻耨/I. 1.5外設(shè)時鐘便能如皿工 USBCLK 迫也到USB外設(shè)t2S9CU(A 松 12s3外梭時鐘便能AHB/I, 2.512到獨立看門狗ilWDG) IWDGCLK112S2CLK 一 -JA t& I2S2外設(shè)時導(dǎo)中便能L*二)saociK > gs口10外設(shè)時鐘使能加工rnaxClock-I Enable (4APB1分堀器/I, 2, 4, 白伯M:t -VlOFSMCHCLK一工、 -I。&HB bua, core, )_ rhBiTbOry and DMA&qu

6、ot;toCM"系統(tǒng)時鐘>! FOLK CorieMfre& running clock36MHz r-y PCLK1iL>toAPBl / penprieraJ 外設(shè)暗鐘使能MJ712,3.4,5,5,7It (APB1 prescaler s1|i Ml白曲疝EqTIM2.34,6 and 7 TIMXGUK *卜謖時笆1便能慢加iAPB9分頻器/I, 2, 4. Bd 1&外設(shè)忖鐘便微舊颯-f PCLK2 ,-'periptieralB te APB2TB11 AS timers.II (APB2 piesceilfrr =11x1 else

7、 g pto UMI and TIM&_>timkclk kAD分痂器降 4. 6, 6外鼓時鐘使越怩可t&ADC1.2or3ADCCLKHCLK-2到SDIO 外暇外設(shè)時鐘使能主時鐘輸出MCOMCO埼卜PLL時鐘內(nèi)部高逑時鐘 外部高速時鐘 系統(tǒng)時鐘Legend 二HSE = High Speed External ctocK 3ign«ii HSI = High Speed Internal clock agnalLSl = Low sp&ed lnldrnal clock 觀他 LSE = Low Brtefral dfck signala147E3

8、b圖7-2-1 時鐘樹當(dāng)HSI被用于作為PLL時鐘的輸入時,系統(tǒng)時鐘的最大頻率不得超過64MHz。用戶可通過多個預(yù)分頻器配置 AHB、高速 APB(APB2)和低速 APB(APB1)域的頻率。AHB和APB2域的最大頻率是 72MHz 。HCLK/2 。APB1域的最大允許頻率是 36MHZ 。 SDIO接口的時鐘頻率固定為RCC通過AHB時鐘8分頻后供給Cortex系統(tǒng)定時器的(SysTick)外部時鐘。通過對SysTick控制與狀態(tài)寄存器的設(shè)置,可選擇上述時鐘或Cortex AHB時鐘作為SysTick時鐘。ADC時鐘由高速 APB2時鐘經(jīng)2、4、6或8分頻后獲得。定時器時鐘頻率分配由硬

9、件按以下1.如果相應(yīng)的APB預(yù)分頻系數(shù)是2種情況自動設(shè)置:1,定時器的時鐘頻率與所在 APB總線頻率一致。2.否則,定時器的時鐘頻率被設(shè)為與其相連的APB總線頻率的2倍。FCLK是Cortex? -M3的自由運行時鐘。7.2.1 HSE時鐘(外部高速時鐘)高速外部時鐘信號(HSE)由以下兩種時鐘源產(chǎn)生:HSE外部晶體/陶瓷諧振器HSE用戶外部時鐘為了減少時鐘輸出的失真和縮短啟動穩(wěn)定時間,晶體/陶瓷諧振器和負(fù)載電容器必須盡可能地靠近振蕩器管腳。負(fù)載電容值必須根據(jù)所選擇的振蕩器來調(diào)整。外部時鐘源(HSE旁路)在這個模式里,必須提供外部時鐘。它的頻率最高可達(dá) 25MHz。用戶可通過設(shè)置在時鐘控制寄存

10、器 中的HSEBYP和HSEON位來選擇這一模式。外部時鐘信號 (50%占空比的方波、正弦波或三角波)必須連 到SOC_IN管腳,同時保證 OSC_OUT管腳懸空。見圖 7-2-2。外部晶體/陶瓷諧振器(HSE晶體)476Mz外部振蕩器可為系統(tǒng)提供更為精確的主時鐘。相關(guān)的硬件配置可參考圖7-2-2。在時鐘控制寄存器 RCC_CR中的HSERDY位用來指示高速外部振蕩器是否穩(wěn)定。 在啟動時,直到這 一位被硬件置1,'時鐘才被釋放出來。如果在時鐘中斷寄存器 RCC_CIR中允許產(chǎn)生中斷,將會產(chǎn)生相應(yīng) 中斷。HSE晶體可以通過設(shè)置時鐘控制寄存器里 RCC_CR中的HSEON位被啟動和關(guān)閉。7

11、.2.2 HSI 時鐘HSI時鐘信號由內(nèi)部 8MHz的RC振蕩器產(chǎn)生,可直接作為系統(tǒng)時鐘或在2分頻后作為PLL輸入。HSI RC振蕩器能夠在不需要任何外部器件的條件下提供系統(tǒng)時鐘。它的啟動時間比HSE晶體振蕩器短。然而,即使在校準(zhǔn)之后它的時鐘頻率精度仍較差。校準(zhǔn):制造工藝決定了不同芯片的RC振蕩器頻率會不同,這就是為什么每個芯片的HSI時鐘頻率在出廠前已經(jīng)被ST校準(zhǔn)到1%(25° C)的原因。系統(tǒng)復(fù)位時,工廠校準(zhǔn)值被裝載到時鐘控制寄存器的HSICAL7:0 位。如果用戶的應(yīng)用基于不同的電壓或環(huán)境溫度,這將會影響RC 振蕩器的精度。你可以通過利用在時鐘控制寄存器里的HSITRIM4:0

12、 位來調(diào)整HSI 頻率。 時鐘控制寄存器中的HSIRDY 位用來指示 HSI RC 振蕩器是否穩(wěn)定。在時鐘啟動過程中,直到這一位被硬件置 1, HSI RC 輸出時鐘才被釋放。HSI RC 可由時鐘控制寄存器中的HSION 位來啟動和關(guān)閉。如果HSE 晶體振蕩器失效,HSI 時鐘會被作為備用時鐘源。7.2.3 PLL內(nèi)部 PLL 可以用來倍頻HSI RC 的輸出時鐘或HSE 晶體輸出時鐘。參考圖7-2-1 時鐘樹和時鐘控制寄存器。PLL 的設(shè)置(選擇HIS 振蕩器除2 或 HSE 振蕩器為PLL 的輸入時鐘,和選擇倍頻因子)必須在其被激活前完成。一旦PLL 被激活,這些參數(shù)就不能被改動。如果

13、PLL 中斷在時鐘中斷寄存器里被允許,當(dāng)PLL 準(zhǔn)備就緒時,可產(chǎn)生中斷申請。如果需要在應(yīng)用中使用USB 接口, PLL 必須被設(shè)置為輸出48 或 72MHZ 時鐘,用于提供48MHz 的 USBCLK 時鐘。7.2.4 LSE 時鐘LSE 晶體是一個32.768kHz 的低速外部晶體或陶瓷諧振器。它為實時時鐘或者其他定時功能提供一個低功耗且精確的時鐘源。LSE 晶體通過在備份域控制寄存器(RCC_BDCR) 里的 LSEON 位啟動和關(guān)閉。在備份域控制寄存器(RCC_BDCR) 里的 LSERDY 指示 LSE 晶體振蕩是否穩(wěn)定。在啟動階段,直到這個位被硬件置 1后, LSE 時鐘信號才被釋放

14、出來。如果在時鐘中斷寄存器里被允許,可產(chǎn)生中斷申請。外部時鐘源(LSE 旁路)在這個模式里必須提供一個32.768kHz 頻率的外部時鐘源。你可以通過設(shè)置在備份域控制寄存器(RCC_BDCR) 里的 LSEBYP 和 LSEON 位來選擇這個模式。具有50%占空比的外部時鐘信號(方波、正弦波或三角波)必須連到OSC32_IN 管腳,同時保證OSC32_OUT 管腳懸空。見圖7-2-1 。7.2.5 LSI 時鐘LSI RC 擔(dān)當(dāng)一個低功耗時鐘源的角色,它可以在停機和待機模式下保持運行,為獨立看門狗和自動喚醒單元提供時鐘。LSI時鐘頻率大約40kHz(在30kHz和60kHz之間)。進(jìn)一步信息請

15、參考數(shù)據(jù)手冊中有 關(guān)電氣特性部分。LSI RC可以通過控制/狀態(tài)寄存器(RCC_CSR)里的LSION位來啟動或關(guān)閉。在控制 /狀態(tài)寄存器 (RCC_CSR) 里的 LSIRDY 位指示低速內(nèi)部振蕩器是否穩(wěn)定。在啟動階段,直到這個位被硬件設(shè)置為 1后, 此時鐘才被釋放。如果在時鐘中斷寄存器(RCC_CIR) 里被允許,將產(chǎn)生LSI 中斷申請。注意: 只有大容量產(chǎn)品可以進(jìn)行LSI 校準(zhǔn)LSI 校準(zhǔn):可以通過校準(zhǔn)內(nèi)部低速振蕩器LSI 來補償其頻率偏移,從而獲得精度可接受的RTC 時間基數(shù),以及獨立看門狗(IWDG)的超時時間(當(dāng)這些外設(shè)以LSI為時鐘源)。校準(zhǔn)可以通過使用TIM5 的輸入時鐘(TI

16、M5_CLK) 測量 LSI 時鐘頻率實現(xiàn)。測量以HSE 的精度為保證,軟件可以通過調(diào)整RTC 的 20位預(yù)分頻器來獲得精確的RTC 時鐘基數(shù),以及通過計算得到精確的獨立看門狗 (IWDG) 的超時時間。LSI 校準(zhǔn)步驟如下:1. 打開TIM5 ,設(shè)置通道4為輸入捕獲模式;2. 設(shè)置AFIO_MAPR的TIM5_CH4_IREMAP 位為1'在內(nèi)部把LSI連接到TIM5的通道4;3. 通過 TIM5 的捕獲/比較4事件或者中斷來測量LSI 時鐘頻率;4. 根據(jù)測量結(jié)果和期望的RTC 時間基數(shù)和獨立看門狗的超時時間,設(shè)置20位預(yù)分頻器。7.2.6 系統(tǒng)時鐘(SYSCLK) 選擇系統(tǒng)復(fù)位后

17、,HSI振蕩器被選為系統(tǒng)時鐘。當(dāng)時鐘源被直接或通過PLL間接作為系統(tǒng)時鐘時,它將不能被停止。只有當(dāng)目標(biāo)時鐘源準(zhǔn)備就緒了(經(jīng)過啟動穩(wěn)定階段的延遲或PLL穩(wěn)定),從一個時鐘源到另一個時鐘源的切換才會發(fā)生。在被選擇時鐘源沒有就緒時,系統(tǒng)時鐘的切換不會發(fā)生。直至目標(biāo)時鐘源就緒,才發(fā)生切換。在時鐘控制寄存器(RCC_CR) 里的狀態(tài)位指示哪個時鐘已經(jīng)準(zhǔn)備好了,哪個時鐘目前被用作系統(tǒng)時鐘。7.2.7 時鐘安全系統(tǒng)(CSS)時鐘安全系統(tǒng)可以通過軟件被激活。一旦其被激活,時鐘監(jiān)測器將在HSE 振蕩器啟動延遲后被使能,并在 HSE 時鐘關(guān)閉后關(guān)閉。如果 HSE 時鐘發(fā)生故障,HSE 振蕩器被自動關(guān)閉,時鐘失效事

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

19、振蕩器,同時外部HSE 振蕩器被關(guān)閉。 在時鐘失效時,如果 HSE 振蕩器時鐘(被分頻或未被分頻)是用作系統(tǒng)時鐘的PLL 的輸入時鐘,PLL也將被關(guān)閉。7.2.8 RTC 時鐘通過設(shè)置備份域控制寄存器(RCC_BDCR) 里的 RTCSEL1:0 位, RTCCLK 時鐘源可以由HSE/128 、LSE 或 LSI 時鐘提供。除非備份域復(fù)位,此選擇不能被改變。LSE 時鐘在備份域里,但HSE 和 LSI 時鐘不是。因此:如果LSE被選為RTC時鐘:只要Vbat維持供電,盡管Vdd供電被切斷,RTC仍繼續(xù)工作。如果 LSI 被選為自動喚醒單元(AWU) 時鐘:詳見7.2.5 節(jié) LSI 時鐘。

20、如果 VDD 供電被切斷,AWU狀態(tài)不能被保證。如果 HSE 時鐘 128 分頻后作為RTC 時鐘:如果VDD 供電被切斷或內(nèi)部電壓調(diào)壓器被關(guān)閉(1.8V 域的供電被切斷),則 RTC 狀態(tài)不確定。7.2.9 看門狗時鐘如果獨立看門狗已經(jīng)由硬件選項或軟件啟動,LSI 振蕩器將被強制在打開狀態(tài),并且不能被關(guān)閉。在 LSI 振蕩器穩(wěn)定后,時鐘供應(yīng)給IWDG 。7.2.10 時鐘輸出微控制器允許輸出時鐘信號到外部MCO 管腳。相應(yīng)的GPIO端口寄存器必須被配置為相應(yīng)功能。以下四個時鐘信號可被選作MCO時鐘:SYSCLKHSIHSE除 2的 PLL 時鐘7.3外設(shè)時鐘這樣可以只把使用的那部分外設(shè)時ST

21、M32系列的芯片,所有外設(shè)的時鐘都可以獨立的打開和關(guān)閉, 鐘打開,這樣的好處是,可以降低系統(tǒng)的能耗,滿足低功耗的要求。用戶可通過多個預(yù)分頻器配置AHB、高速APB(APB2)和低速APB(APB1)域的頻率。AHB和APB2域的最大頻率是 72MHZ。APB1域的最大允許頻率是 36MHZ。下面是各個具體外設(shè)的時鐘情況:1» USB時鐘:USB時鐘來源于 PLLCLK ,通過USB分頻器為USB外設(shè)提供48MHz時鐘。由于 USB時鐘分頻器只能1分頻(即不分頻)和 1.5分頻,所以PLL出來的時鐘頻率 只能是48MHz和72MHz。當(dāng)需要使用 USB時,PLLCLK時鐘只能設(shè)定為 4

22、8MHz 和 72MHz。2»獨立看門狗時鐘:獨立看門狗時鐘來源于內(nèi)部的低速RC時鐘,可以提供30KHz60KHz之間,標(biāo)準(zhǔn)時40KHz的時鐘。當(dāng)獨立看門狗打開時,這個時鐘被強制打開,并且不會被 關(guān)閉。3» I2S時鐘:I2S時鐘直接來源于系統(tǒng)時鐘,通過使能控制位來控制該外設(shè)時鐘。4AHB時鐘:AHB時鐘為其他外設(shè)時鐘提供時鐘源。AHB時鐘通過系統(tǒng)時鐘 1, 2512分頻而來,最高為 72MHz5» DMA時鐘:DMA時鐘來源于 AHB ,最高可以到 72MHz。6» APB2高速時鐘:APB2時鐘來源于 AHB時鐘1, 2, 4, 8, 16分頻,最高

23、可以到 72MHz。連接 在APB2時鐘上的是系統(tǒng)的高速外設(shè),有TIME1、TIME8、SPI1、USART1、ADC1、ADC2、ADC3和所有I/O 等這些外設(shè)。這些外設(shè)時鐘都可以單獨打開和關(guān)閉。7» APB1低速時鐘:APB1時鐘來源于 AHB時鐘1, 2, 4, 8, 16分頻,最高可達(dá) 36MHz。連接在 APB1時鐘上的是系統(tǒng)的低速外設(shè),有TIME2TIME7、窗口看 門狗、 USART2 USART5、SPI2、SPI3、CAN、I2C1、I2C2、BKP 后備域、電源控制和 DAC時鐘。這些外設(shè)可以單獨打開和關(guān)閉。7.4 RCC庫函數(shù)7.4.1 函數(shù) RCC_DeIn

24、it表 7-4-1 .描述了函數(shù) RCC_DeInit表 7-4-1 . RCC_DeInit函數(shù)名RCC_DeInit函數(shù)原形void RCC_DeInit(void)功能描述將外設(shè)RCC寄存器重設(shè)為缺省值輸入?yún)?shù)無輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無1.1.1 不改動寄存器 RCC_CR的HSITRIM4:0位。1.1.2 不重置寄存器 RCC_BDCR 和寄存器RCC_CSR 。例:設(shè)置RC(W存器為初始狀態(tài)RCC_DeInit();1.1.3 函數(shù) RCC_HSEConfig表7-4-2.描述了函數(shù) RCC_HSEConfig函數(shù)名RCC_HSEConfig函數(shù)原形void RCC

25、_HSEConfig(u32 RCC_HSE)功能描述設(shè)置外部高速晶振(HSE )輸入?yún)?shù)RCC_HSE: HSE的新狀態(tài)輸出參數(shù):無返回值無先決條件如果HSE被直接或者通過PLL用于系統(tǒng)時鐘,那么它小能被停振被調(diào)用函數(shù)無RCC_HSE該參數(shù)設(shè)置了 HSE的狀態(tài)(見表7-4-3.)。表 7-4-3 RCC_HSE 定義RCC_HSE描述RCC_HSE_OFFHSE晶振OFFRCC_HSE_ONHSE晶振ONRCC_HSE_BypassHSE晶振被外部時鐘旁路例:使能HSERCC_HSEConfig(RCC_HSE_ON);1.1.4 函數(shù) RCC_WaitForHSEStartUp表 7-4-

26、4.描述了函數(shù) RCC_WaitForHSEStartUp函數(shù)名RCC_WaitForHSEStartUp函數(shù)原形ErrorStatus RCC_WaitForHSEStartUp(void)功能描述等待HSE起振該函數(shù)將等待直到 HSE就緒,或者在超時的情況下退出輸入?yún)?shù)無輸出參數(shù)無返回值一個 ErrorStatus 枚舉值: SUCCESS : HSE晶振穩(wěn)定且就緒 ERROR : HSE 晶就緒先決條件無被調(diào)用函數(shù)無ErrorStatus HSEStartUpStatus;/* 使能 HSE */RCC_HSEConfig(RCC_HSE_ON);/*等待直到HS電振或超時退出 */HS

27、EStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus = SUCCESS)/*在此處加入PLL和系統(tǒng)時鐘的定義 */else/*在此處加入超時錯誤處理*/1.1.5 函數(shù) RCC_PLLCon的表7-4-5.描述了函數(shù) RCC_PLLConfig函數(shù)名RCC_PLLConfig函數(shù)原形void RCC_PLLConfig(u32 RCC_PLLSource, u32 RCC_PLLMul)功能描述設(shè)置PLL時鐘源及倍頻系數(shù)輸入?yún)?shù)1RCC_PLLSource : PLL的輸入時鐘源輸入?yún)?shù)2RCC_PLLMul : PLL 倍

28、頻系數(shù)輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無RCC_PLLSourceRCC_PLLSource用以設(shè)置PLL的輸入時鐘源。表7-4-6.給出了該參數(shù)可取的值表 7-4-6. RCC_PLLSource 值RCC_PLLSource描述RCC_PLLSource_HSI_Div2PLL的輸入時鐘 =HSI時鐘頻率除以2RCC_PLLSource_HSE_Div1PLL的輸入時鐘 =HSE時鐘頻率RCC_PLLSource_HSE_Div2PLL的輸入時鐘 =HSE時鐘頻率除以2RCC_PLLMul該參數(shù)用以設(shè)置PLL的倍頻系數(shù)。表7-4-7.給出了該參數(shù)可取的值表 7-4-7. RCC_PL

29、LMul 值RCC_PLLMul描述RCC_PLLMul_2PLL輸入時鐘 x 2RCC_PLLMul_3PLL輸入時鐘x 3RCC_PLLMul_4PLL輸入時鐘 x 4RCC_PLLMul_5PLL輸入時鐘x 5RCC_PLLMul_6PLL輸入時鐘x 6RCC_PLLMul_7PLL輸入時鐘 x 7RCC_PLLMul_8PLL輸入時鐘x 8RCC_PLLMul_9PLL輸入時鐘x 9RCC_PLLMul_10PLL輸入時鐘 x 10RCC_PLLMul_11PLL輸入時鐘 x 11RCC_PLLMul_12PLL輸入時鐘 x 12RCC_PLLMul_13PLL輸入時鐘x 13RCC_

30、PLLMul_14PLL輸入時鐘 x 14RCC_PLLMul_15PLL輸入時鐘x 15RCC_PLLMul_16PLL輸入時鐘 x 16警告:必須正確設(shè)置軟件,使 PLL輸出時鐘頻率不超過 72 MHz 例:/*設(shè)定PLL時鐘輸出72MH旗用8MH力卜部晶振*/RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);1.1.6 函數(shù) RCC_PLLCmd表7-4-8.描述了函數(shù) RCC_PLLCmd函數(shù)名RCC_PLLCmd函數(shù)原形void RCC_PLLCmd(FunctionalState NewState)功能描述使能或者失能PLL輸入

31、參數(shù)1NewState : PLL 新狀態(tài)這個參數(shù)可以?。篍NABLE或者DISABLE輸出參數(shù)無返回值無先決條件如果PLL被用于系統(tǒng)時鐘,那么它不能被失能被調(diào)用函數(shù)無例:/*使能PLL */RCC_PLLCmd(ENABLE);1.1.7 函數(shù) RCC_SYSCLKConfig表7-4-9.描述了函數(shù) RCC_SYSCLKConfig函數(shù)名RCC_SYSCLKConfig函數(shù)原形void RCC_SYSCLKConfig(u32 RCC_SYSCLKSource)功能描述設(shè)置系統(tǒng)時鐘(SYSCLK )輸入?yún)?shù)1RCC_SYSCLKSource: 用作系統(tǒng)時鐘的時鐘源輸出參數(shù)無返回值無先決條件

32、無被調(diào)用函數(shù)無RCC_SYSCLKSource :該參數(shù)設(shè)置了系統(tǒng)時鐘(見表 7-4-10)。表 7-4-10 RCC_SYSCLKSource 值RCC_SYSCLKSource描述RCC_SYSCLKSource_HSI選擇HSI作為系統(tǒng)時鐘RCC_SYSCLKSource_HSE選擇HSE作為系統(tǒng)時鐘RCC_SYSCLKSource_PLLCLK選擇PLL作為系統(tǒng)時鐘例:/*選才I PLL作為系統(tǒng)時鐘源*/RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);1.1.8 函數(shù) RCC_GetSYSCLKSource表7-4-11.描述了 函數(shù) RCC_Get

33、SYSCLKSource函數(shù)名RCC_GetSYSCLKSource函數(shù)原形u8 RCC_GetSYSCLKSource(void)功能描述返回用作系統(tǒng)時鐘的時鐘源輸入?yún)?shù)1RCC_PLLSource : PLL的輸入時鐘源輸出參數(shù)無返回值用作系統(tǒng)時鐘的時鐘源:0x00 : HSI作為系統(tǒng)時鐘0x04 : HSE作為系統(tǒng)時鐘0x08 : PLL作為系統(tǒng)時鐘先決條件無被調(diào)用函數(shù)無例:/*檢測HS屋否為系統(tǒng)時鐘 */if(RCC_GetSYSCLKSource() != 0x04) else1.1.9 函數(shù) RCC_HCLKConfig表 7-4-12 描述了函數(shù) RCC_HCLKConfig函數(shù)

34、名RCC_HCLKConfig函數(shù)原形void RCC_HCLKConfig(u32 RCC_HCLK)功能描述設(shè)置AHB時鐘(HCLK )輸入?yún)?shù)1RCC_HCLK: 定義HCLK ,該時鐘源自系統(tǒng)時鐘( SYSCLK )輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無RCC_HCLK :該參數(shù)設(shè)置了 AHB時鐘,表7-4-13.給出了該參數(shù)可取的值。表 7-4-13 RCC_HCLK 值RCC_HCLK描述RCC_SYSCLK_Div1AHB時鐘=系統(tǒng)時鐘RCC_SYSCLK_Div2AHB時鐘=系統(tǒng)時鐘/ 2RCC_SYSCLK_Div4AHB時鐘=系統(tǒng)時鐘/ 4RCC_SYSCLK_Div8A

35、HB時鐘=系統(tǒng)時鐘/ 8RCC_SYSCLK_Div16AHB時鐘=系統(tǒng)時鐘/ 16RCC_SYSCLK_Div64AHB時鐘=系統(tǒng)時鐘/ 64RCC_SYSCLK_Div128AHB時鐘=系統(tǒng)時鐘/ 128RCC_SYSCLK_Div256AHB時鐘=系統(tǒng)時鐘/ 256RCC_SYSCLK_Div512AHB時鐘=系統(tǒng)時鐘/ 512例:/*設(shè)定AHB寸鐘為系統(tǒng)時鐘 */RCC_HCLKConfig(RCC_SYSCLK_Div1);1.1.10 函數(shù) RCC_PCLK1Config表7-4-14.描述了函數(shù) RCC_PCLK1Config函數(shù)名RCC_PCLK1Config函數(shù)原形void

36、RCC_PCLK1Config(u32 RCC_PCLK1)功能描述設(shè)置低速AHB時鐘(PCLK1 )輸入?yún)?shù)1RCC_PCLK1: 定義PCLK1 ,該時鐘源自 AHB時鐘(HCLK )輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無表 7-4-15. RCC_PCLK1 值RCC_PCLK1描述RCC_HCLK_Div1APB1時鐘=HCLKRCC_HCLK_Div2APB1時鐘=HCLK/2RCC_HCLK_Div4APB1時鐘=HCLK/4RCC_HCLK_Div8APB1時鐘=HCLK/8RCC_HCLK_Div16APB1時鐘=HCLK/16例:/*設(shè)定APB1時鐘為系統(tǒng)時鐘的1/2*/R

37、CC_PCLK1Config(RCC_HCLK_Div2);1.1.11 函數(shù) RCC_PCLK2Config表 7-4-16 描述了函數(shù) RCC_PCLK2Config函數(shù)名RCC_PCLK2Config函數(shù)原形void RCC_PCLK2Config(u32 RCC_PCLK2)功能描述設(shè)置高速AHB時鐘(PCLK2 )輸入?yún)?shù)1RCC_PCLK2: 定義PCLK2 ,該時鐘源自 AHB時鐘(HCLK)輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)表 7-4-17 RCC_PCLK2 值RCC_PCLK2描述RCC_HCLK_Div1APB2時鐘=HCLKRCC_HCLK_Div2APB2時鐘=H

38、CLK/2RCC_HCLK_Div4APB2時鐘=HCLK/4RCC_HCLK_Div8APB2時鐘=HCLK/8RCC_HCLK_Div16APB2時鐘=HCLK/16例:/* 設(shè)定 PCLK2 = HCLK */RCC_PCLK2Config(RCC_HCLK_Div1);1.1.12 函數(shù) RCC_USBCLKConfig表 7-4-18 描述了函數(shù) RCC_USBCLKConfig函數(shù)名RCC_USBCLKConfig函數(shù)原形void RCC_USBCLKConfig(u32 RCC_USBCLKSource)功能描述設(shè)置USB時鐘(USBCLK )輸入?yún)?shù)HCLK) RCC_USBC

39、LKSource: 定義 USBCLK ,該時鐘源自 PLL 輸出輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無RCC_USBCLKSource :該參數(shù)設(shè)置了 USB時鐘(USBCLK ),表7-4-19給出了該參數(shù)可取的值 表 7-4-19 RCC_USBCLKSource 值RCC_USBCLKSource描述RCC_USBCLKSource_PLLCLK_1Div5USB時鐘 =PLL時鐘除以1.5RCC_USBCLKSource_PLLCLK_Div1USB時鐘 =PLL時鐘例:/* PLL時鐘除以1.5作為USB寸鐘源*/RCC_USBCLKConfig(RCC_USBCLKSource

40、_PLLCLK_1Div5);1.1.13 函數(shù) RCC_ADCCLKConfig表7-4-20 描述了函數(shù) RCC_ADCCLKConfig函數(shù)名RCC_ADCCLKConfig函數(shù)原形void ADC_ADCCLKConfig(u32 RCC_ADCCLKSource)功能描述設(shè)置ADC時鐘(ADCCLK )輸入?yún)?shù)RCC_ADCCLKSource:定義 ADCCLK ,該時鐘源自 APB2 時鐘(PCLK2 )輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無RCC_ADCCLKSource :該參數(shù)設(shè)置了 ADC時鐘(ADCCLK ),表7-4-21給出了該參數(shù)可取的值。 表 7-4-21 RC

41、C_ADCCLKSource 值RCC_ADCCLKSource描述RCC_PCLK2_Div2ADC時鐘=PCLK/2RCC_PCLK2_Div4ADC時鐘=PCLK/4RCC_PCLK2_Div6ADC時鐘=PCLK/6RCC_PCLK2_Div8ADC時鐘=PCLK/8例:/*設(shè)置ADC寸鐘為APB2寸鐘的1/2 */RCC_ADCCLKConfig(RCC_PCLK2_Div2);1.1.14 函數(shù) RCC_LSEConfig表7-4-22 描述了函數(shù) RCC_LSEConfig函數(shù)名RCC_LSEConfig函數(shù)原形void RCC_LSEConfig(u32 RCC_HSE)功能描

42、述設(shè)置外部低速晶振(LSE輸入?yún)?shù)RCC_LSE: LSE 的新狀態(tài)輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無RCC_LSE :該參數(shù)設(shè)置了 HSE的狀態(tài)(見表7-4-23.)。 表 7-4-23 RCC_LSE 定義RCC_LSE描述RCC_LSE_OFFLSE晶振OFFRCC_LSE_ONLSE晶振ONRCC_LSE_BypassLSE晶振被外部時鐘旁路例:/*使能外部低速晶振LSE */RCC_LSEConfig(RCC_LSE_ON);1.1.15 函數(shù) RCC_RTCCLKConfig表7-4-24 描述了函數(shù) RCC_RTCCLKConfig函數(shù)名RCC_RTCCLKConfig函數(shù)

43、原形void RCC_RTCCLKConfig(u32 RCC_RTCCLKSource)功能描述設(shè)置RTC時鐘(RTCCLK )輸入?yún)?shù)RCC_RTCCLKSource:定義 RTCCLK輸出參數(shù)無返回值無先決條件RTC時鐘一經(jīng)選定即不能更改,除非復(fù)位后備域被調(diào)用函數(shù)無RCC_RTCCLKSource :該參數(shù)設(shè)置了 RTC時鐘(RTCCLK ),表7-4-25 給出了該參數(shù)可取的值。 表 7-4-25 RCC_RTCCLKSource 值RCC_RTCCLKSource描述RCC_RTCCLKSource_LSE選擇LSE作為RTC時鐘RCC_RTCCLKSource_LSI選擇LSI作為

44、RTC時鐘RCC_RTCCLKSource_HSE_Div128選擇HSE時鐘頻率除以128作為RTC時鐘例:/*選擇LSE作為RTC時鐘*/RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);1.1.16 函數(shù) RCC_RTCCLKCmd表7-4-26 描述了函數(shù) RCC_RTCCLKCmd函數(shù)名RCC_RTCCLKCmd函數(shù)原形void RCC_RTCCLKCmd(FunctionalState NewState)功能描述使能或者失能RTC時鐘輸入?yún)?shù)NewState : RTC時鐘的新狀態(tài)這個參數(shù)可以取:ENABLE或者DISABLE輸出參數(shù)無返回值無先決條件該

45、函數(shù)只有在通過函數(shù) RCC_RTCCLKConfig 選擇RTC時鐘后,才能調(diào)用被調(diào)用函數(shù)無例:/*使能RTC時鐘*/RCC_RTCCLKCmd(ENABLE);7.4.16 函數(shù)RCC_AHBPeriphClockCmd表7-4-27 描述了函數(shù) RCC_AHBPeriphClockCmd函數(shù)名RCC_AHBPeriphClockCmd函數(shù)原形void RCC_AHBPeriphClockCmd(u32 RCC_AHBPeriph, FunctionalState NewState)功能描述使能或者失能AHB外設(shè)時鐘輸入?yún)?shù)1RCC_AHBPeriph:門控AHB外設(shè)時鐘輸入?yún)?shù)2NewSt

46、ate :指定外設(shè)時鐘的新狀態(tài),這個參數(shù)可以?。篍NABLE或者DISABLE輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無RCC_AHBPeriph:該參數(shù)被門控的AHB外設(shè)時鐘,可以取表7-4-27的一個或者多個取值的組合作為該參數(shù)的值。表 7-4-28 RCC_AHBPeriph 值(1)RCC_AHBPeriph描述RCC_AHBPeriph_DMADMA時鐘RCC_AHBPeriph_SRAMSRAM時鐘RCC_AHBPeriph_FLITFFLITF時鐘1. SRAM和FLITF時鐘只能在睡眠(SLEEP )模式下被失能。例:/*使能DMA時鐘*/RCC_AHBPeriphClockCm

47、d(RCC_AHBPeriph_DMA);7.4.17 函數(shù) RCC_APB2PeriphClockCmd表7-4-29 描述了函數(shù) RCC_APB2PeriphClockCmd函數(shù)名RCC_APB2PeriphClockCmd函數(shù)原形void RCC_APB2PeriphClockCmd(u32 RCC_APB2Periph, FunctionalState NewState)功能描述RCC_APB2Periph:門控 APB2 外設(shè)時鐘輸入?yún)?shù)1HCLK) RCC_USBCLKSource: 定義 USBCLK ,該時鐘源自 PLL 輸出輸入?yún)?shù)2NewState :指定外設(shè)時鐘的新狀態(tài),

48、這個參數(shù)可以?。篍NABLE或者DISABLE ;輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無該參數(shù)被門控的APB2外設(shè)時鐘,可以取表7-4-30中的一個或者多個取值的組合作為該參數(shù)的值。表 7-4-30 RCC_AHB2Periph 值RCC_AHB2Periph描述RCC_APB2Periph_AFIO功能復(fù)用IO時鐘RCC_APB2Periph_GPIOAGPIOA時鐘RCC_APB2Periph_GPIOBGPIOB時鐘RCC_APB2Periph_GPIOCGPIOC時鐘RCC_APB2Periph_GPIODGPIOD時鐘RCC_APB2Periph_GPIOEGPIOE時鐘RCC_A

49、PB2Periph_GPIOFGPIOF時鐘RCC_APB2Periph_GPIOGGPIOG時鐘RCC_APB2Periph_ADC1ADC1時鐘RCC_APB2Periph_ADC2ADC2時鐘RCC_APB2Periph_TIM1TIM1時鐘RCC_APB2Periph_SPI1SPI1時鐘RCC_APB2Periph_TIM8TIM8時鐘RCC_APB2Periph_USART1USART1時鐘RCC_APB2Periph_ADC3ADC3時鐘RCC_APB2Periph_ALL全部APB2外設(shè)時鐘例:/* 使能 GPIOA, GPIOB 和 SPI1 時鐘 */RCC_APB2Per

50、iphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_SPI1, ENABLE);7.4.18 函數(shù) RCC_APB1PeriphClockCmd表 7-4-31 描述了 函數(shù) RCC_APB1PeriphClockCmd函數(shù)名RCC_APB1PeriphClockCmd函數(shù)原形void RCC_APB1PeriphClockCmd(u32 RCC_APB1Periph , FunctionalState NewState)功能描述使能或者失能APB1外設(shè)時鐘輸入?yún)?shù)1RCC_APB1Periph: 門

51、控 APB1 外設(shè)時鐘輸入?yún)?shù)2NewState :指定外設(shè)時鐘的新狀態(tài)這個參數(shù)可以取: ENABLE或者DISABLE輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無RCC_APB1Periph :該參數(shù)被門控的APB1外設(shè)時鐘,可以取表 7-4-32中的一個或者多個取值的組 合作為該參數(shù)的值。表 7-4-32RCC_AHB1Periph 值RCC_AHB1Periph描述RCC_APB1Periph_TIM2TIM2時鐘RCC_APB1Periph_TIM3TIM3時鐘RCC_APB1Periph_TIM4TIM4時鐘RCC_APB1Periph_TIM5TIM5時鐘RCC_APB1Periph_

52、TIM6TIM6時鐘RCC_APB1Periph_TIM7TIM7時鐘RCC_APB1Periph_WWDGWWDG時鐘RCC_APB1Periph_SPI2SPI2時鐘RCC_APB1Periph_SPI3SPI3時鐘RCC_APB1Periph_USART2USART2時鐘RCC_APB1Periph_USART3USART3時鐘RCC_APB1Periph_USART4USART4時鐘RCC_APB1Periph_USART5USART5時鐘RCC_APB1Periph_I2C1I2C1時鐘RCC_APB1Periph_12c2I2C2時鐘RCC_APB1Periph_USBUSB時鐘R

53、CC_APB1Periph_CANCAN時鐘RCC_APB1Periph_BKPBKP時鐘RCC_APB1Periph_PWRPWR時鐘RCC_APB1Periph_DACDAC時鐘RCC_APB1Periph_ALL全部APB1外設(shè)時鐘例:/*使能BKP和PWR時鐘*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP | RCC_APB1Periph_PWR, ENABLE);7.4.19 函數(shù) RCC_GetFlagStatus表7-4-33.描述了函數(shù) RCC_ GetFlagStatus函數(shù)名GetFlagStatus函數(shù)原形FlagStatus RCC_G

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論