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)。