STM32的時鐘系統與時鐘樹的配置

STM32的時鐘系統是其微控制器(MCU)的核心組成部分,負責為CPU、外設和存儲器等模塊提供精確的時序信號。其設計靈活且復雜,通過多級時鐘樹(Clock Tree)實現時鐘源的選擇、分頻和分配。以下是詳細介紹:

一、STM32時鐘系統的核心概念

  1. 時鐘源(Clock Source)
    STM32提供多種時鐘源,通常包括:
    • HSI(High-Speed Internal Oscillator):內部高速RC振蕩器,頻率通常為8MHz(部分型號為16MHz),啟動快但精度低(±1%~2%)。
    • HSE(High-Speed External Oscillator):外部高速晶振,頻率范圍廣(4~26MHz,部分型號支持更高),精度高(±0.1%~0.01%)。
    • LSI(Low-Speed Internal Oscillator):內部低速RC振蕩器,頻率約32kHz,用于獨立看門狗(IWDG)或RTC備用時鐘。
    • LSE(Low-Speed External Oscillator):外部低速晶振,頻率通常為32.768kHz,專為RTC(實時時鐘)設計,精度高。
    • PLL(Phase-Locked Loop):鎖相環,可將輸入時鐘倍頻(如將HSE的8MHz倍頻至72MHz),提供更高頻率的主時鐘。
  2. 時鐘樹(Clock Tree)
    STM32的時鐘信號通過多級分頻和選擇器分配到不同模塊,形成樹狀結構。時鐘樹的主要功能包括:
    • 時鐘源選擇:通過寄存器配置選擇HSI、HSE或PLL作為系統時鐘。
    • 分頻控制:對時鐘信號進行預分頻(Prescaler),以適應不同外設的頻率需求。
    • 時鐘分配:將分頻后的時鐘分配到CPU、APB總線、外設等模塊。

二、STM32時鐘樹的關鍵路徑

以STM32F1系列為例,時鐘樹的主要路徑如下:

  1. 系統時鐘(SYSCLK)
    • 來源:HSI、HSE或PLL。
    • 作用:為CPU核心、AHB總線(高速總線)和內存提供時鐘。
    • 配置:通過RCC_CFGR寄存器的SW位選擇時鐘源。
  2. AHB總線時鐘(HCLK)
    • 來源:SYSCLK經過AHB預分頻器(AHB Prescaler)分頻。
    • 作用:驅動AHB總線上的外設(如DMA、GPIO)和APB預分頻器。
    • 分頻系數:通過RCC_CFGR寄存器的HPRE位配置(1~512分頻)。
  3. APB總線時鐘(PCLK1/PCLK2)
    • 來源:HCLK經過APB預分頻器分頻。
    • 作用
      • PCLK1:驅動低速外設(如USART2、TIM2~TIM7)。
      • PCLK2:驅動高速外設(如USART1、TIM1、ADC)。
    • 分頻系數:通過RCC_CFGR寄存器的PPRE1PPRE2位配置(1~16分頻)。
  4. 外設時鐘
    • 每個外設通過獨立的時鐘使能位(如RCC_APB2ENR中的USART1EN)控制是否啟用時鐘。
    • 外設實際工作頻率可能經過二次分頻(如USART的波特率分頻)。
  5. PLL時鐘
    • 輸入源:HSI/2或HSE(可配置是否經過分頻)。
    • 倍頻系數:通過RCC_CFGR寄存器的PLLMUL位配置(2~16倍頻)。
    • 輸出:PLLCLK可作為SYSCLK或USB、RTC等專用時鐘源。

三、先把“時鐘”想象成“城市供水系統”

  • 水源(振蕩器) → 水庫/水井

  • 水管網(時鐘樹) → 主管→支管→入戶

  • 水表(預分頻器) → 控制每戶水壓

  • 用水設備(CPU、外設) → 廚房、浴室、花園……

STM32 的時鐘樹就是一套多級“供水系統”:
先選水源 → 經過開關/閥門(Mux) → 加壓站(PLL) → 各級減壓閥(Prescaler) → 最終送到每家每戶。


四、圖片里出現的“水源”逐個講解

名字頻率類型作用比喻
HSI RC8 MHz內部 RC 振蕩器上電默認水源,省晶振自家院子里的手壓井
HSE4-16 MHz(常用 8 MHz)外部晶振/時鐘精度高,可倍頻到 72 MHz城市自來水廠
LSI RC40 kHz低速內部 RC獨立看門狗 IWDG、RTC 低功耗計時備用小水桶
LSE32.768 kHz32.768 kHz 外部晶振RTC 精準日歷時鐘標準石英鐘
PLLCLK≤72 MHzPLL 倍頻輸出把 HSI/HSE 放大,給 CPU 和高速外設加壓泵站

五、時鐘樹的流向(對照圖片箭頭)

  1. SYSCLK(總水源)
    HSI / HSE / PLLCLK 三選一決定,最大 72 MHz。
    圖中“SYSCLK (MHz)”就是最終給 CPU 喝的“主水管”。

  2. HCLK(主管道)
    SYSCLK → AHB Prescaler(1、2、4…512 分頻)→ HCLK
    給 AHB 總線、CPU 核心、內存、DMA 使用。
    圖中“HCLK (MHz)”就是這條主管的水壓。

  3. PCLK1 / PCLK2(兩條支管)

    • HCLK → APB1 PrescalerPCLK1(≤36 MHz)
      掛在 APB1 的外設:USART2/3、I2C1/2、SPI2、TIM2~4…

    • HCLK → APB2 PrescalerPCLK2(≤72 MHz)
      掛在 APB2 的外設:GPIO、USART1、SPI1、TIM1、ADC1/2…
      圖中 APB1、APB2 后面分別標注了“8 MHz、72 MHz max”。

  4. 專用小水管

    • ADC 時鐘:PCLK2 → ADC Prescaler(2/4/6/8)→ 4~18 MHz

    • USB 時鐘:PLL 直接 48 MHz 分支(圖上 USB (MHz) 48)

    • RTC 時鐘:LSE(32.768 kHz) / LSI(40 kHz) / HSE/128 三選一,圖上“RTC Clock Mux”

    • 獨立看門狗 IWDG:固定 LSI 40 kHz

    • SysTick:可以走 HCLK 或 HCLK/8,給操作系統節拍用。


六、把數字換成“水壓值”(一個常見配置舉例)

節點實際計算結果
HSE8 MHz 晶振8 MHz
PLL8 MHz × 972 MHz
SYSCLK選 PLL72 MHz
HCLKAHB 不分頻72 MHz
PCLK172 / 236 MHz(APB1 最大)
PCLK272 / 172 MHz(APB2 最大)
ADC72 / 612 MHz
USBPLL / 1.548 MHz(固定)
RTC選 LSE32.768 kHz

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96009.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96009.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96009.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NV 工具metrics分析(ncu, nsys/torch profiler)

以下分析都以A100硬件架構為例; Theoretical Max Active Warps per SM: 64 Register number: 512 (規定每個thread不能超過256) Theoretical Active Warps per SM [warp]:512//registers_per_thread*4, which defines theoretical active warp occupancy Waves P…

[CISCN2019 總決賽 Day2 Web1]Easyweb

登錄界面可以看到隨機切換的圖片。從頁面源碼中可以看到<div class"avtar"><img src"image.php?id3" width"200" height"200"/></div>&#xff0c;圖片文件的請求地址&#xff0c;并且有傳參id。web應用中像這種動…

第 3 講:KAFKA生產者(Producer)詳解

這是一篇既照顧入門也能給高級工程師提供落地經驗的實戰筆記。0. TL;DR&#xff08;先上結論&#xff09; 想穩&#xff1a;acksall 合理 retries&#xff1b;需要“分區內不重不丟”→ 再加 enable.idempotencetrue 且 max.in.flight<5。想快&#xff1a;適度增大 batch.s…

微信小程序截屏與錄屏功能詳解

微信小程序提供了豐富的API支持截屏和錄屏功能&#xff0c;適用于多種場景&#xff0c;如教育類應用的課程錄制、游戲類應用的精彩瞬間分享、電商類應用的商品展示等。以下將詳細介紹實現方法和應用案例。 截屏功能實現 截屏功能通過調用wx.canvasToTempFilePath或wx.captureSc…

React 中的 HOC 和 Hooks

寫在前面 在函數式組件主導的 React 項目中&#xff0c;高階組件&#xff08;HOC&#xff09;并非首選推薦&#xff0c;更建議優先使用 Hooks來實現復用邏輯。核心原因是 HOC 存在固有的設計缺陷&#xff0c;而 Hooks 能更優雅、簡潔地解決相同問題&#xff0c;同時避免 HOC 的…

【 蒼穹外賣 | Day2】

1. 相關視頻 Day2的全部視頻集數 2. 學習記錄 2.1 對象屬性拷貝 當DTO與實體類或者VO對象之間的一個裝換的時候&#xff0c;如果通過new創建對象&#xff0c;然后調用set方法進行屬性賦值&#xff0c;不夠方便&#xff0c;代碼不夠簡潔。當屬性過多時候&#xff0c;代碼就會…

焊接自動化測試平臺圖像處理分析-模型訓練推理

1、使用技術棧&#xff1a;jdk17/springboot/python/opencv/yolov8 2、JAVA環境搭建 JDK17下載安裝&#xff1a;wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 解壓軟件 tar -xf jdk-17.0.16_linux-x64_bin.tar.gz 配置全局變量 vim /etc/p…

【python實用小腳本-205】[HR揭秘]手工黨逐行查Bug的終結者|Python版代碼質量“CT機”加速器(建議收藏)

1. 場景故事 “作為HR&#xff0c;我曾用2小時逐行審閱50份Python簡歷項目&#xff0c;直到發現候選人的代碼復雜度超標導致線上事故…” → 轉折點&#xff1a;用麥凱布&#xff08;McCabe&#xff09;圈復雜度檢測腳本&#xff0c;30秒掃描全倉庫&#xff0c;現可100%攔截“高…

LeetCode - 1089. 復寫零

題目 1089. 復寫零 - 力扣&#xff08;LeetCode&#xff09; 思路 這道題我首先想到的是從前往后雙指針&#xff0c;但是這樣做會造成數據的覆蓋&#xff0c;比如說下面的這個情況 所以解決的方法就是從后往前去復寫&#xff0c;但是從后往前的話就要知道最后一個有效元素是…

c#中public類比博圖

簡單來說&#xff0c;**public 定義了“接口”或“引腳”**&#xff0c;就像你的FB塊上的 Input, Output, InOut 管腳一樣。它決定了外部的其他代碼&#xff08;如另一個FB或OB1&#xff09;可以看到和操作這個塊里的什么東西。讓我用你最熟悉的博圖概念來詳細類比一下。---###…

K8s基于節點軟親和的高 CPU Pod 擴容與優先調度方案

場景與目標 集群節點&#xff1a;master&#xff08;4 核&#xff09;、node1&#xff08;16 核&#xff09;、node2&#xff08;16 核&#xff09;。目標&#xff1a;將一個高 CPU 消耗的工作負載橫向擴展到 4 個實例&#xff0c;并通過**節點親和性&#xff08;軟親和&#…

MySQL InnoDB 的鎖機制

引言 鎖是數據庫管理并發訪問的另一種核心機制&#xff0c;與 MVCC 相輔相成。本文將系統梳理 MySQL InnoDB 中鎖的粒度、類型和工作原理&#xff0c;并深入探討它如何與事務隔離級別配合&#xff0c;共同保障數據的一致性和完整性。 一、 鎖的粒度&#xff1a;由粗到細 InnoD…

狀態模式(State Pattern)——網絡連接場景的 C++ 實戰

一、為什么要用狀態模式&#xff1f;在開發中&#xff0c;經常遇到“對象在不同狀態下行為不同”的情況。最常見的寫法是用一堆 if/else 或 switch 來判斷狀態&#xff0c;然后在不同分支里寫邏輯。這樣做有兩個問題&#xff1a;狀態增多后&#xff0c;條件分支會變得臃腫。修改…

使用csi-driver-nfs實現K8S動態供給

文章目錄一、部署NFS二、k8s環境部署csi-nfs三、測試動態供給補充應用服務器IPnfs-server192.168.1.5k8s-master01192.168.1.1k8s-node01192.168.1.2k8s-node02192.168.1.3 一、部署NFS 1、在NFS服務端和k8s所有節點部署nfs-utils 因為客戶端去掛載nfs服務端的共享目錄時&…

【開題答辯全過程】以 基于ssm的房屋中介管理系統為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人&#xff0c;語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

MySQL主從復制之進階延時同步、GTID復制、半同步復制完整實驗流程

1.主從同步1.1主從同步原理是指將主庫的DDL和DML操作通過二進制日志(binlog)傳到從庫服務器&#xff0c;然后在從庫上對這些日志進行重新執行&#xff0c;從而使從庫和主庫數據保持一致1.2環境設置庫名ip地址操作系統mysql版本主庫msyql-master192.168.31.228rhel7.9源碼安裝my…

織信低代碼:用更聰明的方式,把想法變成現實!

你有沒有過這樣的時刻&#xff1f;想親手做一個應用&#xff0c;卻因為“不會編碼”而遲遲沒有開始&#xff1b;或曾無奈地目睹公司里一個看似簡單的需求&#xff0c;硬是耗費數月、投入大量人力反復開發……現在&#xff0c;有一類工具正在改變這一切。它叫低代碼。而今天我們…

【序列晉升】28 云原生時代的消息驅動架構 Spring Cloud Stream的未來可能性

目錄 一、Spring Cloud Stream是什么&#xff1f; 二、誕生背景與設計動機 2.1 微服務架構的挑戰 2.2 Spring生態的發展 2.3 Spring Integration的演進 三、架構設計與核心組件 3.1 分層架構設計 3.2 核心組件詳解 3.3 編程模型 四、解決的問題與優勢 4.1 解決的核心…

內網后滲透攻擊--linux系統(權限維持)

用途限制聲明&#xff0c;本文僅用于網絡安全技術研究、教育與知識分享。文中涉及的滲透測試方法與工具&#xff0c;嚴禁用于未經授權的網絡攻擊、數據竊取或任何違法活動。任何因不當使用本文內容導致的法律后果&#xff0c;作者及發布平臺不承擔任何責任。滲透測試涉及復雜技…

C++筆記之同步信號量、互斥信號量與PV操作再探(含軟考題目)

C++筆記之同步信號量、互斥信號量與PV操作再探(含軟考題目) code review! 參考筆記: 1.C++筆記之同步信號量、互斥信號量與PV操作再探(含軟考題目) 2.C++筆記之信號量、互斥量與PV操作 參考鏈接 1.嵌入式基礎知識-信號量,PV原語與前趨圖 2.信號量、PV操作及軟考高級試題解析…