單片機stm32的5個時鍾源的詳細分析


  眾所周知STM32有5個時鍾源HSI、HSE、LSI、LSE、PLL,其實他只有四個,因為從上圖中可以看到PLL都是由HSI或HSE提供的。

  其中,高速時鍾(HSE和HSI)提供給芯片主體的主時鍾.低速時鍾(LSE和LSI)只是提供給芯片中的RTC(實時時鍾)及獨立看門狗使用,圖中可以看出高速時鍾也可以提供給RTC。

  內部時鍾是在芯片內部RC振盪器產生的,起振較快,所以時鍾在芯片剛上電的時候,默認使用內部高速時鍾。而外部時鍾信號是由外部的晶振輸入的,在精度和穩定性上都有很大優勢,所以上電之后我們再通過軟件配置,轉而采用外部時鍾信號.

  高速外部時鍾(HSE):以外部晶振作時鍾源,晶振頻率可取范圍為4~16MHz,我們一般采用8MHz的晶振。

  高速內部時鍾(HSI):由內部RC振盪器產生,頻率為8MHz,但不穩定。

  低速外部時鍾(LSE):以外部晶振作時鍾源,主要提供給實時時鍾模塊,所以一般采用32.768KHz。

  低速內部時鍾(LSI):由內部RC振盪器產生,也主要提供給實時時鍾模塊,頻率大約為40KHz。

  OSC_OUT和OSC_IN開始,這兩個引腳分別接到外部晶振8MHz,第一個分頻器PLLXTPRE,遇到開關PLLSRC(PLL entry

  clock

  source),我們可以選擇其輸出,輸出為外部高速時鍾(HSE)或是內部高速時鍾(HSI)。這里選擇輸出為HSE,接着遇到鎖相環PLL,具有倍頻作用,在這里我們可以輸入倍頻因子PLLMUL,要是想超頻,就得在這個寄存器上做手腳啦。

  經過PLL的時鍾稱為PLLCLK。倍頻因子我們設定為9倍頻,也就是說,經過PLL之后,我們的時鍾從原來8MHz的

  HSE變為72MHz的PLLCLK。緊接着又遇到了一個開關SW,經過這個開關之后就是STM32的系統時鍾(SYSCLK)了。通過這個開關,可以切換SYSCLK的時鍾源,可以選擇為HSI、PLLCLK、HSE。

  我們選擇為PLLCLK時鍾,所以SYSCLK就為72MHz了。PLLCLK在輸入到SW前,還流向了USB預分頻器,這個分頻器輸出為USB外設的時鍾(USBCLK)。回到SYSCLK,SYSCLK經過AHB預分頻器,分頻后再輸入到其它外設。

  如輸出到稱為HCLK、FCLK的時鍾,還直接輸出到SDIO外設的SDIOCLK時鍾、存儲器控制器FSMC的FSMCCLK時鍾,和作為APB1、APB2的預分頻器的輸入端。GPIO外設是掛載在APB2總線上的,

  APB2的時鍾是APB2預分頻器的輸出,而APB2預分頻器的時鍾來源是AHB預分頻器。因此,把APB2預分頻器設置為不分頻,那么我們就可以得到GPIO外設的時鍾也等於HCLK,為72MHz了。

  SYSCLK:系統時鍾,STM32大部分器件的時鍾來源。主要由AHB預分頻器分配到各個部件。

  HCLK:由AHB預分頻器直接輸出得到,它是高速總線AHB的時鍾信號,提供給存儲器,DMA及cortex內核,是cortex內核運行的時鍾,cpu主頻就是這個信號,它的大小與STM32運算速度,數據存取速度密切相關。

  FCLK:同樣由AHB預分頻器輸出得到,是內核的“自由運行時鍾”。“自由”表現在它不來自時鍾 HCLK,因此在HCLK時鍾停止時 FCLK

  也繼續運行。它的存在,可以保證在處理器休眠時,也能夠采樣和到中斷和跟蹤休眠事件 ,它與HCLK互相同步。

  PCLK1:外設時鍾,由APB1預分頻器輸出得到,最大頻率為36MHz,提供給掛載在APB1總線上的外設,APB1總線上的外設如下:

  RCC_APB1Periph_tiM2 TIM2時鍾

  RCC_APB1Periph_TIM3 TIM3時鍾

  RCC_APB1Periph_TIM4 TIM4時鍾

  RCC_APB1Periph_WWDG WWDG時鍾

  RCC_APB1Periph_SPI2 SPI2時鍾

  RCC_APB1Periph_USART2 USART2時鍾

  RCC_APB1Periph_USART3 USART3時鍾

  RCC_APB1Periph_I2C1 I2C1時鍾

  RCC_APB1Periph_I2C2 I2C2時鍾

  RCC_APB1Periph_USB USB時鍾

  RCC_APB1Periph_CAN CAN時鍾

  RCC_APB1Periph_BKP BKP時鍾

  RCC_APB1Periph_PWR PWR時鍾

  RCC_APB1Periph_ALL 全部APB1外設時鍾

  PCLK2:外設時鍾,由APB2預分頻器輸出得到,最大頻率可為72MHz,提供給掛載在APB2總線上的外設,APB2總線上的外設如下:

  RCC_APB2Periph_AFIO 功能復用IO時鍾

  RCC_APB2Periph_GPIOA GPIOA時鍾

  RCC_APB2Periph_GPIOB GPIOB時鍾

  RCC_APB2Periph_GPIOC GPIOC時鍾

  RCC_APB2Periph_GPIOD GPIOD時鍾

  RCC_APB2Periph_GPIOE GPIOE時鍾

  RCC_APB2Periph_ADC1 ADC1時鍾

  RCC_APB2Periph_ADC2 ADC2時鍾

  RCC_APB2Periph_TIM1 TIM1時鍾

  RCC_APB2Periph_SPI1 SPI1時鍾

  RCC_APB2Periph_USART1 USART1時鍾

  RCC_APB2Periph_ALL 全部APB2外設時鍾

  最后提供一些stm32的資料方便學習參考

  (定時器)

  http://www.makeru.com.cn/live/1392_1199.html?s=45051

  從0到1,設計自己的開發板

  http://www.makeru.com.cn/live/4034_2016.html?s=45051

  1小時徹底掌握STM32中斷

  http://www.makeru.com.cn/live/3523_1666.html?s=45051

  (時鍾系統)

  http://www.makeru.com.cn/live/1392_1082.html?s=45051

  STM32中斷系統

  http://www.makeru.com.cn/live/3523_1745.html?s=45051


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM