SWRU543B January 2019 – June 2025 CC3230S , CC3230SF , CC3235MODS , CC3235MODSF , CC3235S , CC3235SF
Table 3-3 lists the memory-mapped Cortex registers. All register offset addresses not listed in Table 3-3 should be considered as reserved locations and the register contents should not be modified.
The offset listed is a hexadecimal increment to the register's address, relative to the Core Peripherals base address of 0xE000.E000.
Register spaces that are not used are reserved for future or internal use. Software should not modify any reserved memory address.
| Offset | Acronym | Register Name | Section |
|---|---|---|---|
| 8h | ACTLR | Auxiliary Control | Section 3.3.1.1 |
| 10h | STCTRL | SysTick Control and Status Register | Section 3.3.1.2 |
| 14h | STRELOAD | SysTick Reload Value Register | Section 3.3.1.3 |
| 18h | STCURRENT | SysTick Current Value Register | Section 3.3.1.4 |
| 100h to 118h | EN_0 to EN_6 | Interrupt Set Enable | Section 3.3.1.5 |
| 180h to 198h | DIS_0 to DIS_6 | Interrupt Clear Enable | Section 3.3.1.6 |
| 200h to 218h | PEND_0 to PEND_6 | Interrupt Set Pending | Section 3.3.1.7 |
| 280h to 298h | UNPEND_0 to UNPEND_6 | Interrupt Clear Pending | Section 3.3.1.8 |
| 300h to 318h | ACTIVE_0 to ACTIVE_6 | Interrupt Active Bit | Section 3.3.1.9 |
| 400h to 4C4h | PRI_0 to PRI_49 | Interrupt Priority | Section 3.3.1.10 |
| D00h | CPUID | CPU ID Base | Section 3.3.1.11 |
| D04h | INTCTRL | Interrupt Control and State | Section 3.3.1.12 |
| D08h | VTABLE | Vector Table Offset | Section 3.3.1.13 |
| D0Ch | APINT | Application Interrupt and Reset Control | Section 3.3.1.14 |
| D10h | SYSCTRL | System Control | Section 3.3.1.15 |
| D14h | CFGCTRL | Configuration Control | Section 3.3.1.16 |
| D18h | SYSPRI1 | System Handler Priority 1 | Section 3.3.1.17 |
| D1Ch | SYSPRI2 | System Handler Priority 2 | Section 3.3.1.18 |
| D20h | SYSPRI3 | System Handler Priority 3 | Section 3.3.1.19 |
| D24h | SYSHNDCTRL | System Handler Control and State | Section 3.3.1.20 |
| D28h | FAULTSTAT | Configurable Fault Status | Section 3.3.1.21 |
| D2Ch | HFAULTSTAT | Hard Fault Status | Section 3.3.1.22 |
| D38h | FAULTDDR | Bus Fault Address | Section 3.3.1.23 |
| F00h | SWTRIG | Software Trigger Interrupt | Section 3.3.1.24 |
ACTLR is shown in Figure 3-1 and described in Table 3-4.
Return to Summary Table.
The ACTLR register provides disable bits for IT folding, write buffer use for accesses to the default memory map, and interruption of multi-cycle instructions. By default, this register is set to provide optimum performance from the Cortex-M4 application processor in the CC32xx, and does not normally require modification.
This register can only be accessed from privileged mode.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | DISOOFP | DISFPCA | |||||
| R-0h | R/W-0h | R/W-0h | |||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | DISFOLD | DISWBUF | DISMCYC | ||||
| R-0h | R/W-0h | R/W-0h | R/W-0h | ||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-10 | RESERVED | R | 0h | |
| 9 | DISOOFP | R/W | 0h |
Disable out-of-order floating point N/A for the CC32xx. |
| 8 | DISFPCA | R/W | 0h | |
| 7-3 | RESERVED | R | 0h | |
| 2 | DISFOLD | R/W | 0h |
Disable IT Folding In some situations, the processor can start executing the first instruction in an IT block while it is still executing the IT instruction. This behavior is called IT folding, and improves performance, However, IT folding can cause jitter in looping. If a task must avoid jitter, set the DISFOLD bit before executing the task, to disable IT folding. 0h = No effect. 1h = Disables IT folding. |
| 1 | DISWBUF | R/W | 0h |
Disable IT Folding In some situations, the processor can start executing the first instruction in an IT block while it is still executing the IT instruction. This behavior is called IT folding, and improves performance. However, IT folding can cause jitter in looping. If a task must avoid jitter, set the DISFOLD bit before executing the task, to disable IT folding. 0h = No effect. 1h = Disables IT folding. |
| 0 | DISMCYC | R/W | 0h |
Disable Interrupts of Multiple Cycle Instructions In this situation, the interrupt latency of the processor is increased because any LDM or STM must complete before the processor can stack the current state and enter the interrupt handler. 0h = No effect. 1h = Disables interruption of load multiple and store multiple instructions. |
STCTRL is shown in Figure 3-2 and described in Table 3-5.
Return to Summary Table.
The SysTick (STCTRL) register enables the SysTick features.
This register can only be accessed from privileged mode.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | COUNT | ||||||
| R-0h | R-0h | ||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | CLK_SRC | INTEN | ENABLE | ||||
| R-0h | R/W-0h | R/W-0h | R/W-0h | ||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-17 | RESERVED | R | 0h | |
| 16 | COUNT | R | 0h |
Count Flag This bit is cleared by a read of the register or if the STCURRENT register is written with any value. If read by the debugger using the DAP, this bit is cleared only if the MasterType bit in the AHB-AP Control Register is clear. Otherwise, the COUNT bit is not changed by the debugger read. See the ARM Debug Interface V5 Architecture Specification for more information on MasterType. 0h = The SysTick timer has not counted to 0 since the last time this bit was read. 1h = The SysTick timer has counted to 0 since the last time this bit was read. |
| 15-3 | RESERVED | R | 0h | |
| 2 | CLK_SRC | R/W | 0h |
Clock Source 0h = Precision internal oscillator (PIOSC) divided by 4 1h = System clock |
| 1 | INTEN | R/W | 0h |
Interrupt Enable 0h = Interrupt generation is disabled. Software can use the COUNT bit to determine if the counter has ever reached 0. 1h = An interrupt is generated to the NVIC when SysTick counts to 0. |
| 0 | ENABLE | R/W | 0h |
Enable 0h = The counter is disabled. 1h = Enables SysTick to operate in a multi-shot way. That is, the counter loads the RELOAD value and begins counting down. On reaching 0, the COUNT bit is set and an interrupt is generated if enabled by INTEN. The counter then loads the RELOAD value again and begins counting. |
STRELOAD is shown in Figure 3-3 and described in Table 3-6.
Return to Summary Table.
The STRELOAD register specifies the start value to load into the SysTick Current Value (STCURRENT) register when the counter reaches 0. The start value can be between 0x1 and 0x00FF.FFFF. A start value of 0 is possible, but has no effect because the SysTick interrupt and the COUNT bit are activated when counting from 1 to 0. SysTick can be configured as a multi-shot timer, repeated over and over, firing every N+1 clock pulses, where N is any value from 1 to 0x00FF.FFFF. For example, if a tick interrupt is required every 100 clock pulses, 99 must be written into the RELOAD field. To access this register correctly, the system clock must be faster than 8 MHz.
This register can only be accessed from privileged mode.
| 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 |
| RESERVED | RELOAD | ||||||||||||||||||||||||||||||
| R-0h | R/W-0h | ||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-24 | RESERVED | R | 0h | |
| 23-0 | RELOAD | R/W | 0h |
Reload Value Value to load into the SysTick Current Value (STCURRENT) register when the counter reaches 0. |
STCURRENT is shown in Figure 3-4 and described in Table 3-7.
Return to Summary Table.
The STCURRENT register contains the current value of the SysTick counter.
This register can only be accessed from privileged mode.
| 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 |
| RESERVED | CURRENT | ||||||||||||||||||||||||||||||
| R-0h | R/WC-0h | ||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-24 | RESERVED | R | 0h | |
| 23-0 | CURRENT | R/WC | 0h |
Current Value This field contains the current value at the time the register is accessed. No read-modify-write protection is provided, so change with care. This register is write-clear. Writing to it with any value clears the register. Clearing this register also clears the COUNT bit of the STCTRL register. |
EN_0 to EN_6 is shown in Figure 3-5 and described in Table 3-8.
The ENn registers enable interrupts and show which interrupts are enabled. Bit 0 of EN0 corresponds to Interrupt 0; bit 31 corresponds to Interrupt 31. Bit 0 of EN1 corresponds to Interrupt 32; bit 31 corresponds to Interrupt 63. Bit 0 of EN2 corresponds to Interrupt 64; bit 31 corresponds to Interrupt 95. Bit 0 of EN3 corresponds to Interrupt 96; bit 31 corresponds to Interrupt 127. Bit 0 of EN4 corresponds to Interrupt 128; bit 31 corresponds to Interrupt 159. Bit 0 of EN5 corresponds to Interrupt 160; bit 31 corresponds to Interrupt 191. Bit 0 of EN6 corresponds to interrupt 192; bit 7 corresponds to interrupt 199. If a pending interrupt is enabled, the NVIC activates the interrupt based on its priority. If an interrupt is not enabled, asserting its interrupt signal changes the interrupt state to pending, but the NVIC never activates the interrupt, regardless of its priority.
This register can only be accessed from privileged mode.
| 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 |
| INT | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | INT | R/W | 0h |
Interrupt Enable A bit can only be cleared by setting the corresponding INT[n] bit in the DISn register. 0h (W) = On a write, no effect. 0h (R) = On a read, indicates the interrupt is disabled. 1h (W) = On a write, enables the interrupt. 1h (R) = On a read, indicates the interrupt is enabled. |
DIS_0 to DIS_6 is shown in Figure 3-6 and described in Table 3-9.
The DISn registers disable interrupts. Bit 0 of DIS0 corresponds to Interrupt 0; bit 31 corresponds to Interrupt 31. Bit 0 of DIS1 corresponds to Interrupt 32; bit 31 corresponds to Interrupt 63. Bit 0 of DIS2 corresponds to Interrupt 64; bit 31 corresponds to Interrupt 95. Bit 0 of DIS3 corresponds to Interrupt 96; bit 31 corresponds to Interrupt 127. Bit 0 of DIS4 corresponds to Interrupt 128; bit 31 corresponds to Interrupt 159. Bit 0 of DIS5 corresponds to Interrupt 160; bit 31 corresponds to Interrupt 191. Bit 0 of DIS6 corresponds to Interrupt 192; bit 7 corresponds to Interrupt 199.
This register can only be accessed from privileged mode.
| 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 |
| INT | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | INT | R/W | 0h |
Interrupt Disable EN5 (for DIS5) register; EN6 (for DIS6) register 0h (R) = On a read, indicates the interrupt is disabled. 1h (W) = On a write, no effect. 1h (R) = On a read, indicates the interrupt is enabled. |
PEND_0 to PEND_6 is shown in Figure 3-7 and described in Table 3-10.
The PENDn registers force interrupts into the pending state and show which interrupts are pending. Bit 0 of PEND0 corresponds to Interrupt 0; bit 31 corresponds to Interrupt 31. Bit 0 of PEND1 corresponds to Interrupt 32; bit 31 corresponds to Interrupt 63. Bit 0 of PEND2 corresponds to Interrupt 64; bit 31 corresponds to Interrupt 95. Bit 0 of PEND3 corresponds to Interrupt 96; bit 31 corresponds to Interrupt 127. Bit 0 of PEND4 corresponds to Interrupt 128; bit 31 corresponds to Interrupt 159. Bit 0 of PEND5 corresponds to Interrupt 160; bit 31 corresponds to Interrupt 191. Bit 0 of PEND6 corresponds to Interrupt 192; bit 7 corresponds to Interrupt 199.
This register can only be accessed from privileged mode.
| 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 |
| INT | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | INT | R/W | 0h |
Interrupt Set Pending If the corresponding interrupt is already pending, setting a bit has no effect. A bit can only be cleared by setting the corresponding INT[n] bit in the UNPEND0 (for PEND0 to PEND3) register. UNPEND4 (for PEND4) register UNPEND5 (for PEND5) register UNPEND6 (for PEND6) register 0h (W) = On a write, no effect. 0h (R) = On a read, indicates that the interrupt is not pending. 1h (W) = On a write, the corresponding interrupt is set to pending even if it is disabled. 1h (R) = On a read, indicates that the interrupt is pending. |
UNPEND_0 to UNPEND_6 is shown in Figure 3-8 and described in Table 3-11.
The UNPENDn registers show which interrupts are pending and remove the pending state from interrupts. Bit 0 of UNPEND0 corresponds to Interrupt 0; bit 31 corresponds to Interrupt 31. Bit 0 of UNPEND1 corresponds to Interrupt 32; bit 31 corresponds to Interrupt 63. Bit 0 of UNPEND2 corresponds to Interrupt 64; bit 31 corresponds to Interrupt 95. Bit 0 of UNPEND3 corresponds to Interrupt 96; bit 31 corresponds to Interrupt 127. Bit 0 of UNPEND4 corresponds to Interrupt 128; bit 10 corresponds to Interrupt 159. Bit 0 of UNPEND5 corresponds to Interrupt 160; bit 31 corresponds to interrupt 191. Bit 0 of UNPEND6 corresponds to Interrupt 192; bit 7 corresponds to Interrupt 199.
This register can only be accessed from privileged mode.
| 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 |
| INT | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | INT | R/W | 0h |
Interrupt Clear Pending Setting a bit does not affect the active state of the corresponding interrupt. 0h (W) = On a write, no effect. 0h (R) = On a read, indicates that the interrupt is not pending. 1h (W) = On a write, clears the corresponding INT[n] bit in the PEND0 (for UNPEND0 to UNPEND3) register; PEND4 (for UNPEND4) register; PEND5 (for UNPEND5) register; PEND6 (for UNPEND6) register; so that interrupt [n] is no longer pending. 1h (R) = On a read, indicates that the interrupt is pending. |
ACTIVE_0 to ACTIVE_6 is shown in Figure 3-9 and described in Table 3-12.
The UNPENDn registers indicate which interrupts are active. Bit 0 of ACTIVE0 corresponds to Interrupt 0; bit 31 corresponds to Interrupt 31. Bit 0 of ACTIVE1 corresponds to Interrupt 32; bit 31 corresponds to Interrupt 63. Bit 0 of ACTIVE2 corresponds to Interrupt 64; bit 31 corresponds to Interrupt 95. Bit 0 of ACTIVE3 corresponds to Interrupt 96; bit 31 corresponds to Interrupt 127. Bit 0 of ACTIVE4 corresponds to Interrupt 128; bit 31 corresponds to Interrupt 159. Bit 0 of ACTIVE5 corresponds to Interrupt 160; bit 31 corresponds to Interrupt 191. Bit 0 of ACTIVE6 corresponds to Interrupt 192; bit 7 corresponds to Interrupt 199.
Do not manually set or clear the bits in this register.
| 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 |
| INT | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | INT | R | 0h |
Interrupt Active 0h = The corresponding interrupt is not active. 1h = The corresponding interrupt is active, or active and pending. |
PRI_0 to PRI_49 is shown in Figure 3-10 and described in Table 3-13.
The PRIn registers provide 3-bit priority fields for each interrupt. These registers are byte accessible. Each register holds four priority fields that are assigned to interrupts as follows: bits 31 to 29 have interrupt [4n+3], bits 23 to 21 have interrupt [4n+2], bits 15 to 13 have interrupt [4n+1], and bits 7 to have interrupt [4n]. Each priority level can be split into separate group priority and subpriority fields. The PRIGROUP field in the Application Interrupt and Reset Control (APINT) register indicates the position of the binary point that splits the priority and subpriority fields.
This register can only be accessed from privileged mode.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| INTD | RESERVED | INTC | RESERVED | ||||||||||||
| R/W-0h | R-0h | R/W-0h | R-0h | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| INTB | RESERVED | INTA | RESERVED | ||||||||||||
| R/W-0h | R-0h | R/W-0h | R-0h | ||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-29 | INTD | R/W | 0h |
Interrupt Priority for Interrupt [4n+3] This field holds a priority value, 0-7, for the interrupt with the number [4n+3], where n is the number of the Interrupt Priority register (n=0 for PRI0, and so on). The lower the value, the greater the priority of the corresponding interrupt. |
| 28-24 | RESERVED | R | 0h | |
| 23-21 | INTC | R/W | 0h |
Interrupt Priority for Interrupt [4n+2] This field holds a priority value, 0-7, for the interrupt with the number [4n+2], where n is the number of the Interrupt Priority register (n=0 for PRI0, and so on). The lower the value, the greater the priority of the corresponding interrupt. |
| 20-16 | RESERVED | R | 0h | |
| 15-13 | INTB | R/W | 0h |
Interrupt Priority for Interrupt [4n+1] This field holds a priority value, 0-7, for the interrupt with the number [4n+1], where n is the number of the Interrupt Priority register (n=0 for PRI0, and so on). The lower the value, the greater the priority of the corresponding interrupt. |
| 12-8 | RESERVED | R | 0h | |
| 7-5 | INTA | R/W | 0h |
Interrupt Priority for Interrupt [4n] This field holds a priority value, 0-7, for the interrupt with the number [4n], where n is the number of the Interrupt Priority register (n=0 for PRI0, and so on). The lower the value, the greater the priority of the corresponding interrupt. |
| 4-0 | RESERVED | R | 0h |
CPUID is shown in Figure 3-11 and described in Table 3-14.
Return to Summary Table.
The CPUID register contains the ARM Cortex-M4 processor part number, version, and implementation information.
This register can only be accessed from privileged mode.
| 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 |
| IMP | VAR | CON | PARTNO | REV | |||||||||||||||||||||||||||
| R-41h | R-0h | R-Fh | R-C24h | R-1h | |||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-24 | IMP | R | 41h |
Implementer Code 41h = ARM |
| 23-20 | VAR | R | 0h |
Variant Number 0h = The rn value in the rnpn product revision identifier, for example, the 0 in r0p0. |
| 19-16 | CON | R | Fh |
Constant Value Description 0xF Always reads as 0xF. |
| 15-4 | PARTNO | R | C24h |
Part Number C24h = Cortex-M4 application processor in CC32xx. |
| 3-0 | REV | R | 1h |
Revision Number 1h = The pn value in the rnpn product revision identifier; for example, the 1 in r0p1. |
INTCTRL is shown in Figure 3-12 and described in Table 3-15.
Return to Summary Table.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| NMISET | RESERVED | PENDSV | UNPENDSV | PENDSTSET | PENDSTCLR | RESERVED | |
| R/W-0h | R-0h | R/W-0h | W-0h | R/W-0h | W-0h | R-0h | |
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| ISRPRE | ISRPEND | RESERVED | VECPEND | ||||
| R-0h | R-0h | R-0h | R-0h | ||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| VECPEND | RETBASE | RESERVED | |||||
| R-0h | R-0h | R-0h | |||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| VECACT | |||||||
| R-0h | |||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31 | NMISET | R/W | 0h |
NMI Set Pending Because NMI is the highest-priority exception, normally the processor enters the NMI exception handler as soon as it registers the setting of this bit, and clears this bit on entering the interrupt handler. A read of this bit by the NMI exception handler returns 1 only if the NMI signal is reasserted while the processor is executing that handler. 0h (W) = On a write, no effect. 0h (R) = On a read, indicates an NMI exception is not pending. 1h (W) = On a write, changes the NMI exception state to pending. 1h (R) = On a read, indicates an NMI exception is pending. |
| 30-29 | RESERVED | R | 0h | |
| 28 | PENDSV | R/W | 0h |
PendSV Set Pending Setting this bit is the only way to set the PendSV exception state to pending. This bit is cleared by writing a 1 to the UNPENDSV bit. 0h (W) = On a write, no effect. 0h (R) = On a read, indicates a PendSV exception is not pending. 1h (W) = On a write, changes the PendSV exception state to pending. 1h (R) = On a read, indicates a PendSV exception is pending. |
| 27 | UNPENDSV | W | 0h |
PendSV Clear Pending This bit is write onl on a register read, its value is unknown. 0h = On a write, no effect. 1h = On a write, removes the pending state from the PendSV exception. |
| 26 | PENDSTSET | R/W | 0h |
SysTick Set Pending This bit is cleared by writing a 1 to the PENDSTCLR bit. 0h (W) = On a write, no effect. 0h (R) = On a read, indicates a SysTick exception is not pending. 1h (W) = On a write, changes the SysTick exception state to pending. 1h (R) = On a read, indicates a SysTick exception is pending. |
| 25 | PENDSTCLR | W | 0h |
SysTick Clear Pending This bit is write only on a register read, its value is unknown. 0h = On a write, no effect. 1h = On a write, removes the pending state from the SysTick exception. |
| 24 | RESERVED | R | 0h | |
| 23 | ISRPRE | R | 0h |
Debug Interrupt Handling This bit is only meaningful in debug mode, and reads as zero when the processor is not in debug mode. 0h = The release from halt does not take an interrupt. 1h = The release from halt takes an interrupt. |
| 22 | ISRPEND | R | 0h |
Interrupt Pending This bit provides status for all interrupts excluding NMI and faults. 0h = No interrupt is pending. 1h = An interrupt is pending. |
| 21-20 | RESERVED | R | 0h | |
| 19-12 | VECPEND | R | 0h |
Interrupt Pending Vector Number This field contains the exception number of the highest priority pending enabled exception. The value indicated by this field includes the effect of the BASEPRI and FAULTMASK registers, but not any effect of the PRIMASK register. 0h = No exceptions are pending 1h = Reserved 2h = NMI 3h = Hard fault 4h = Memory management fault 5h = Bus fault 6h = Usage fault 7h- Ah = Reserved Bh = SVCall Ch = Reserved for Debug Dh = Reserved Eh = PendSV Fh = SysTick 10h = Interrupt Vector 0 11h = Interrupt Vector 1 ... D9h = Interrupt Vector 199 |
| 11 | RETBASE | R | 0h |
Return to Base This bit provides status for all interrupts excluding NMI and faults. This bit only has meaning if the processor is currently executing an ISR (the Interrupt Program Status (IPSR) register is non-zero). 0h = There are preempted active exceptions to execute. 1h = There are no active exceptions, or the currently executing exception is the only active exception. |
| 10-8 | RESERVED | R | 0h | |
| 7-0 | VECACT | R | 0h |
Interrupt Pending Vector Number This field contains the active exception number. The exception numbers can be found in the description for the VECPEND field. If this field is clear, the processor is in Thread mode. This field contains the same value as the ISRNUM field in the IPSR register. Subtract 16 from this value to obtain the IRQ number required to index into the Interrupt Set Enable (ENn), Interrupt Clear Enable (DISn), Interrupt Set Pending (PENDn), Interrupt Clear Pending (UNPENDn), and Interrupt Priority (PRIn) registers. |
VTABLE is shown in Figure 3-13 and described in Table 3-16.
Return to Summary Table.
The VTABLE register indicates the offset of the vector table base address from memory address 0x0000.0000.
This register can only be accessed from privileged mode.
| 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 |
| OFFSET | RESERVED | ||||||||||||||||||||||||||||||
| R/W-0h | R-0h | ||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-10 | OFFSET | R/W | 0h |
Vector Table Offset When configuring the OFFSET field, the offset must be aligned to the number of exception entries in the vector table. Because there are 199 interrupts, the offset must be aligned on a 1024-byte boundary. |
| 9-0 | RESERVED | R | 0h |
APINT is shown in Figure 3-14 and described in Table 3-17.
Return to Summary Table.
The APINT register provides priority grouping control for the exception model, endian status for data accesses, and reset control of the system. To write to this register, 0x05FA must be written to the VECTKEY field, otherwise the write is ignored. The PRIGROUP field indicates the position of the binary point that splits the INTx fields in the Interrupt Priority (PRIx) registers into separate group priority and subpriority fields. The bit numbers in the Group Priority Field and Subpriority Field columns in the table refer to the bits in the INTA field. For the INTB field, the corresponding bits are 15:13; for INTC, 23:21; and for INTD, 31:29.
This register can only be accessed from privileged mode.
Determining preemption of an exception uses only the group priority field.
PRIGROUP Bit Field = Binary Point = Group Priority Field = Subpriority Field = Group Priorities = Subpriorities
0h-4h = bxxx = [7:5] = None = 8 = 1
5h = bxx.y = [7:6] = [5] = 4 = 2
6h = bx.yy = [7] = [6:5] = 2 = 4
7h = b.yyy = None = [7:5] = 1 = 8
INTx field showing the binary point. An x denotes a group priority field bit, and a y denotes a subpriority field bit.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| VECTKEY | |||||||
| R/W-FA05h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| VECTKEY | |||||||
| R/W-FA05h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| ENDIANESS | RESERVED | PRIGROUP | |||||
| R-0h | R-0h | R/W-0h | |||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | SYSRESREQ | VECTCLRACT | VECTRESET | ||||
| R-0h | W-0h | W-0h | W-0h | ||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-16 | VECTKEY | R/W | FA05h |
Register Key This field is used to guard against accidental writes to this register. 0x05FA must be written to this field in order to change the bits in this register. On a read, 0xFA05 is returned. |
| 15 | ENDIANESS | R | 0h |
Data Endianess The CC32xx implementation uses only little-endian mode, so this is cleared to 0. |
| 14-11 | RESERVED | R | 0h | |
| 10-8 | PRIGROUP | R/W | 0h |
Interrupt Priority Grouping This field determines the split of group priority from subpriority |
| 7-3 | RESERVED | R | 0h | |
| 2 | SYSRESREQ | W | 0h |
System Reset Request This bit is automatically cleared during the reset of the core and reads as 0. 0h = No effect. 1h = Resets the core and all on-chip peripherals except the Debug interface. |
| 1 | VECTCLRACT | W | 0h |
Clear Active NMI / Fault This bit is reserved for debug use and reads as 0. This bit must be written as a 0, otherwise behavior is unpredictable. |
| 0 | VECTRESET | W | 0h |
System Reset This bit is reserved for debug use and reads as 0. This bit must be written as a 0, otherwise behavior is unpredictable. |
SYSCTRL is shown in Figure 3-15 and described in Table 3-18.
Return to Summary Table.
The SYSCTRL register controls features of entry to and exit from low-power state.
This register can only be accessed from privileged mode.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | SEVONPEND | RESERVED | SLEEPDEEP | SLEEPEXIT | RESERVED | ||
| R-0h | R/W-0h | R-0h | R/W-0h | R/W-0h | R-0h | ||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-5 | RESERVED | R | 0h | |
| 4 | SEVONPEND | R/W | 0h |
Wake Up on Pending 0h = Only enabled interrupts or events can wake up the processor; disabled interrupts are excluded. 1h = Enabled events and all interrupts, including disabled interrupts, can wake up the processor. |
| 3 | RESERVED | R | 0h | |
| 2 | SLEEPDEEP | R/W | 0h |
Deep Sleep Enable 0h = Use Sleep mode as the low power mode. 1h = Use Deep-sleep mode as the low power mode. |
| 1 | SLEEPEXIT | R/W | 0h |
Sleep on ISR Exit Setting this bit enables an interrupt-driven application to avoid returning to an empty main application. 0h = When returning from Handler mode to Thread mode, do not sleep when returning to Thread mode. 1h = When returning from Handler mode to Thread mode, enter sleep or deep sleep on return from an ISR. |
| 0 | RESERVED | R | 0h |
CFGCTRL is shown in Figure 3-16 and described in Table 3-19.
Return to Summary Table.
The CFGCTRL register controls entry to Thread mode and enables:
This register can only be accessed from privileged mode.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | STKALIGN | BFHFMIGN | |||||
| R-0h | R/W-1h | R/W-0h | |||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | DIV0 | UNALIGNED | RESERVED | MANIPEND | BASETHR | ||
| R-0h | R/W-0h | R/W-0h | R-0h | R/W-0h | R/W-0h | ||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-10 | RESERVED | R | 0h | |
| 9 | STKALIGN | R/W | 1h |
Stack Alignment on Exception Entry On exception entry, the processor uses bit 9 of the stacked PSR to indicate the stack alignment. On return from the exception, it uses this stacked bit to restore the correct stack alignment. 0h = The stack is 4-byte aligned. 1h = The stack is 8-byte aligned. |
| 8 | BFHFMIGN | R/W | 0h |
Ignore Bus Fault in NMI and Fault This bit enables handlers with priority -1 or -2 to ignore data bus faults caused by load and store instructions. The setting of this bit applies to the hard fault, NMI, and FAULTMASK-escalated handlers. Set this bit only when the handler and its data are in absolutely safe memory. The normal use of this bit is to probe system devices and bridges to detect control path problems and fix them. 0h = Data bus faults caused by load and store instructions cause a lock-up. 1h = Handlers running at priority -1 and -2 ignore data bus faults caused by load and store instructions. |
| 7-5 | RESERVED | R | 0h | |
| 4 | DIV0 | R/W | 0h |
Trap on Divide by 0 This bit enables faulting or halting when the processor executes an SDIV or UDIV instruction with a divisor of 0. 0h = Do not trap on divide by 0. A divide by zero returns a quotient of 0. 1h = Trap on divide by 0. |
| 3 | UNALIGNED | R/W | 0h |
Trap on Unaligned Access Unaligned LDM, STM, LDRD, and STRD instructions always fault regardless of whether UNALIGNED is set. 0h = Do not trap on unaligned halfword and word accesses. 1h = Trap on unaligned halfword and word accesses. An unaligned access generates a usage fault. |
| 2 | RESERVED | R | 0h | |
| 1 | MANIPEND | R/W | 0h |
Allow Main Interrupt Trigger 0h = Disables unprivileged software access to the SWTRIG register. 1h = Enables unprivileged software access to the SWTRIG register. |
| 0 | BASETHR | R/W | 0h |
Thread State Control 0h = The processor can enter Thread mode only when no exception is active. 1h = The processor can enter Thread mode from any level under the control of an EXC_RETURN value. |
SYSPRI1 is shown in Figure 3-17 and described in Table 3-20.
Return to Summary Table.
The SYSPRI1 register configures the priority level, 0 to 7 of the usage fault, bus fault, and memory management fault exception handlers. This register is byte-accessible.
This register can only be accessed from privileged mode.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | USAGE | RESERVED | |||||||||||||
| R-0h | R/W-0h | R-0h | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| BUS | RESERVED | MEM | RESERVED | ||||||||||||
| R/W-0h | R-0h | R/W-0h | R-0h | ||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-24 | RESERVED | R | 0h | |
| 23-21 | USAGE | R/W | 0h |
Usage Fault Priority This field configures the priority level of the usage fault. Configurable priority values are in the range 0-7, with lower values having higher priority. |
| 20-16 | RESERVED | R | 0h | |
| 15-13 | BUS | R/W | 0h |
Bus Fault Priority This field configures the priority level of the bus fault. Configurable priority values are in the range 0-7, with lower values having higher priority. |
| 12-8 | RESERVED | R | 0h | |
| 7-5 | MEM | R/W | 0h |
Memory Management Fault Priority This field configures the priority level of the memory management fault. Configurable priority values are in the range 0-7, with lower values having higher priority. |
| 4-0 | RESERVED | R | 0h |
SYSPRI2 is shown in Figure 3-18 and described in Table 3-21.
Return to Summary Table.
The SYSPRI2 register configures the priority level, 0 to 7 of the SVCall handler. This register is byte-accessible.
This register can only be accessed from privileged mode.
| 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 |
| SVC | RESERVED | ||||||||||||||||||||||||||||||
| R/W-0h | R-0h | ||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-29 | SVC | R/W | 0h |
SVCall Priority This field configures the priority level of SVCall. Configurable priority values are in the range 0-7, with lower values having higher priority. |
| 28-0 | RESERVED | R | 0h |
SYSPRI3 is shown in Figure 3-19 and described in Table 3-22.
Return to Summary Table.
The SYSPRI3 register configures the priority level, 0 to 7 of the SysTick exception and PendSV handlers. This register is byte-accessible.
This register can only be accessed from privileged mode.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| TICK | RESERVED | PENDSV | RESERVED | ||||||||||||
| R/W-0h | R-0h | R/W-0h | R-0h | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | DEBUG | RESERVED | |||||||||||||
| R-0h | R/W-0h | R-0h | |||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-29 | TICK | R/W | 0h |
SysTick Exception Priority This field configures the priority level of the SysTick exception. Configurable priority values are in the range 0-7, with lower values having higher priority. |
| 28-24 | RESERVED | R | 0h | |
| 23-21 | PENDSV | R/W | 0h |
PendSV Priority This field configures the priority level of PendSV. Configurable priority values are in the range 0-7, with lower values having higher priority. |
| 20-8 | RESERVED | R | 0h | |
| 7-5 | DEBUG | R/W | 0h |
Debug Priority This field configures the priority level of Debug. Configurable priority values are in the range 0-7, with lower values having higher priority. |
| 4-0 | RESERVED | R | 0h |
SYSHNDCTRL is shown in Figure 3-20 and described in Table 3-23.
Return to Summary Table.
The SYSHNDCTRL register enables the system handlers and indicates the pending status of the usage fault, bus fault, memory management fault, and SVC exceptions, as well as the active status of the system handlers. If a system handler is disabled and the corresponding fault occurs, the processor treats the fault as a hard fault. This register can be modified to change the pending or active status of system exceptions. An OS kernel can write to the active bits to perform a context switch that changes the current exception type.
This register can only be accessed from privileged mode.
Software that changes the value of an active bit in this register without correct adjustment to the stacked content can cause the processor to generate a fault exception. Ensure software that writes to this register retains and subsequently restores the current active status. If the value of a bit in this register must be modified after enabling the system handlers, a read-modify-write procedure must be used to ensure that only the required bit is modified.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | |||||||
| R-0h | |||||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | USAGE | BUS | MEM | ||||
| R-0h | R/W-0h | R/W-0h | R/W-0h | ||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| SVC | BUSP | MEMP | USAGEP | TICK | PNDSV | RESERVED | MON |
| R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h | R/W-0h | R-0h | R/W-0h |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SVCA | RESERVED | USGA | RESERVED | BUSA | MEMA | ||
| R/W-0h | R-0h | R/W-0h | R-0h | R/W-0h | R/W-0h | ||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-19 | RESERVED | R | 0h | |
| 18 | USAGE | R/W | 0h |
Usage Fault Enable 0h = Disables the usage fault exception. 1h = Enables the usage fault exception. |
| 17 | BUS | R/W | 0h |
Bus Fault Enable 0h = Disables the bus fault exception. 1h = Enables the bus fault exception. |
| 16 | MEM | R/W | 0h |
Memory Management Fault Enable 0h = Disables the memory management fault exception. 1h = Enables the memory management fault exception. |
| 15 | SVC | R/W | 0h |
SVC Call Pending This bit can be modified to change the pending status of the SVC call exception. 0h = An SVC call exception is not pending. 1h = An SVC call exception is pending. |
| 14 | BUSP | R/W | 0h |
Bus Fault Pending This bit can be modified to change the pending status of the bus fault exception. 0h = A bus fault exception is not pending. 1h = A bus fault exception is pending. |
| 13 | MEMP | R/W | 0h |
Memory Management Fault Pending This bit can be modified to change the pending status of the memory management fault exception. 0h = A memory management fault exception is not pending. 1h = A memory management fault exception is pending. |
| 12 | USAGEP | R/W | 0h |
Usage Fault Pending This bit can be modified to change the pending status of the usage fault exception. 0h = A usage fault exception is not pending. 1h = A usage fault exception is pending. |
| 11 | TICK | R/W | 0h |
SysTick Exception Active This bit can be modified to change the active status of the SysTick exception, however, see the Caution above before setting this bit. 0h = A SysTick exception is not active. 1h = A SysTick exception is active. |
| 10 | PNDSV | R/W | 0h |
PendSV Exception Active This bit can be modified to change the active status of the PendSV exception, however, see the Caution above before setting this bit. 0h = A PendSV exception is not active. 1h = A PendSV exception is active. |
| 9 | RESERVED | R | 0h | |
| 8 | MON | R/W | 0h |
Debug Monitor Active 0h = The Debug monitor is not active. 1h = The Debug monitor is active. |
| 7 | SVCA | R/W | 0h |
SVC Call Active This bit can be modified to change the active status of the SVC call exception, however, see the Caution above before setting this bit. 0h = SVC call is not active. 1h = SVC call is active. |
| 6-4 | RESERVED | R | 0h | |
| 3 | USGA | R/W | 0h |
Usage Fault Active This bit can be modified to change the active status of the usage fault exception, however, see the Caution above before setting this bit. 0h = Usage fault is not active. 1h = Usage fault is active. |
| 2 | RESERVED | R | 0h | |
| 1 | BUSA | R/W | 0h |
Bus Fault Active This bit can be modified to change the active status of the bus fault exception, however, see the Caution above before setting this bit. 0h = Bus fault is not active. 1h = Bus fault is active. |
| 0 | MEMA | R/W | 0h |
Memory Management Fault Active This bit can be modified to change the active status of the memory management fault exception, however, see the Caution above before setting this bit. 0h = Memory management fault is not active. 1h = Memory management fault is active. |
FAULTSTAT is shown in Figure 3-21 and described in Table 3-24.
Return to Summary Table.
The FAULTSTAT register indicates the cause of a memory management fault, bus fault, or usage fault. Each of these functions is assigned to a subregister as follows:
FAULTSTAT or its subregisters can be accessed as follows:
In a fault handler, the true faulting address can be determined by:
This register can only be accessed from privileged mode.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| RESERVED | DIV0 | UNALIGN | |||||
| R-0h | R/W1C-0h | R/W1C-0h | |||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | NOCP | INVPC | INVSTAT | UNDEF | |||
| R-0h | R/W1C-0h | R/W1C-0h | R/W1C-0h | R/W1C-0h | |||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| BFARV | RESERVED | BLSPERR | BSTKE | BUSTKE | IMPRE | PRECISE | IBUS |
| R/W1C-0h | R-0h | R/W1C-0h | R/W1C-0h | R/W1C-0h | R/W1C-0h | R/W1C-0h | R/W1C-0h |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| MMARV | RESERVED | MLSPERR | MSTKE | MUSTKE | RESERVED | DERR | IERR |
| R/W1C-0h | R-0h | R/W1C-0h | R/W1C-0h | R/W1C-0h | R-0h | R/W1C-0h | R/W1C-0h |
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-26 | RESERVED | R | 0h | |
| 25 | DIV0 | R/W1C | 0h |
Divide-by-Zero Usage Fault When this bit is set, the PC value stacked for the exception return points to the instruction that performed the divide by zero. Trapping on divide-by-zero is enabled by setting the DIV0 bit in the Configuration and Control (CFGCTRL) register. This bit is cleared by writing a 1 to it. 0h = No divide-by-zero fault has occurred, or divide-by-zero trapping is not enabled. 1h = The processor has executed an SDIV or UDIV instruction with a divisor of 0. |
| 24 | UNALIGN | R/W1C | 0h |
Unaligned Access Usage Fault Unaligned LDM, STM, LDRD, and STRD instructions always fault regardless of the configuration of this bit. Trapping on unaligned access is enabled by setting the UNALIGNED bit in the CFGCTRL register. This bit is cleared by writing a 1 to it. 0h = No unaligned access fault has occurred, or unaligned access trapping is not enabled. 1h = The processor has made an unaligned memory access. |
| 23-20 | RESERVED | R | 0h | |
| 19 | NOCP | R/W1C | 0h |
No Coprocessor Usage Fault This bit is cleared by writing a 1 to it. 0h = A usage fault has not been caused by attempting to access a coprocessor. 1h = The processor has attempted to access a coprocessor. |
| 18 | INVPC | R/W1C | 0h |
Invalid PC Load Usage Fault When this bit is set, the PC value stacked for the exception return points to the instruction that tried to perform the illegal load of the PC. This bit is cleared by writing a 1 to it. 0h = A usage fault has not been caused by attempting to load an invalid PC value. 1h = The processor has attempted an illegal load of EXC_RETURN to the PC as a result of an invalid context or an invalid EXC_RETURN value. |
| 17 | INVSTAT | R/W1C | 0h |
Invalid State Usage Fault When this bit is set, the PC value stacked for the exception return points to the instruction that attempted the illegal use of the Execution Program Status Register (EPSR) register. This bit is not set if an undefined instruction uses the EPSR register. This bit is cleared by writing a 1 to it. 0h = A usage fault has not been caused by an invalid state. 1h = The processor has attempted to execute an instruction that makes illegal use of the EPSR register. |
| 16 | UNDEF | R/W1C | 0h |
Undefined Instruction Usage Fault When this bit is set, the PC value stacked for the exception return points to the undefined instruction. An undefined instruction is an instruction that the processor cannot decode. This bit is cleared by writing a 1 to it. 0h = A usage fault has not been caused by an undefined instruction. 1h = The processor has attempted to execute an undefined instruction. |
| 15 | BFARV | R/W1C | 0h |
Bus Fault Address Register Valid This bit is set after a bus fault, where the address is known. Other faults can clear this bit, such as a memory management fault occurring later. If a bus fault occurs and is escalated to a hard fault because of priority, the hard fault handler must clear this bit. This action prevents problems if returning to a stacked active bus fault handler whose FAULTADDR register value has been overwritten. This bit is cleared by writing a 1 to it. 0h = The value in the Bus Fault Address (FAULTADDR) register is not a valid fault address. 1h = The FAULTADDR register is holding a valid fault address. |
| 14 | RESERVED | R | 0h | |
| 13 | BLSPERR | R/W1C | 0h |
N/A |
| 12 | BSTKE | R/W1C | 0h |
Stack Bus Fault When this bit is set, the SP is still adjusted but the values in the context area on the stack might be incorrect. A fault address is not written to the FAULTADDR register. This bit is cleared by writing a 1 to it. 0h = No bus fault has occurred on stacking for exception entry. 1h = Stacking for an exception entry has caused one or more bus faults. |
| 11 | BUSTKE | R/W1C | 0h |
Unstack Bus Fault This fault is chained to the handler. Thus, when this bit is set, the original return stack is still present. The SP is not adjusted from the failing return, a new save is not performed, and a fault address is not written to the FAULTADDR register. This bit is cleared by writing a 1 to it. 0h = No bus fault has occurred on unstacking for a return from exception. 1h = Unstacking for a return from exception has caused one or more bus faults. |
| 10 | IMPRE | R/W1C | 0h |
Imprecise Data Bus Error When this bit is set, a fault address is not written to the FAULTADDR register. This fault is asynchronous. Therefore, if the fault is detected when the priority of the current process is higher than the bus fault priority, the bus fault becomes pending and becomes active only when the processor returns from all higher-priority processes. If a precise fault occurs before the processor enters the handler for the imprecise bus fault, the handler detects that both the IMPRE bit is set and one of the precise fault status bits is set. This bit is cleared by writing a 1 to it. 0h = An imprecise data bus error has not occurred. 1h = A data bus error has occurred, but the return address in the stack frame is not related to the instruction that caused the error. |
| 9 | PRECISE | R/W1C | 0h |
Precise Data Bus Error When this bit is set, the fault address is written to the FAULTADDR register. This bit is cleared by writing a 1 to it. 0h = A precise data bus error has not occurred. 1h = A data bus error has occurred, and the PC value stacked for the exception return points to the instruction that caused the fault. |
| 8 | IBUS | R/W1C | 0h |
Instruction Bus Error The processor detects the instruction bus error on prefetching an instruction, but sets this bit only if it attempts to issue the faulting instruction. When this bit is set, a fault address is not written to the FAULTADDR register. This bit is cleared by writing a 1 to it. 0h = An instruction bus error has not occurred. 1h = An instruction bus error has occurred. |
| 7 | MMARV | R/W1C | 0h |
Memory Management Fault Address Register Valid If a memory management fault occurs and is escalated to a hard fault because of priority, the hard fault handler must clear this bit. This action prevents problems if returning to a stacked active memory management fault handler whose MMADDR register value has been overwritten. 0h = The This bit is cleared by writing a 1 to it. value in the Memory Management Fault Address (MMADDR) register is not a valid fault address. 1h = The MMADDR register is holding a valid fault address. |
| 6 | RESERVED | R | 0h | |
| 5 | MLSPERR | R/W1C | 0h |
N/A |
| 4 | MSTKE | R/W1C | 0h |
Stack Access Violation When this bit is set, the SP is still adjusted but the values in the context area on the stack might be incorrect. A fault address is not written to the MMADDR register. This bit is cleared by writing a 1 to it. 0h = No memory management fault has occurred on stacking for exception entry. 1h = Stacking for an exception entry has caused one or more access violations. |
| 3 | MUSTKE | R/W1C | 0h |
Unstack Access Violation This fault is chained to the handler. Thus, when this bit is set, the original return stack is still present. The SP is not adjusted from the failing return, a new save is not performed, and a fault address is not written to the MMADDR register. This bit is cleared by writing a 1 to it. 0h = No memory management fault has occurred on unstacking for a return from exception. 1h = Unstacking for a return from exception has caused one or more access violations. |
| 2 | RESERVED | R | 0h | |
| 1 | DERR | R/W1C | 0h |
Data Access Violation When this bit is set, the PC value stacked for the exception return points to the faulting instruction and the address of the attempted access is written to the MMADDR register. This bit is cleared by writing a 1 to it. 0h = A data access violation has not occurred. 1h = The processor attempted a load or store at a location that does not permit the operation. |
| 0 | IERR | R/W1C | 0h |
Instruction Access Violation This fault occurs on any access to an XN region. When this bit is set, the PC value stacked for the exception return points to the faulting instruction and the address of the attempted access is not written to the MMADDR register. This bit is cleared by writing a 1 to it. 0h = An instruction access violation has not occurred. 1h = The processor attempted an instruction fetch from a location that does not permit execution. |
HFAULTSTAT is shown in Figure 3-22 and described in Table 3-25.
Return to Summary Table.
The HFAULTSTAT register gives information about events that activate the hard fault handler. Bits are cleared by writing a 1 to them.
This register can only be accessed from privileged mode.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| DBG | FORCED | RESERVED | |||||
| R/W1C-0h | R/W1C-0h | R-0h | |||||
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| RESERVED | |||||||
| R-0h | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| RESERVED | |||||||
| R-0h | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RESERVED | VECT | RESERVED | |||||
| R-0h | R/W1C-0h | R-0h | |||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31 | DBG | R/W1C | 0h |
Debug Event This bit is reserved for debug use. This bit must be written as a 0, otherwise behavior is unpredictable. |
| 30 | FORCED | R/W1C | 0h |
Forced Hard Fault When this bit is set, the hard fault handler must read the other fault status registers to find the cause of the fault. This bit is cleared by writing a 1 to it. 0h = No forced hard fault has occurred. 1h = A forced hard fault has been generated by escalation of a fault with configurable priority that cannot be handled, either because of priority or because it is disabled. |
| 29-2 | RESERVED | R | 0h | |
| 1 | VECT | R/W1C | 0h |
Vector Table Read Fault This error is always handled by the hard fault handler. When this bit is set, the PC value stacked for the exception return points to the instruction that was preempted by the exception. This bit is cleared by writing a 1 to it. 0h = No bus fault has occurred on a vector table read. 1h = A bus fault occurred on a vector table read. |
| 0 | RESERVED | R | 0h |
FAULTDDR is shown in Figure 3-23 and described in Table 3-26.
Return to Summary Table.
The FAULTADDR register contains the address of the location that generated a bus fault. When an unaligned access faults, the address in the FAULTADDR register is the one requested by the instruction, even if it is not the address of the fault. Bits in the Bus Fault Status (BFAULTSTAT) register indicate the cause of the fault and whether the value in the FAULTADDR register is valid.
This register can only be accessed from privileged mode.
| 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 |
| ADDR | |||||||||||||||||||||||||||||||
| R/W-0h | |||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-0 | ADDR | R/W | 0h |
Fault Address When the FAULTADDRV bit of BFAULTSTAT is set, this field holds the address of the location that generated the bus fault. |
SWTRIG is shown in Figure 3-24 and described in Table 3-27.
Return to Summary Table.
Writing an interrupt number to the SWTRIG register generates a software-generated interrupt (SGI). When the MAINPEND bit in the Configuration and Control (CFGCTRL) register is set, unprivileged software can access the SWTRIG register.
Only privileged software can enable unprivileged access to the SWTRIG register.
| 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 |
| RESERVED | INTID | ||||||||||||||||||||||||||||||
| R-0h | W-0h | ||||||||||||||||||||||||||||||
| LEGEND: R/W = Read/Write; R = Read only; W1toCl = Write 1 to clear bit; -n = value after reset |
| Bit | Field | Type | Reset | Description |
|---|---|---|---|---|
| 31-8 | RESERVED | R | 0h | |
| 7-0 | INTID | W | 0h |
Interrupt ID This field holds the interrupt ID of the required SGI. For example, a value of 0x3 generates an interrupt on IRQ3. |