SYSCFG(System Configuration Controller)寄存器映射的詳細說明,以 STM32(如 F1/F4/F7 系列)為例。SYSCFG 控制器用于系統級配置,如外部中斷映射、存儲器重映射等。
SYSCFG 寄存器映射概述
基地址:0x4001 3800
(適用于 STM32F4/F7,其他系列請查閱對應參考手冊)
寄存器名稱 | 偏移地址 | 功能描述 | 復位值 |
---|---|---|---|
SYSCFG_MEMRMP | 0x00 | 存儲器重映射寄存器 | 0x0000 0000 |
SYSCFG_PMC | 0x04 | 外設模式配置寄存器 | 0x0000 0000 |
SYSCFG_EXTICR[4] | 0x08-0x14 | 外部中斷配置寄存器組 | 0x0000 0000 |
SYSCFG_CMPCR | 0x20 | 補償單元控制寄存器 | 0x0000 0000 |
1. SYSCFG_MEMRMP (0x00) - 存儲器重映射寄存器
控制 Flash/SRAM/系統存儲器的映射關系。
位域 | 名稱 | 功能描述 |
---|---|---|
2:0 | MEM_MODE | 存儲器映射選擇:000 : 主 Flash 映射到 0x0000 0000001 : 系統 Flash 映射到 0x0000 0000010 : 內嵌 SRAM 映射到 0x0000 0000 |
31:3 | 保留 | 保留(寫 0) |
代碼示例:
// 將 SRAM 映射到地址 0x0000 0000(調試用)
SYSCFG->MEMRMP |= SYSCFG_MEMRMP_MEM_MODE_1; // 設置 MEM_MODE = 0b010
2. SYSCFG_PMC (0x04) - 外設模式配置寄存器
控制特定外設的復用功能。
位域 | 名稱 | 功能描述 |
---|---|---|
23 | MII_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_EXTICR1 | EXTI0-EXTI3 | [15:0] |
SYSCFG_EXTICR2 | EXTI4-EXTI7 | [15:0] |
SYSCFG_EXTICR3 | EXTI8-EXTI11 | [15:0] |
SYSCFG_EXTICR4 | EXTI12-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 補償單元(用于提高高頻下的信號完整性)。
位域 | 名稱 | 功能描述 |
---|---|---|
0 | CMP_PD | 補償單元使能:1 : 使能補償單元 |
8 | READY | 補償單元就緒標志(只讀) |
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)
關鍵應用場景
-
重映射中斷源
當需要將 EXTI 中斷從默認 GPIO 切換到其他 GPIO 時(如 PB0 替代 PA0)。 -
啟動配置
通過MEMRMP
選擇從系統存儲器啟動(用于系統引導加載程序)。 -
高速信號優化
在 >50MHz 的通信接口(如 SDIO、以太網)中使能CMPCR
補償單元。 -
外設復用
配置以太網 PHY 接口模式(MII/RMII)。
注意事項
-
寄存器訪問權限
- SYSCFG 寄存器通常無需特權訪問(非安全場景)
- 修改前確保相關外設時鐘已使能(通過 RCC_APB2ENR 的
SYSCFGEN
位)
-
復位影響
- 復位后所有 EXTI 線默認映射到 PAx 引腳
- 存儲器映射默認為主 Flash(0x0000 0000)
-
跨系列差異
- STM32F1 系列無
CMPCR
寄存器 - STM32H7 系列有額外寄存器(如 SYSCFG_UR[4])
- STM32F1 系列無
完整寄存器定義請查閱對應芯片的《參考手冊》(如 STM32F4xx Reference Manual RM0090)。