Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

STM32 時鐘系統全景解析:從時鐘源到外設分頻的完整鏈路

編輯:Linux 教學

五大時鐘源

源全稱類型頻率/範圍典型用途
HSIHigh-Speed InternalRC 振蕩器8 MHz系統時鐘備選、啟動默認
HSEHigh-Speed External晶振/外部時鐘4–16 MHz系統時鐘主源、PLL 輸入
LSILow-Speed InternalRC 振蕩器40 kHz獨立看門狗 (IWDG)、RTC 备选
LSELow-Speed External32.768 kHz 晶體32.768 kHzRTC 精準計時
PLLPhase-Locked Loop倍頻輸出輸入:HSI/2、HSE、HSE/2
倍頻:2–16×
輸出≤72 MHz
系統時鐘主源、USB 48 MHz、MCO 輸出

系統時鐘 (SYSCLK) 選擇與分頻樹

SYSCLK 可選 HSI、HSE、PLL,最高 72 MHz。經 AHB 預分頻(1/2/4/8/16/64/128/256/512)產生 HCLK,供應五大模塊:

  1. HCLK → AHB 總線、內核、內存、DMA
  2. HCLK/8 → Cortex 系統定時器 (SysTick)
  3. FCLK = HCLK → 內核空閒運行時鐘
  4. APB1 分頻器(1/2/4/8/16)→
    • PCLK1(≤36 MHz)→ APB1 低速外設
    • ×1/×2 → Timer2/3/4 專用倍頻(APB1 分頻=1 時 ×1,否則 ×2)
  5. APB2 分頻器(1/2/4/8/16)→
    • PCLK2(≤72 MHz)→ APB2 高速外設
    • ×1/×2 → Timer1 專用倍頻(同 APB1 規則)
    • ADC 分頻器(2/4/6/8)→ ADC 采樣時鐘

關鍵外設時鐘需求

  • USB FS:串行接口引擎 (SIE) 必須 48 MHz,僅來自 PLL 輸出(1 分頻或 1.5 分頻),故使用 USB 時 PLL 必須輸出 48/72 MHz。
  • RTC:可選 LSE、LSI、HSE/128。
  • IWDG:強制使用 LSI。
  • MCO (PA8):可輸出 PLL/2、HSI、HSE、SYSCLK 用於外部測量。

外設掛載總線分佈

配置實戰核心步驟

  1. 使能 HSE 並等待就緒(或直接用 HSI)。
  2. 配置 PLL:選擇輸入源(HSE/HSE/2/HSI/2)、設置倍頻因子(確保輸出≤72 MHz)。
  3. 設置 AHB/APB1/APB2 分頻係數(注意 APB1≤36 MHz、APB2≤72 MHz)。
  4. 切換 SYSCLK 至 PLL 並等待鎖定。
  5. 使能目標外設時鐘(RCC_APBxPeriphClockCmd),否則外設寄存器不可訪問。

定時器倍頻特殊規則

Timer 專用倍頻器(APB1 為 Timer2/3/4,APB2 為 Timer1)遵循:

  • 若對應 APB 分頻係數為 1 → 倍頻 = 1(即 Timer 時鐘 = PCLK)
  • 若 APB 分頻係數 > 1 → 倍頻 = 2(即 Timer 時鐘 = 2 × PCLK)

此設計保證 Timer 時鐘盡可能接近 HCLK,獲得更高分辨率。

常見配置錯誤

  • PLL 輸出超過 72 MHz 導致系統不穩或跑飛。
  • APB1 分頻設置不當導致 PCLK1 > 36 MHz,外設工作異常。
  • 忘記使能外設時鐘(如 GPIO、DMA、ADC)導致寄存器讀寫無效。
  • USB 使用時未配置 PLL 輸出 48/72 MHz,導致枚舉失敗。
Copyright © Windows教程網 All Rights Reserved
總線最大頻率典型外設
APB1 (低速)36 MHz電源、備份、CAN、USB、I2C1/2、UART2/3、SPI2、WWDG、Timer2/3/4
APB2 (高速)72 MHzUART1、SPI1、Timer1、ADC1/2、所有 GPIO (PA–PE)、AFIO