【STM32】什么在使能寄存器或外設之前必須先打開時鐘?

這篇文章解釋一個非常基礎但是重要的問題:

為什么在使能寄存器或外設之前必須先打開時鐘?

我們會發現,如果不開時鐘就訪問寄存器 ? 會“寫不進去”或“讀取錯誤”。 因此,我們在寫代碼時,總是需要 先開時鐘,再配置寄存器。 因為外設的寄存器和功能依附于該外設的時鐘,未給外設開時鐘,訪問它的寄存器就是訪問 “虛空”

原因一:STM32 采用總線分頻 + 外設時鐘門控機制

STM32 的整個芯片系統是按照模塊劃分的,每個模塊(GPIO、ADC、DAC、USART、TIM等)都掛載在不同的總線上(如 APB1、APB2、AHB 等)。為了節能和提升效率,STM32 默認關閉大多數外設的時鐘

原因二:外設寄存器依賴其時鐘供電

外設模塊的寄存器(如 GPIOx->CRLADC1->SRDAC->CR 等)屬于模塊內部電路的一部分,如果該模塊沒有時鐘供電:

  • 寄存器不可訪問或訪問無效
  • 配置內容無法寫入或無響應
  • 寫入后不生效
  • 有可能引發不可預測行為(如鎖死)
舉個例子
//? 錯誤:先配置 GPIO,但未使能時鐘
GPIO_InitTypeDef gpio;
gpio.GPIO_Pin = GPIO_Pin_0;
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &gpio); // [未開時鐘,配置無效!]
? 正確流程:先使能 GPIOA 時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 開PA端口時鐘
GPIO_Init(GPIOA, &gpio);

STM32 時鐘控制機制圖示

		┌───────────────────────────────────┐ RCC(時鐘控制器)                └───────────────────────────────────┘┌────────────────────┐ APB2 總線          │──→ 控制 GPIO、ADC、TIM1、USART1 等外設└────────────────────┘┌────────────────────┐ GPIOA 模塊         └────────────────────┘          [RCC 控制信號]  決定是否給 GPIOA 模塊供時鐘

外設的寄存器屬于該模塊本身的一部分,而模塊只有在獲得時鐘供電之后,內部邏輯電路才會被“點亮”,寄存器才會真正“存在”于系統中。

常見外設時鐘開啟方式(標準庫)
外設時鐘函數
GPIOA~GPIOGRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE);
ADC1~3RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADCx, ENABLE);
DACRCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
USART1RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
USART2~5RCC_APB1PeriphClockCmd(RCC_APB1Periph_USARTx, ENABLE);

以上,歡迎有從事同行業的電子信息工程、互聯網通信、嵌入式開發的朋友共同探討與提問,我可以提供實戰演示或模板庫。希望內容能夠對你產生幫助!

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

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

相關文章

Go·并發處理http請求實現

一、Goroutine介紹 基本原理 goroutine 是 Go 運行時(Runtime)管理的??用戶態線程。與線程相比,其初始棧空間僅約 2KB,創建和切換的開銷更低,能夠同時運行大量并發任務。 創建goroutine的方法非常簡單,在將要調用的函數前加入go關鍵字即可。 func hello() {fmt.Pri…

USB一線連多屏?Display Link技術深度解析

DisplayLink 技術是一種基于USB接口的顯示輸出解決方案,通常用于通過USB端口連接多個顯示器,尤其在筆記本電腦、平板電腦和臺式機上,能夠顯著擴展顯示屏的數量和分辨率。它的核心技術原理是通過壓縮和傳輸圖形數據,將視頻信號通過…

AI 臨床醫學課題【總結】

最近參與了幾個臨床醫學課題,總結一下如何跨界結合 1: 確定研究的方向: 這個是決定文章的核心 研究方向的時候,就要確定要投的期刊,平時看論文的時候要把一些常用的術語記錄下來, 投的期刊,研究內容,方法記錄一下。 2: 研究團隊團隊搭建(負責人:負責讀論文,研究點…

PostgreSQL HOT (Heap Only Tuple) 更新機制詳解

PostgreSQL HOT (Heap Only Tuple) 更新機制詳解在PostgreSQL中,為了提高更新操作的性能并減少存儲空間的浪費,引入了一種稱為HOT (Heap Only Tuple) 的優化技術。HOT更新允許在相同的數據頁內進行行的更新操作,而不需要創建一個新的物理行版…

macos安裝iper3

brew install iperf3Running brew update --auto-update...安裝homebrew,長久沒用使用更新失效了。只好重新安裝 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"破案了 原來是需要海外網了。。。。 b…

【設計模式】策略模式(政策(Policy)模式)

策略模式(Strategy Pattern)詳解一、策略模式簡介 策略模式(Strategy Pattern) 是一種 行為型設計模式(對象行為型模式),它定義了一系列算法,并將每一個算法封裝起來,使它…

用TensorFlow進行邏輯回歸(二)

邏輯回歸的例子 邏輯回歸是經典的分類算法。為了簡單,我們考慮二分類。這意味著,我們要處理識別二個分類的問題,我們的標簽為 0 或 1。 我們要一個與線性回歸不同的激活函數,不同的損失函數,神經元的輸出略有不同。我們…

Java設計模式之行為型模式(命令模式)介紹與說明

一、核心定義與目標 命令模式通過對象化請求,將操作的具體實現細節隱藏在命令對象中,使得調用者(Invoker)無需直接與接收者(Receiver)交互,僅需通過命令對象間接調用。這種解耦設計支持以下功能…

【深度學習新浪潮】xAI新發布的Grok4有什么看點?

Grok4作為馬斯克旗下xAI公司最新發布的旗艦AI模型,其核心看點和評測要點可總結如下: 一、Grok4的核心看點 學術推理能力全面超越人類博士水平 在「人類終極考試」(HLE)中,Grok4基礎版正確率達25.4%,啟用工具后飆升至44.4%,遠超Gemini 2.5 Pro(21.6%)和OpenAI o3(20.…

觀成科技:基于自監督學習技術的惡意加密流量檢測方案

1.前言當前,隨著加密協議技術的廣泛應用,互聯網用戶的個人流量隱私得到了有效保護,但與此同時也衍生出一系列安全問題。由于加密流量在傳輸過程中無法被解密,導致傳輸信息呈現“黑盒化”特征,這為惡意攻擊者利用加密流…

通用定時器GPT

目錄 GPT核心特性 GPT 計數器操作模式 重啟模式 自由運行模式 GPT時鐘源 GPT框圖 輸入捕獲:測量外部信號的高電平脈沖寬度 輸出比較:生成 1kHz PWM 波 GPT模塊外部引腳復用與功能映射表 GPT使用注意事項 GPT Memory Map GPT寄存器 GPTx_CR寄存…

#oda0095. 字符串通配符【B卷 100分】-字符串

題目描述問題描述:在計算機中,通配符一種特殊語法,廣泛應用于文件搜索、數據庫、正則表達式等領域。現要求各位實現字符串通配符的算法。要求:實現如下2個通配符:* :匹配0個或以上的字符(注&…

面向對象設計原則

面向對象:是一種編程思想,面向過程是關注實現的步驟,每個步驟定義一個函數,調用函數執行即可。面向對象關注的是誰來執行,把具有相同屬性和行為的一類事物進行抽象成類,然后再通過實例化出一個個具體的對象…

Hyperledger Fabric深入解讀:企業級區塊鏈的架構、應用與未來

一、引言:企業級區塊鏈的標桿Hyperledger Fabric是Linux基金會主導的開源項目,專為企業級應用設計,以模塊化架構、許可鏈機制和隱私保護為核心,廣泛應用于金融、供應鏈、醫療等領域。相較于公有鏈(如以太坊&#xff09…

從0開始學習R語言--Day45--Hausman檢驗

當我們在探究數據本身是否和變量相關時,往往都會對這兩者進行回歸分析,控制一下變量來看看趨勢走向。但其實在分析前,我們可以先嘗試做Hausman檢驗,這可以幫助我們判斷數據的變化到底是因為變量不一樣了還是因為自己的個體效應所以…

閑庭信步使用圖像驗證平臺加速FPGA的開發:第九課——圖像插值的FPGA實現

(本系列只需要modelsim即可完成數字圖像的處理,每個工程都搭建了全自動化的仿真環境,只需要雙擊top_tb.bat文件就可以完成整個的仿真,大大降低了初學者的門檻!!!!如需要該系列的工程…

Android事件分發機制完整總結

一、核心概念事件分發的本質Android事件分發采用責任鏈模式,事件從Activity開始,依次經過ViewGroup和View。整個機制只有一個入口:dispatchTouchEvent方法。onInterceptTouchEvent和onTouchEvent都不是獨立的事件入口,而是被dispa…

【論文閱讀】AdaReasoner: Adaptive Reasoning Enables More Flexible Thinking

AdaReasoner: Adaptive Reasoning Enables More Flexible Thinking3. AdaReasoner3.1 動機3.2 問題定義3.3 動作選擇過程3.3.1 動作空間定義3.3.2 動作選擇3.4 探索策略3.5 強化學習訓練3.5.1 訓練算法3.5.2 目標函數3.5.3 損失函數AdaReasoner: Adaptive Reasoning Enables Mo…

深入了解Modbus TCP:工業通信的“通用語言”

目錄 簡介一、Modbus TCP的“前世今生”二、Modbus TCP的核心特點三、Modbus TCP的工作原理1. 報文結構2. 功能碼四、Modbus TCP的應用場景五、使用Modbus TCP的注意事項六、總結簡介 在工業自動化的世界里,不同設備之間的“對話”至關重要。從PLC(可編程邏輯控制器)到傳感…

基于Selenium和FFmpeg的全平臺短視頻自動化發布系統

一、項目背景與概述在當今短視頻營銷盛行的時代,許多企業和個人需要同時管理多個短視頻平臺賬號。手動上傳視頻到抖音、快手、小紅書等平臺不僅效率低下,而且容易出錯。本文將介紹一個基于Python的自動化短視頻處理與發布系統,它能夠&#xf…