嵌入式系統中mcu寄存器分類劃分

目錄

      • 一、 按行為特性分類
      • 二、 按功能角色分類(更宏觀的角度)
      • 總結與注意事項

在32位單片機(尤其是基于ARM Cortex-M系列內核的)中,寄存器的種類可以按照其“行為模式”和“功能”來進行分類。

以下是32位單片機(以ARM Cortex-M為例)中常見的寄存器種類。

一、 按行為特性分類

這正是嵌入式編程中最關鍵的概念,決定了軟件如何與硬件交互。

  1. 狀態寄存器 (Status Register) - SR

    • 行為硬件置位,軟件清零
    • 描述:用于反映外設或內核的當前狀態。軟件通常只能讀取其值,或通過向特定位寫1來清除(復位)該標志位,寫0無效。這是最常見的類型。
    • 示例
      • USART狀態寄存器 (USART_SR) 中的 TXE (發送寄存器空)、RXNE (接收寄存器非空)、ORE (溢出錯誤) 等標志。
      • 定時器狀態寄存器 (TIMx_SR) 中的 UIF (更新中斷標志)、CC1IF (捕獲/比較1中斷標志)。
      • GPIO輸入數據寄存器 (IDR):可視為一種狀態寄存器,反映引腳當前電平,軟件只能讀。
  2. 控制寄存器 (Control Register) - CR

    • 行為軟件讀寫
    • 描述:用于配置外設或內核的工作模式、使能功能等。軟件可以隨時讀寫,硬件通常只讀取其配置并據此工作,一般不會修改它的值(除非極特殊情況,如休眠時硬件自動清除某些使能位)。
    • 示例
      • USART控制寄存器1 (USART_CR1) 中的 UE (USART使能)、TE (發送使能)、RE (接收使能)。
      • 定時器控制寄存器1 (TIMx_CR1) 中的 CEN (計數器使能)。
  3. 數據寄存器 (Data Register) - DR

    • 行為軟件寫入/硬件讀出硬件寫入/軟件讀出
    • 描述:作為數據交換的緩沖區。
    • 示例
      • USART數據寄存器 (USART_DR):軟件向它寫數據,USART外設會自動讀取并發送;USART接收到的數據也會自動放入該寄存器,軟件讀取它。
      • ADC數據寄存器 (ADC_DR):硬件(ADC模塊)完成轉換后,將結果數據寫入該寄存器,軟件再從中讀取。
  4. 動作觸發器 (Action Trigger) / 命令寄存器 (Command Register)

    • 行為軟件置位,硬件自動復位
    • 描述:您對這個的描述非常到位!軟件向某位寫1會觸發一個特定的硬件動作(如開始轉換、清除某種狀態),一旦硬件識別到這個命令并開始執行,該位會自動清零。這可以避免軟件需要先寫1再寫0來清除的麻煩。
    • 示例
      • ADC控制寄存器 (ADC_CR2) 中的 SWSTART 位 (軟件啟動常規轉換):寫1啟動轉換,轉換開始后硬件自動將其清零。
      • Flash控制寄存器 (FLASH_CR) 中的 STRT 位 (開始擦除):寫1開始擦除,操作開始后硬件清零。

二、 按功能角色分類(更宏觀的角度)

在芯片手冊中,寄存器通常按所屬外設模塊和功能來組織。

  1. 內核寄存器 (Core Registers)

    • 存在于CPU內核中,由ARM架構定義。
    • 通用寄存器 (R0-R12):用于數據處理。
    • 棧指針寄存器 (SP/R13):指向當前棧頂。
    • 鏈接寄存器 (LR/R14):存儲函數返回地址。
    • 程序計數器 (PC/R15):指向下一條要執行的指令。
    • 程序狀態寄存器 (xPSR):包含ALU標志(N, Z, C, V)、中斷狀態等。
    • 中斷/異常屏蔽寄存器 (PRIMASK, FAULTMASK, BASEPRI):控制中斷的使能。
    • 控制寄存器 (CONTROL):控制處理器模式(線程/Handler)和棧指針選擇(MSP/PSP)。
  2. 外設寄存器 (Peripheral Registers)

    • 掛載在系統總線上,用于控制所有片內外設。
    • 控制寄存器 (CRx):配置工作模式,如定時器的計數模式、PWM模式。
    • 數據寄存器 (DRx):輸入輸出數據,如GPIO輸出、ADC結果、SPI/I2C數據。
    • 狀態寄存器 (SR):查看外設狀態,如數據是否就緒、是否發生錯誤。
    • 中斷寄存器
      • 中斷使能寄存器 (IER / IMR)軟件設置,控制允許哪些中斷源產生請求。
      • 中斷標志寄存器 (IFR / ISR / SR中的標志位)硬件置位,當中斷事件發生時置位。軟件通過寫1或特定值來清除
      • 中斷優先級寄存器 (IPR)軟件設置,配置每個中斷源的優先級。
    • DMA寄存器:配置DMA傳輸的源地址、目標地址、數據量等。
  3. 系統控制寄存器 (System Control Registers)

    • 控制芯片的整體行為。
    • 時鐘控制寄存器 (RCC)軟件設置,配置系統時鐘源、PLL、各外設時鐘的使能等。這是單片機初始化的核心。
    • 電源控制寄存器 (PWR)軟件設置,控制睡眠、停機、待機等低功耗模式。
    • 系統配置控制器 (SYSCFG)軟件設置,配置引腳重映射、中斷線分配等。

總結與注意事項

寄存器類型主要操作者常見行為示例
狀態寄存器 (SR)硬件硬件置位,軟件清零USART_SR, TIMx_SR
控制寄存器 (CR)軟件軟件讀寫,硬件只讀USART_CR1, TIMx_CR1
數據寄存器 (DR)軟件/硬件數據雙向流通USART_DR, ADC_DR
命令寄存器軟件觸發軟件寫1,硬件執行后自動清零ADC_CR2.SWSTART
中斷使能寄存器軟件軟件讀寫USART_CR1.RXNEIE
中斷標志寄存器硬件硬件置位,軟件清零EXTI->PR, USART_SR.RXNE

重要提示

  • “寫1清零” (Write-1-to-clear):在清除狀態或中斷標志時,絕大多數寄存器采用這種機制。這是為了安全,避免軟件誤操作覆蓋其他位。
  • “讀-修改-寫” (Read-Modify-Write):在修改控制寄存器某一位而不影響其他位時,必須采用此操作。即先讀取整個寄存器,用邏輯運算(&|)修改目標位,再寫回整個寄存器。現代的芯片庫函數(如HAL/LL庫)已經幫我們處理了這些細節。

理解這些寄存器的行為差異,是編寫穩定、高效嵌入式程序的基礎。

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

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

相關文章

Redis如何高效安全的遍歷所有key?

大家好,我是鋒哥。今天分享關于【Redis如何高效安全的遍歷所有key?】面試題。希望對大家有幫助; Redis如何高效安全的遍歷所有key? 超硬核AI學習資料,現在永久免費了! 在 Redis 中,遍歷所有的 key 是一個相對昂貴的…

網易云音樂歌曲導出緩存為原始音樂文件。低調,低調。。。

最近買了個榭蘭圖耳機頭,拿到手第一件事當然是煲機了。弄個舊手機做24小時煲機但是不想再裝多一個網易云音樂,省得一號多登錄會問題。對于軟工男最先想到的肯定是在本地直接播放音樂了,正好自己 有淘寶88VIP聯合會員,于是琢磨著怎…

從Android到鴻蒙:一場本應無縫的轉型-優雅草卓伊凡

從Android到鴻蒙:一場本應無縫的轉型-優雅草卓伊凡看到Android開發者詢問如何轉向鴻蒙,卓伊凡不禁搖頭:真正的Android工程師根本不需要“學習”鴻蒙,只需要簡單查閱文檔即可。近年來,隨著鴻蒙系統的不斷發展&#xff0…

HTML————更實用于后端寶寶們學習的前端

博主主攻后端,但是畢竟要做網站,我們來學習一點前端的知識,一共有三節,學完就能做一點小小的頁面啦;1.1 HTML基礎什么是HTML呢,他是超文本標記語言,還記得HTTP是啥不,HTTP是超文本傳…

Vue.js 核心機制深度學習筆記

Vue核心機制深度學習筆記 概述 本文檔整理自一次深入的 Vue.js 技術討論,涵蓋了響應式系統原理、虛擬 DOM 工作機制、更新策略等核心概念。通過問答形式,旨在幫助開發者徹底理解 Vue.js 的內部運行機制。 目錄 SPA 應用與虛擬 DOM虛擬 DOM 生成與 Di…

通義千問VL-Plus:當AI“看懂”屏幕,軟件測試的OCR時代正式終結!

—— 一位測試老兵的實戰手記:如何用多模態大模型讓Bug無處遁形 深夜11點,某電商App緊急上線前 測試工程師小王盯著第37次失敗的自動化腳本崩潰截圖: “Network Error: Conn3ct1on t1m30ut” 傳統OCR把“timeout”識別成“t1m30ut”&#xff…

Notepad++換行符替換

使用 Postman 測試接口時,有時候會遇到需要發送一篇文章,但是我們需要收到將文章的換行符換成 \n,我們可以通過 Notepad 實現快速替換。 首先,將文章粘貼到 Notepad 中,使用 Ctrl H 快捷鍵打開替換窗口。 查找目標&a…

前饋神經網絡總結

前饋神經網絡由三個主要部分組成:輸入層: 負責接收原始數據,通常對應于特征的維度。隱藏層: 包含一個或多個層,每層由多個神經元組成,用于提取輸入數據的抽象特征。輸出層: 產生網絡的最終預測或…

AI 自動化編程 trae1 體驗 頁面添加富編輯器

體驗總結 目前solo功能未使用過, trae 能夠準確率很高地處理簡單問題,如代碼格式化等。 對于復雜的問題,如涉及代碼組件版本和bug等問題,準確率主要依賴整個互聯網資源庫的分析, 目前準備率一般有時候還不如自己添加…

Java基礎(十四)分布式

一、CAP 理論 CAP 原則,又稱 CAP 定理,指出在分布式系統中,Consistency(一致性)、Availability(可用性)和 Partition tolerance(分區容錯性)這三個特性無法同時滿足&…

接口自動化測試(一)

接口測試1.接口的概念程序內部的接口:程序內部接口指同一程序或系統內不同模塊、組件或類之間的交互點,用于數據傳遞、功能調用或資源共享系統對外的接口:是不同系統、模塊或服務之間進行交互的邊界定義,通常通過預定義的協議、數據格式和通信方式實現。…

單片機外設(七)RTC時間獲取

文章目錄一.RTC介紹二.IMX6ull RTC介紹1.SNVS_HP (high power domain)2.SNVS_LP (low power domain)3.SNVS interrupts and alarms三. SNVS重點寄存器介紹1.SNVS_HP Command(HPCOMR)2.SNVS_HP/SNVS_LP Control register (SNVS_HPCR/SNVS_LPCR)3.SNVS_HP/SNVS_LP 狀態寄存器&…

第1篇:走進日志框架的世界 - 從HelloWorld到企業級應用

前言 在現代企業級應用開發中,日志系統扮演著至關重要的角色。無論是問題排查、性能監控,還是業務分析,都離不開完善的日志記錄。今天,我們將從零開始,手把手教你構建一個現代化的注解驅動日志框架。 為什么需要自定義…

173-基于Flask的微博輿情數據分析系統

基于Flask的微博輿情數據分析系統 - 技術實現與架構設計 本文詳細介紹了一個基于Flask框架開發的微博輿情數據分析系統,包含數據爬取、情感分析、可視化展示等完整功能模塊。 📋 目錄 項目概述技術棧系統架構目錄結構核心功能模塊代碼實現數據可視化部署…

美股期權歷史市場數據波動特性分析

標題:基于本地CSV數據的美股期權分析與應用實踐 在金融量化研究領域,本地CSV數據的高效應用是開展美股期權研究的重要基礎。本文將圍繞美股期權日級別行情數據、波動率分析及策略構建的核心流程,詳細介紹從數據預處理到實際場景落地的關鍵方…

VUE從入門到精通二:ref、reactive、computed計算屬性、watch監聽、組件之間的通信

目錄 一、ref、reactive創建響應式對象 1、ref() 2、reactive() 3、ref和reactive的區別 二、computed計算屬性 1、什么是計算屬性computed 2、計算屬性computed和函數方法的區別 3、計算屬性computed的優勢 三、watch監聽函數 1、什么是watch? 2、基本語…

構建AI智能體:十二、給詞語繪制地圖:Embedding如何構建機器的認知空間

我們理解“蘋果”這個詞,能聯想到一種水果、一個公司、或者牛頓的故事。但對計算機而言,“蘋果”最初只是一個冰冷的符號或一串二進制代碼。傳統的“One-Hot”編碼方式(如“蘋果”是[1,0,0,...],“香蕉”是是[0,1,0,...]&#xff…

突擊復習清單(高頻核心考點)

🔒 鎖的作用與使用(synchronized vs ReentrantLock) 面試官為什么問:考察你對并發編程基礎的掌握程度。 速記答案: 作用:保證線程安全,解決多線程環境下對共享資源訪問的數據不一致問題。 synch…

2025年視頻大模型匯總、各自優勢及視頻大模型競爭焦點

文章目錄一、國際主流視頻大模型1. OpenAI Sora Turbo2. Google Veo 33. Runway Gen-3 Alpha二、國內主流視頻大模型1. 快手可靈AI2. 愛詩科技PixVerse V33. 阿里巴巴通義萬相2.14. 生數科技Vidu Q15. 字節跳動即夢AI三、核心趨勢與競爭焦點一、國際主流視頻大模型 1. OpenAI …