ZHDU116G January 2018 – June 2024 CC1312PSIP , CC1312R , CC1352P , CC1352R , CC2642R , CC2642R-Q1 , CC2652P , CC2652PSIP , CC2652R , CC2652RB , CC2652RSIP , CC2662R-Q1
| 寄存器 | 类型 | 组合 |
|---|---|---|
| PSR | R/W (2) (1) | APSR、EPSR 和 IPSR |
| IEPSR | RO | EPSR 和 IPSR |
| IAPSR | R/W | APSR 和 IPSR |
| EAPSR | R/W | APSR 和 EPSR |
| 地址偏移量 | 复位 | 0x0100 0000 | |
| 物理地址 | 实例 | ||
| 说明 | |||
| 也称为 xPSR | |||
程序状态寄存器 (PSR) 有三项功能,并且寄存器位分配给不同的功能:
|
|||
| PSR、IPSR 和 EPSR 寄存器只能在特权模式下被访问;APSR 寄存器可以在特权模式或非特权模式下被访问。 | |||
| APSR 包含之前指令执行中条件标志的当前状态。 | |||
| EPSR 包含 Thumb 状态位和 if-then (IT) 指令的执行状态位,或用于中断加载多条指令或存储多条指令的可中断连续指令 (ICI) 字段。使用 MSR 指令通过应用软件直接读取 EPSR 的尝试始终返回 0。使用应用软件中的 MSR 指令写入 EPSR 的尝试始终会被忽略。故障处理程序可以检查堆叠 PSR 中的 EPSR 值,以确定发生故障的操作(请参阅节 6.1.7)。 | |||
| IPSR 包含当前 ISR 的异常类型编号。 | |||
| 可以单独访问这些寄存器,也可以作为任意两个或全部三个寄存器的组合访问,并将寄存器名称用作 MSR 或 MRS 指令的参数。例如,可以使用 PSR 和 MRS 指令读取所有寄存器,或者只能使用 APSR 和 MSR 指令写入 APSR。表 3-20 显示了 PSR 的可能寄存器组合。有关如何访问程序状态寄存器的更多信息,请参阅 Cortex-M3/M4F 指令集技术用户手册 中的 MRS 和 MSR 指令说明。 | |||
| 类型 | R/W | ||
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| N | Z | C | V | Q | ICI / IT | THUMB | RESERVED | ICI / IT | RESERVED | ISRNUM | |||||||||||||||||||||
| 位 | 字段名称 | 说明 | 类型 | 复位 | |
|---|---|---|---|---|---|
| 31 | N | APSR 负或更小标志 | R/W | 0 | |
| 值 | 说明 | ||||
| 1 | 之前的操作结果为负或者小于。 | ||||
| 0 | 先前的运算结果为正、零、大于或者等于 | ||||
| 仅当访问 PSR 或 APSR 时,该位的值才有意义。 | |||||
| 30 | Z | APSR 零标志 | R/W | 0 | |
| 值 | 说明 | ||||
| 1 | 先前的运算结果为零。 | ||||
| 0 | 之前的运算结果为非零。 | ||||
| 仅当访问 PSR 或 APSR 时,该位的值才有意义。 | |||||
| 29 | C | APSR 进位或借位标志 | R/W | 0 | |
| 值 | 说明 | ||||
| 1 | 前一个加法操作产生进位位,或者前一个减法操作没有产生借位位。 | ||||
| 0 | 前一个加法操作不会产生进位位,或者前一个减法操作产生借位位。 | ||||
| 仅当访问 PSR 或 APSR 时,该位的值才有意义。 | |||||
| 28 | V | APSR 溢出标志 | R/W | 0 | |
| 值 | 说明 | ||||
| 1 | 上一个操作导致溢出。 | ||||
| 0 | 上一个操作没有导致溢出。 | ||||
| 仅当访问 PSR 或 APSR 时,该位的值才有意义。 | |||||
| 27 | Q | APSR 粘滞溢出及饱和标志 | R/W | 0 | |
| 值 | 说明 | ||||
| 1 | 发生了溢出或饱和。(通过 SSAT 或 USAT 指令设置)。 | ||||
| 0 | 自复位以来或者自上次清除该位以来未发生溢出或饱和。 | ||||
| 仅当访问 PSR 或 APSR 时,该位的值才有意义。 此标志是粘滞标志,因为当由指令设置时,它会保持设置状态,直到使用 MSR 指令显式清除。 |
|||||
| 26-25 | ICI / IT | EPSR ICI / IT 状态 这些位与位 15:10 一起包含用于中断加载多次或存储多条指令或 IT 指令的执行状态位的 ICI 字段。当 EPSR 保持 ICI 执行状态时,位 26:25 为 0。If-Then 块在 IT 指令之后最多包含四条指令。块中的每条指令都是有条件的。指令的条件要么全部相同,要么某些条件与其他条件相反。如需更多信息,请参考 Cortex-M3/M4F 指令集技术用户手册。仅当访问 PSR 或 EPSR 时,该字段的值才有意义。 |
R/O | 0x0 | |
| 24 | THUMB | EPSR Thumb 状态 此位表示 Thumb 状态,必须始终设置该位。以下指令可以清除 THUMB 位:
|
R/O | 1 | |
| 23-16 | RESERVED | 保留 | R/O | 0x00 | |
| 15-10 | ICI / IT | EPSR ICI / IT 状态 这些位与位 26:25 一起包含用于中断加载多次或存储多条指令或 IT 指令的执行状态位的 ICI 字段。在执行 LDM、STM、PUSH 或 POP 指令期间发生中断时,处理器会暂时停止加载多个指令或存储多个指令操作,并将多次操作中的下一个寄存器操作数存储到位 15:12。为中断提供服务后,处理器返回到位 15:12 指向的寄存器,并恢复多个加载或存储指令的执行。当 EPSR 保持 ICI 执行状态时,位 11:10 为 0。If-Then 块在 16 位 IT 指令之后最多包含四条指令。块中的每条指令都是有条件的。指令的条件要么全部相同,要么某些条件与其他条件相反。如需更多信息,请参考 Cortex-M3/M4F 指令集技术用户手册。仅当访问 PSR 或 EPSR 时,该字段的值才有意义。 |
R/O | 0x0 | |
| 9-7 | RESERVED | 软件不得依赖保留位的值。为了提供与未来产品的兼容性,必须在读-修改-写操作中留存保留位的值。 | R/O | 0x0 | |
| 6-0 | ISRNUM | IPSR ISR 编号 该字段包含当前 ISR 的异常类型编号。 |
R/O | 0x00 | |
| 值 | 说明 | ||||
| 0x00 | 线程模式 | ||||
| 0x01 | 保留 | ||||
| 0x02 | NMI | ||||
| 0x03 | 硬故障 | ||||
| 0x04 | 内存管理故障 | ||||
| 0x05 | 总线故障 | ||||
| 0x06 | 使用故障 | ||||
| 0x07–0x0A | 保留 | ||||
| 0x0B | SVCall | ||||
| 0x0C | 保留用于调试 | ||||
| 0x0D | 保留 | ||||
| 0x0E | PendSV | ||||
| 0x0F | SysTick | ||||
| 0x10 | 中断矢量 0 | ||||
| 0x11 | 中断矢量 1 | ||||
| ... | ... | ||||
| 0x31 | 中断矢量 33 | ||||
| 0x32-0x7F | 保留 | ||||
| 有关更多信息,请参阅 节 6.1.2。 仅当访问 PSR 或 IPSR 时,该字段的值才有意义。 |
|||||