初識SYSCFG(System Configuration Controller)寄存器映射

SYSCFG(System Configuration Controller)寄存器映射的詳細說明,以 STM32(如 F1/F4/F7 系列)為例。SYSCFG 控制器用于系統級配置,如外部中斷映射、存儲器重映射等。


SYSCFG 寄存器映射概述

基地址0x4001 3800(適用于 STM32F4/F7,其他系列請查閱對應參考手冊)

寄存器名稱偏移地址功能描述復位值
SYSCFG_MEMRMP0x00存儲器重映射寄存器0x0000 0000
SYSCFG_PMC0x04外設模式配置寄存器0x0000 0000
SYSCFG_EXTICR[4]0x08-0x14外部中斷配置寄存器組0x0000 0000
SYSCFG_CMPCR0x20補償單元控制寄存器0x0000 0000

1. SYSCFG_MEMRMP (0x00) - 存儲器重映射寄存器

控制 Flash/SRAM/系統存儲器的映射關系。

位域名稱功能描述
2:0MEM_MODE存儲器映射選擇:
000: 主 Flash 映射到 0x0000 0000
001: 系統 Flash 映射到 0x0000 0000
010: 內嵌 SRAM 映射到 0x0000 0000
31:3保留保留(寫 0)

代碼示例

// 將 SRAM 映射到地址 0x0000 0000(調試用)
SYSCFG->MEMRMP |= SYSCFG_MEMRMP_MEM_MODE_1;  // 設置 MEM_MODE = 0b010

2. SYSCFG_PMC (0x04) - 外設模式配置寄存器

控制特定外設的復用功能。

位域名稱功能描述
23MII_RMII_SEL以太網 PHY 接口選擇:
0: MII 模式
1: RMII 模式
31:24保留保留(寫 0)

代碼示例

// 配置以太網為 RMII 模式
SYSCFG->PMC |= SYSCFG_PMC_MII_RMII_SEL;

3. SYSCFG_EXTICR[4] (0x08-0x14) - 外部中斷配置寄存器組

配置 EXTI 中斷線的 GPIO 源(共 4 個寄存器,每個控制 4 個 EXTI 線)。

寄存器控制 EXTI 線位域
SYSCFG_EXTICR1EXTI0-EXTI3[15:0]
SYSCFG_EXTICR2EXTI4-EXTI7[15:0]
SYSCFG_EXTICR3EXTI8-EXTI11[15:0]
SYSCFG_EXTICR4EXTI12-EXTI15[15:0]

每個 EXTI 線占用 4 位

  • 0000: PAx 引腳
  • 0001: PBx 引腳
  • 0010: PCx 引腳
  • 0101: PFx 引腳

代碼示例

// 配置 EXTI0 使用 PA0 引腳
SYSCFG->EXTICR[0] &= ~SYSCFG_EXTICR1_EXTI0; // 清除 EXTI0 設置
SYSCFG->EXTICR[0] |=  SYSCFG_EXTICR1_EXTI0_PA; // 選擇 PA0// 配置 EXTI5 使用 PE5 引腳
SYSCFG->EXTICR[1] &= ~SYSCFG_EXTICR2_EXTI5; // 清除 EXTI5 設置
SYSCFG->EXTICR[1] |=  SYSCFG_EXTICR2_EXTI5_PE; // 選擇 PE5

4. SYSCFG_CMPCR (0x20) - 補償單元控制寄存器

控制 I/O 補償單元(用于提高高頻下的信號完整性)。

位域名稱功能描述
0CMP_PD補償單元使能:
1: 使能補償單元
8READY補償單元就緒標志(只讀)
31:9保留保留(寫 0)

代碼示例

// 使能 I/O 補償單元
SYSCFG->CMPCR |= SYSCFG_CMPCR_CMP_PD;// 等待補償單元就緒
while (!(SYSCFG->CMPCR & SYSCFG_CMPCR_READY));

完整寄存器結構體定義(CMSIS 風格)

typedef struct {__IO uint32_t MEMRMP;         // 0x00: Memory remap register__IO uint32_t PMC;            // 0x04: Peripheral mode configuration__IO uint32_t EXTICR[4];      // 0x08-0x14: External interrupt configuint32_t RESERVED[2];    // 0x18-0x1C: Reserved__IO uint32_t CMPCR;          // 0x20: Compensation cell control
} SYSCFG_TypeDef;#define SYSCFG_BASE    0x40013800U
#define SYSCFG         ((SYSCFG_TypeDef *)SYSCFG_BASE)

關鍵應用場景

  1. 重映射中斷源
    當需要將 EXTI 中斷從默認 GPIO 切換到其他 GPIO 時(如 PB0 替代 PA0)。

  2. 啟動配置
    通過 MEMRMP 選擇從系統存儲器啟動(用于系統引導加載程序)。

  3. 高速信號優化
    在 >50MHz 的通信接口(如 SDIO、以太網)中使能 CMPCR 補償單元。

  4. 外設復用
    配置以太網 PHY 接口模式(MII/RMII)。


注意事項

  1. 寄存器訪問權限

    • SYSCFG 寄存器通常無需特權訪問(非安全場景)
    • 修改前確保相關外設時鐘已使能(通過 RCC_APB2ENR 的 SYSCFGEN 位)
  2. 復位影響

    • 復位后所有 EXTI 線默認映射到 PAx 引腳
    • 存儲器映射默認為主 Flash(0x0000 0000)
  3. 跨系列差異

    • STM32F1 系列無 CMPCR 寄存器
    • STM32H7 系列有額外寄存器(如 SYSCFG_UR[4])

完整寄存器定義請查閱對應芯片的《參考手冊》(如 STM32F4xx Reference Manual RM0090)。

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

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

相關文章

《P3403 跳樓機》

題目背景DJL 為了避免成為一只咸魚,來找 srwudi 學習壓代碼的技巧。題目描述Srwudi 的家是一幢 h 層的摩天大樓。由于前來學習的蒟蒻越來越多,srwudi 改造了一個跳樓機,使得訪客可以更方便的上樓。經過改造,srwudi 的跳樓機可以采…

【GPT-OSS 全面測評】釋放推理、部署和自主掌控的 AI 新紀元

目錄 一、背景與意義 二、核心參數對比 三、性能評測(Benchmark) 四、硬件適配與優化 五、安全性與風險 六、部署方式 七、適用場景 八、大型語言模型對比表(2025 年 8 月版) 總結 一、背景與意義 💡 為什么…

醫療健康Agent:診斷輔助與患者管理的AI解決方案

醫療健康Agent:診斷輔助與患者管理的AI解決方案 🌟 Hello,我是摘星! 🌈 在彩虹般絢爛的技術棧中,我是那個永不停歇的色彩收集者。 🦋 每一個優化都是我培育的花朵,每一個特性都是我放…

python魔法屬性__doc__介紹

doc: 魔法屬性。類、函數的描述信息。 __doc__在python中類的使用方法: class Person(object):"""人類---類的描述信息""" # 只能使用多行注釋,單行注釋無效passprint(Person.__doc__)運行結果如圖所示:__d…

PostgreSQL 批量COPY導入優化參數配置

💡 場景假設我們進行的是 頻繁批量導入、對數據持久性容忍較高 的場景,比如日志表、緩存表、臨時數據表等。如果系統崩潰可重導入,那我們就可以犧牲一點寫入安全性來換極致性能。?? 參數配置推薦(postgresql.conf)參…

BeanDefinition 與 Bean 生命周期(面試高頻考點)

Bean 是 Spring 應用的核心組件,而 BeanDefinition 作為 Bean 的 “元數據描述”,貫穿了 Bean 從定義到銷毀的全生命周期。理解 BeanDefinition 的加載注冊機制,以及 Bean 的完整生命周期,是掌握 Spring 容器管理邏輯的關鍵&#…

node.js 學習筆記2 進程/線程、fs

進程和線程 進程:進行中的程序。比如有一段程序,程序已經載入內存了,CPU正在執行這段程序,這時候就會產生一個進程。進程,也可以看做程序的一次執行過程。 在window中打開任務管理器,可以查看計算機中的所…

【線性代數】其他

上一節:【線性代數】線性方程組與矩陣——(3)線性方程組解的結構 總目錄:【線性代數】目錄 文章目錄11. 向量的內積、長度及正交性12. 方陣的特征值與特征向量13. 相似矩陣14. 對稱矩陣的對角化15. 二次型及其標準形11. 向量的內積…

Spring Cloud LoadBalancer 實現自定義負載均衡策略(基于服務元數據篩選)

💡 Spring Cloud LoadBalancer 實現自定義負載均衡策略(基于服務元數據篩選) 在微服務架構中,我們常常希望對服務實例進行更精細的路由控制,例如: 灰度發布:不同環境訪問不同版本操作系統差異&a…

Javaweb(1)html、css、js

注:圖來自黑馬 一、HTML(超文本標記語言) HTML 是網頁的 “骨架”,負責定義頁面的結構和內容,通過標簽(tag)描述文本、圖片、鏈接等元素。 1. 基礎結構 文檔聲明:<!DOCTYPE html>(告訴瀏覽器這是 HTML5 文檔)。 根標簽:<html> 包裹整個文檔,包含 &l…

MQTT:Dashboard數據集成(待補充)

目錄一、工作原理二、基本使用三、連接器基本使用一、工作原理 數據集成使用sink和source組件與外部數據系統對接。 sink&#xff1a;用于將消息發送到外部數據系統&#xff0c;例如MySQL、Kafka或Http服務等。source&#xff1a;用于從外部數據系統接收消息&#xff0c;例如…

VisionMoE本地部署的創新設計:從架構演進到高效實現

本地部署VisionMoE的時代需求 在人工智能技術飛速發展的今天&#xff0c;視覺語言模型(Vision-Language Models, VLMs)已成為多模態理解的核心工具。然而&#xff0c;傳統的大型視覺語言模型主要依賴云端GPU集群進行部署和推理&#xff0c;這不僅帶來了高昂的運營成本&#xf…

機試備考筆記 8/31

2025年8月8日 小結&#xff1a;省流&#xff0c;寫了倆道巨簡單的&#xff08;被卡好久的傳參指針和指針的引用的區別&#xff09;&#xff0c;一題遞歸&#xff08;意滿&#xff09;&#xff1b;這筆記還是0809寫的&#xff0c;嘖&#xff0c;今天可能不寫了&#xff0c;明天也…

java9學習筆記-part2

進程 API在 Java 9 之前&#xff0c;Process API 仍然缺乏對使用本地進程的基本支持&#xff0c;例如獲取進程的 PID 和所有者&#xff0c;進程的開始時間&#xff0c;進程使用了多少 CPU 時間&#xff0c;多少本地進程正在運行等。Java 9 向 Process API 添加了一個名為 Proce…

AI智能編程工具匯總

AI智能編程工具匯總 以下是一份關于主流大模型開發工具的綜合介紹&#xff0c;涵蓋 Gemini CLI、Qwen-Code、Kimi K2 等關鍵工具的功能特性、安裝方式與使用建議。 &#x1f31f; Gemini CLI 開發者&#xff1a;Google DeepMind 簡介&#xff1a;命令行工具&#xff0c;用于調…

算法_python_牛客華為機試筆記_01

刷題是必須的&#xff0c;通過刷題以及別人對題目的解析&#xff0c;可以快速理解&#xff0c;提高效率。 00_題庫與參考視頻 華為機試_在線編程_牛客網 HJ3 明明的隨機數_嗶哩嗶哩_bilibili 這套華為機試是華為筆試面試機考在線練習&#xff0c;共138道題&#xff0c;目前…

Java基礎-完成局域網內溝通軟件的開發

目錄 案例要求&#xff1a; 實現思路&#xff1a; itheima-chat-server包 src com.itheima Constant類&#xff1a; Server類: ServerReaderThread類: itheima-chat-system包 src com.itheima.ui ChatEntryFrame類&#xff1a; ClientChatFrame類: ClientReaderTh…

windows內核研究(內存管理-線性地址的管理)

內存管理線性地址的管理 進程空間的地址劃分分區x86 32位Windows空指針賦值區0x00000000 - 0x0000FFFF用戶模式區0x00010000 - 0x7FFEFFFF64KB禁入區0x7FFF0000 - 0x7FFFFFFF內核0x80000000 - 0xFFFFFFFF線性地址有4GB&#xff0c;但是并不是所有的地方都能訪問&#xff08;這里…

【問題解決】使用patch-package修改node-models中的源碼

文章目錄一、應用場景二、patch-package 和 postinstallpatch-packagepostinstall三、操作步驟1、使用yarn安裝patch-package和postinstall-postinstall2、修改package.json3、修改node-model中源碼、保存。4、找到修改文件對應的包名5、使用git將新增的patches文件同步到倉庫6…

當配置項只支持傳入數字,即無法指定單位為rem,需要rem轉px

您好&#xff01;針對您 Vue 3 Element Plus 的技術棧&#xff0c;要優雅且符合大廠規范地解決這個問題&#xff0c;最佳實踐是創建一個響應式的 Composition API (組合式函數)。 這個方法完全遵循 Vue 3 的設計哲學&#xff0c;具有高內聚、低耦合、可復用、類型安全&#xf…