初识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 config
       uint32_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)。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值