0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F4_ RCC系統(tǒng)時(shí)鐘配置及描述

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-04-07 14:24 ? 次閱讀

Ⅰ、概述

對(duì)于系統(tǒng)時(shí)鐘應(yīng)該都知道它的作用,就是驅(qū)動(dòng)整個(gè)芯片工作的心臟,如果沒(méi)有了它,就等于人沒(méi)有了心跳。

對(duì)于使用開發(fā)板學(xué)習(xí)的朋友來(lái)說(shuō),RCC系統(tǒng)時(shí)鐘這一塊知識(shí)估計(jì)沒(méi)怎么去配置過(guò),原因在于開發(fā)板提供的晶振基本都是官方標(biāo)準(zhǔn)的時(shí)鐘頻率,使用官方的標(biāo)準(zhǔn)庫(kù),這樣系統(tǒng)時(shí)鐘就是默認(rèn)的配置,也就是默認(rèn)的頻率。但對(duì)于自己設(shè)計(jì)開發(fā)板,或者想要改變系統(tǒng)時(shí)鐘頻率(如:降低功耗就需要降頻)的朋友來(lái)說(shuō),配置系統(tǒng)時(shí)鐘就有必要了。

關(guān)于時(shí)鐘這一塊對(duì)定時(shí)器TIM、RTC、WDG等)相關(guān)的外設(shè)也比較重要,因?yàn)橐缶珳?zhǔn),就需要時(shí)鐘頻率精準(zhǔn)。

Ⅱ、關(guān)于時(shí)鐘

1.時(shí)鐘分類

STM32芯片(所有型號(hào))的時(shí)鐘包含4類:

HSE(High Speed External)高速外部時(shí)鐘

HSI(High Speed Internal)高速內(nèi)部時(shí)鐘

LSE(Low Speed External)低速外部時(shí)鐘

LSI(Low Speed Internal)低速內(nèi)部時(shí)鐘

2.時(shí)鐘源

STM32芯片(所有型號(hào))驅(qū)動(dòng)系統(tǒng)時(shí)鐘的時(shí)鐘源:

HSI內(nèi)部高速時(shí)鐘

HSE外部高速時(shí)鐘

PLLCLK倍頻時(shí)鐘

STM32具有以下兩個(gè)次級(jí)時(shí)鐘源:

32 kHz 低速內(nèi)部 RC (LSI RC),該 RC 用于驅(qū)動(dòng)獨(dú)立看門狗,也可選擇提供給 RTC 用于停機(jī)/待機(jī)模式下的自動(dòng)喚醒。

32.768 kHz 低速外部晶振( LSE 晶振),用于驅(qū)動(dòng) RTC 時(shí)鐘 (RTCCLK)。對(duì)于每個(gè)時(shí)鐘源來(lái)說(shuō),在未使用時(shí)都可單獨(dú)打開或者關(guān)閉,以降低功耗。

3.時(shí)鐘樹(框圖)

關(guān)于STM32的時(shí)鐘樹針對(duì)不同系列芯片可能存在差異。F0、F1和F3系列芯片(主流芯片,頻率相對(duì)較低)有很多相似的地方,F(xiàn)2和F4(高性能芯片)系列芯片有很多相似的地方。但是,F(xiàn)3芯片和F4芯片的時(shí)鐘樹之間卻存在很大差異,具體請(qǐng)看參考手冊(cè)RCC相關(guān)章節(jié)。

STM32時(shí)鐘控制器為應(yīng)用帶來(lái)了高度的靈活性,用戶在運(yùn)行內(nèi)核和外設(shè)時(shí)可選擇使用外部晶振或者使用振蕩器,既可采用最高的頻率,也可為以太網(wǎng)、 USB OTG FS 以及 HS、 I2S 和 SDIO等需要特定時(shí)鐘的外設(shè)保證合適的頻率。

以F417芯片為例:可通過(guò)多個(gè)預(yù)分頻器配置 AHB 頻率、高速 APB (APB2) 和低速 APB (APB1)。 AHB 域的最大頻率為 168 MHz。高速 APB2 域的最大允許頻率為 84 MHz。低速 APB1 域的最大允許頻率為 42 MHz。實(shí)際上輸出的最大時(shí)鐘可以適當(dāng)提高一點(diǎn),但為了保證在多種環(huán)境下,最好還是不要超過(guò)標(biāo)準(zhǔn)的最大值。


STM32F4xx 器件具有兩個(gè) PLL:

主 PLL (PLL) 由 HSE 或 HSI 振蕩器提供時(shí)鐘信號(hào),并具有兩個(gè)不同的輸出時(shí)鐘:

第一個(gè)輸出用于生成高速系統(tǒng)時(shí)鐘(最高達(dá) 168 MHz)

第二個(gè)輸出用于生成 USB OTG FS 的時(shí)鐘 (48 MHz)、隨機(jī)數(shù)發(fā)生器的時(shí)鐘

專用 PLL (PLLI2S) 用于生成精確時(shí)鐘,從而在 I2S 接口實(shí)現(xiàn)高品質(zhì)音頻性能。

由于在 PLL 使能后主 PLL 配置參數(shù)便不可更改,所以建議先對(duì) PLL 進(jìn)行配置,然后再使能(選擇 HSI 或 HSE 振蕩器作為 PLL 時(shí)鐘源,并配置分頻系數(shù) M、 N、 P 和 Q)。

PLLI2S 使用與 PLL 相同的輸入時(shí)鐘( PLLM[5:0] 和 PLLSRC 位為兩個(gè) PLL 所共用)。但是, PLLI2S 具有專門的使能/禁止和分頻系數(shù)( N 和 R)配置位。在 PLLI2S 使能后,配置參數(shù)便不能更改。

Ⅲ、代碼分析

以STM32F4x5、x7系列芯片為例來(lái)分析一下系統(tǒng)時(shí)鐘的配置。

參考軟件工程:

https://yunpan.cn/cRepWDShSK4yc訪問(wèn)密碼 65b1

1.倍頻參數(shù)


結(jié)合上面時(shí)鐘樹和源代碼可以看得出來(lái),系統(tǒng)時(shí)鐘PLLCLK的計(jì)算主要是配置PLL_M、PLL_N、PLL_P這三個(gè)參數(shù),最后168M是通過(guò)分頻、倍頻得出來(lái)的。

2.驗(yàn)證時(shí)鐘頻率

對(duì)于STM32芯片來(lái)說(shuō),驗(yàn)證系統(tǒng)時(shí)鐘最終運(yùn)行多大的速度,最準(zhǔn)確的驗(yàn)證方法的用示波器測(cè)試它的系統(tǒng)時(shí)鐘。

這里描述一下怎樣用示波器來(lái)測(cè)試系統(tǒng)時(shí)鐘。其實(shí)很簡(jiǎn)單,就是在軟件代碼里面配置時(shí)鐘輸出(這里可以輸出多種類型的時(shí)鐘HSE、HSI、PLLCLK等),根據(jù)代碼配置不同,相應(yīng)輸出的時(shí)鐘就不同。請(qǐng)看源代碼:


我提供的代碼里面就有這一選項(xiàng),將定義配置為1,就打開了這個(gè)功能。時(shí)鐘輸出的參數(shù)有兩個(gè),時(shí)鐘源,分頻值。注意:這里的最大輸出時(shí)鐘是100M,所以PLLCLK時(shí)鐘分頻之后才能輸出,不然你用示波器檢測(cè)不到波形(我測(cè)試過(guò)了)。

最后輸出的波形如圖:

Ⅳ、說(shuō)明

關(guān)于STM32的開發(fā),軟件兼容性是很好的,不要覺得你的芯片和我總結(jié)的實(shí)例有差異就不看了,其實(shí)是錯(cuò)誤的認(rèn)識(shí),特別是同一個(gè)系列的芯片基本上程序都兼容,也就是可以互相使用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RCC
    RCC
    +關(guān)注

    關(guān)注

    0

    文章

    93

    瀏覽量

    26875
  • Tim
    Tim
    +關(guān)注

    關(guān)注

    0

    文章

    81

    瀏覽量

    17856
  • STM32F4
    +關(guān)注

    關(guān)注

    3

    文章

    194

    瀏覽量

    27974
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32項(xiàng)目實(shí)戰(zhàn):基于STM32F4的智能燈光控制系統(tǒng)(LVGL),附項(xiàng)目教程/源碼

    《智能燈光控制系統(tǒng)_STM32F4》項(xiàng)目完整文檔、項(xiàng)目源碼,私信小雯老師免費(fèi)領(lǐng)取。STM32項(xiàng)目實(shí)戰(zhàn)之“智能燈光控制系統(tǒng)”(基于STM32F4
    的頭像 發(fā)表于 10-17 16:16 ?538次閱讀
    <b class='flag-5'>STM32</b>項(xiàng)目實(shí)戰(zhàn):基于<b class='flag-5'>STM32F4</b>的智能燈光控制<b class='flag-5'>系統(tǒng)</b>(LVGL),附項(xiàng)目教程/源碼

    CKS32F107xx系列時(shí)鐘系統(tǒng)具體配置方法講解

    上一章節(jié)對(duì)CKS32F107xx系列時(shí)鐘做了整體介紹,本章節(jié)以使用HSI內(nèi)部高速時(shí)鐘為例對(duì)時(shí)鐘具體配置方法進(jìn)行講解。
    的頭像 發(fā)表于 05-28 10:05 ?496次閱讀
    CKS32<b class='flag-5'>F</b>107xx系列<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>系統(tǒng)</b>具體<b class='flag-5'>配置</b>方法講解

    stm32f303VET6外部晶振Cubemax配置spi2導(dǎo)致時(shí)鐘系統(tǒng)故障怎么解決?

    芯片:stm32f303VET6, 使用Cubemax配置spi2、Monster、256DIV,外部晶振8M、SysClock=72M,mco輸出SysClock/8。生成keil工程。打開工程在
    發(fā)表于 04-25 07:09

    STM32F030F4的PA1引腳自閃爍是什么原因?qū)е碌模?/a>

    單片機(jī)為STM32F030F4,使用STM32CUBE_MX配置系統(tǒng)配置了PA1端口作為輸出,其他不做任何改變(使用內(nèi)部
    發(fā)表于 04-19 06:15

    STM32F070選擇內(nèi)部時(shí)鐘后外部上電復(fù)位有時(shí)點(diǎn)亮不了燈怎么解決?

    STM32F070F6P6選擇內(nèi)部時(shí)鐘后,外部上電復(fù)位,有時(shí)點(diǎn)亮不了燈(外部晶振拆了);(20次有1到2次會(huì)出現(xiàn))使用外部晶振是沒(méi)有問(wèn)題的。 配置信息如下: static void
    發(fā)表于 04-18 06:05

    關(guān)于STM32F103內(nèi)外部時(shí)鐘切換問(wèn)題求解

    RCC_PLLCmd(ENABLE);//使能PLL時(shí)鐘 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}//等待P
    發(fā)表于 04-10 08:03

    求助,關(guān)于STM32F3系列啟動(dòng)時(shí)SWD的配置問(wèn)題求解

    |= SWJ_Mode; ////} 這樣可以通過(guò)SWDJ的模式切換來(lái)釋放SWD模式外的3個(gè)IO腳 但在STM32F373中,沒(méi)有AFIO_MAPR這個(gè)寄存器,GPIO的復(fù)位是通過(guò)模式寄存器設(shè)置。 如果我在時(shí)鐘
    發(fā)表于 04-09 06:12

    RCC_ADCCLKConfig函數(shù)的ADC時(shí)鐘是默認(rèn)的嗎?

    ADC配置中,沒(méi)有找到配置ADC時(shí)鐘的函數(shù)RCC_ADCCLKConfig;ADC時(shí)鐘是默認(rèn)的嗎?
    發(fā)表于 03-28 08:36

    stm32f100用庫(kù)3.5如何讓配置系統(tǒng)時(shí)鐘,8MHz晶振輸入,如何配置為24MHz系統(tǒng)時(shí)鐘?

    請(qǐng)問(wèn),stm32f100用庫(kù)3.5如何讓配置系統(tǒng)時(shí)鐘,8MHz晶振輸入,如何配置為24MHz系統(tǒng)
    發(fā)表于 03-26 06:55

    STM32F030時(shí)鐘沒(méi)有APB2, 為什么庫(kù)函數(shù)會(huì)有RCC_APB2PeriphClockCmd ?

    問(wèn)題1:STM32F030時(shí)鐘沒(méi)有 APB2, 為什么庫(kù)函數(shù)會(huì)有 RCC_APB2PeriphClockCmd ?貌似 SPI1是通過(guò)這個(gè)函數(shù)來(lái)操作? 問(wèn)題2:看數(shù)據(jù)手冊(cè),SPI 最大速率
    發(fā)表于 03-18 06:02

    stm32F0在hal庫(kù)時(shí)鐘初始化這里把HSI關(guān)掉了,為什么還可以擦寫Flash?

    stm32F0 Flash擦寫操作時(shí) HSI 必須是開啟的, 但看 stmF030 hal庫(kù)1.11.3stm32f0xx_hal_rcc.c 文件里 HAL_RCC_OscConfig 函數(shù)
    發(fā)表于 03-14 08:11

    stm32cubemx無(wú)法配置32.768外部時(shí)鐘是為什么?

    我的cube6.9.1時(shí)鐘樹無(wú)法配置32.768外部時(shí)鐘是灰色的以前版本可以配置RTC現(xiàn)在只有默認(rèn)lsiRC 接通無(wú)法選擇32.768.RCC
    發(fā)表于 03-14 07:09

    在GD32F103移植STM32F103代碼

    使用相同F(xiàn)LASH和管腳數(shù)量相同的芯片,例如GDF103C8T6移植STM32F103C8T6程序。雖然兩個(gè)款芯片的寄存器地址以及架構(gòu)基本相同。但是需要注意的是GD32F10x主頻是108兆,但是STM32F10x主頻是72兆。
    的頭像 發(fā)表于 12-15 13:37 ?1520次閱讀
    在GD32<b class='flag-5'>F</b>103移植<b class='flag-5'>STM32F</b>103代碼

    STM32H5開發(fā)(3)----電源控制和RCC

    STM32H5開發(fā)(3)----電源控制和RCC
    的頭像 發(fā)表于 12-01 14:59 ?936次閱讀
    <b class='flag-5'>STM32</b>H5開發(fā)(3)----電源控制和<b class='flag-5'>RCC</b>

    STM32F207VC、STM32F205VC例程

    STM32F207VC、STM32F205VC例程| name ? ? ? ? ? ? ? ? | 描述 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? || :------------------- | -
    發(fā)表于 11-16 17:02 ?5次下載