中断控制寄存器映射
中断寄存器的基地址为0xE000E000,所有中断控制/状态寄存器都只能在特权级下访问(除软件触发中断寄存器外),寄存器映射列表见表3-2。也可以参考cortex-m4使用手册,并推荐使用CMSIS函数来访问相关功能。
表3-2 中断寄存器映射
偏移量 | 名称 | 位宽 | 类型 | 复位值 | 描述 |
0x100-0x11C | ISER0-ISER7 | 32 | R/W | 0x00000000 | 中断使能寄存器,寄存器0为(IRQ0~IRQ31),以此类推 |
0x180-0x19C | ICER0-ICER7 | 32 | R/W | 0x00000000 | 中断清除使能寄存器,寄存器0为(IRQ0~IRQ31),以此类推 |
0x200-0x21C | ISPR0-ISPR7 | 32 | R/W | 0x00000000 | 中断挂起寄存器,寄存器0为(IRQ0~IRQ31),以此类推 |
0x280-0x29C | ICPR0-ICPR7 | 32 | R/W | 0x00000000 | 中断挂起清除寄存器寄存器0为(IRQ0~IRQ31),以此类推 |
0x300-0x31C | IABR0-IABR7 | 32 | RO | 0x00000000 | 中断活动状态寄存器寄存器0为(IRQ0~IRQ31),以此类推 |
0x400-0x4EF | IPR0-IPR59 | 32 | R/W | 0x00000000 | 中断优先级寄存器0寄存器0为(IRQ0~IRQ3),以此类推 |
0xD08 | VTOR | 32 | R/W | 0x00000000 | 向量表偏移寄存器 |
0xD0C | AIRCR | 32 | R/W | 0x00000000 | 应用中断控制寄存器 |
上表中将同类寄存器放在同一行描述,每个寄存器按4字节偏移增加,用户可自行计算出所需的寄存器地址偏移量。例如:要获取IPR2的地址,则在IPR0的基地址偏移量上增加8个字节,偏移量为0x400 + 0x8 = 0x408,则其实际地址为0xE000E408,其余寄存器偏移量计算以此类推。
中断使能寄存器(ISER)
偏移量:0x100
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
31:0 | SETENA | 0x00000000 | R/W | 中断使能控制: 1:使能中断 0:不影响 |
中断清除使能寄存器(ICER)
偏移量:0x180
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
31:0 | CLRENA | 0x00000000 | R/W | 中断清除使能控制: 1:禁止中断 0:不影响 |
中断挂起寄存器(ISPR)
偏移量:0x200
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
31:0 | SETPEND | 0x00000000 | R/W | 中断挂起控制: 1:中断挂起 0:中断未挂起 |
中断挂起清除寄存器(ICPR)
偏移量:0x280
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
31:0 | CLRPEND | 0x00000000 | R/W | 中断挂起清除控制: 1:清除挂起中断 0:不清除挂起中断 |
中断活动状态寄存器(IABR)
偏移量:0x300
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
31:0 | ACTIVE | 0x00000000 | RO | 中断挂起清除控制: 1:ISR执行中或者被抢占或者压栈 0:ISR未执行或者压栈 |
中断优先级寄存器(IPR)
偏移量:0x400~0x41C
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
7:0 | PRI_n | 0x00 | R/W | 中断n的优先级控制,受AIRCR影响。 |
向量表偏移寄存器(VTOR)
偏移量:0xD08
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
31:30 | Reserved | 0x0 | R/W | 保留 |
29 | TBLBASE | 0 | R/W | 向量表映射域: 0:Code 1:RAM |
28:7 | TBLOFF | 0x000000 | R/W | 向量表偏移地址 |
6:0 | Reserved | 0x00 | R/W | 保留 |
应用中断控制寄存器(AIRCR)
偏移量:0xD0C
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
31:16 | VECTKEY | 0x0000 | R/W | 寄存器配置解锁控制。写该寄存器时,该段位域须为0x05FA,否则写操作被忽略。 读该寄存器时,该段位域值为0xFA05 |
15:2 | Reserved | 0x0000 | R/W | 保留 |
1 | VECTCLR | 0 | R/W | 清除正在执行的中断: 1:清除所有中断信息,包括NMI和fault 0:不清除 |
0 | VECTRESET | 0 | R/W | 系统复位位,复位整个系统(除调试系统): 1:复位系统 0:不复位系统 在调试时,当core被挂起(halted)时才能写该位 |
来源:博客园
作者:wangyanwen
链接:https://www.cnblogs.com/wangyanwen/p/11448535.html