The Nested Vectored Interrupt Controller
The Nested Vectored Interrupt Controller, NVIC is the interrupt controller used in the microcontroller profiles.
Depending on the implementation, the NVIC can support:
1, 8, 16, or 32 external interrupts with 4 different priority levels.
up to 240 external interrupts with up to 256 different priority levels that can be dynamically reprioritized. The NVIC also supports the tail-chaining of interrupts.
The microcontroller profiles support both level and pulse interrupt sources. The processor state is saved automatically by hardware on interrupt entry and is restored on interrupt exit.
The use of an NVIC in the microcontroller profiles means that
the vector table is very different from other ARM processors, because
it consists of addresses not instructions. The initial stack pointer
and the address of the reset handler must be located at
These addresses are loaded into the SP and PC registers by the processor