單片機STM32的5個時鐘源知識

  

 

  衆所周知STM32有5個時鐘源HSI、HSE、LSI、LSE、PLL,其實他只有四個,由於從上圖中能夠看到PLL都是由HSI或HSE提供的。html

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

  內部時鐘是在芯片內部RC振盪器產生的,起振較快,因此時鐘在芯片剛上電的時候,默認使用內部高速時鐘。而外部時鐘信號是由外部的晶振輸入的,在精度和穩定性上都有很大優點,因此上電以後咱們再經過軟件配置,轉而採用外部時鐘信號.htm

  高速外部時鐘(HSE):之外部晶振做時鐘源,晶振頻率可取範圍爲4~16MHz,咱們通常採用8MHz的晶振。blog

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

  低速外部時鐘(LSE):之外部晶振做時鐘源,主要提供給實時時鐘模塊,因此通常採用32.768KHz。ip

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

  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時鐘,和做爲APB一、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_1082.html?s=45051
STM32中斷系統
http://www.makeru.com.cn/live/3523_1745.html?s=45051

(定時器)
http://www.makeru.com.cn/live/1392_1199.html?s=45051

相關文章
相關標籤/搜索