2.7.1.1 Nested Vectored Interrupt Controller

This section describes the Nested Vectored Interrupt Controller (NVIC) and the registers it uses. The NVIC supports:

  • 1 to 240 interrupts.
  • A programmable priority level of 0-255 for each interrupt. A higher level corresponds to a lower priority, so level 0 is the highest interrupt priority.
  • Level and pulse detection of interrupt signals.
  • Dynamic reprioritization of interrupts.
  • Grouping of priority values into group priority and subpriority fields.
  • Interrupt tail-chaining.
  • An external Non-maskable interrupt (NMI).

The processor automatically stacks its state on exception entry and unstacks this state on exception exit, with no instruction overhead. This provides low latency exception handling. The hardware implementation of the NVIC registers is:

Table 2-34. NVIC Register Summary
AddressNameTypeRequired
privilegeReset
valueSee
0xE000E100 - 0xE000E11CNVIC_ISER0- NVIC_ISER7RWPrivileged0x00000000Interrupt Set-enable Registers
0XE000E180- 0xE000E19CNVIC_ICER0- NVIC_ICER7RWPrivileged0x00000000Interrupt Clear-enable Registers
0XE000E200- 0xE000E21CNVIC_ISPR0- NVIC_ISPR7RWPrivileged0x00000000Interrupt Set-pending Registers
0XE000E280- 0xE000E29CNVIC_ICPR0- NVIC_ICPR7RWPrivileged0x00000000Interrupt Clear-Pending Registers
0xE000E300- 0xE000E31CNVIC_IABR0-
NVIC_IABR7ROPrivileged0x00000000Interrupt Active Bit Registers
0xE000E400- 0xE000E4EFNVIC_IPR0- NVIC_IPR59RWPrivileged0x00000000Interrupt Priority Registers
0xE000EF00STIRWOConfigurable 10x00000000Software Trigger Interrupt Register
Note:
  1. See the register description for more information.