17. Nested vectored interrupt controller (NVIC)
The NVIC is a Arm ® Cortex ® embedded interrupt controller that supports low-latency interrupt processing.
17.1 NVIC main features
- • 16 programmable priority levels (4 bits of interrupt priority used)
- • Low-latency exception and interrupt handling
- • Power management control
- • Implementation of system control registers
The NVIC and the processor core interface are closely coupled, enabling low-latency interrupt processing and efficient processing of late arriving interrupts.
The NVIC registers are banked across secure and nonsecure states.
All interrupts including the core exceptions are managed by the NVIC.
17.2 Interrupt and exception vectors
The grey rows in Table 140 indicate vectors without specific position.
Table 140. Vector table
| Position | Priority | Type of priority | Acronym | Description | Address |
|---|---|---|---|---|---|
| - | - | - | - | Reserved | 0x0000 0000 |
| - | -4 | Fixed | Reset | Reset | 0x0000 0004 |
| -14 | -2 | Fixed | NMI | Nonmaskable interrupt. - RCC clock security system (HSECSS) - FLASH ECC double error detection - RAMCFG SRAM2 parity error | 0x0000 0008 |
| -13 | -1 | Fixed | Secure HardFault | Hard fault when AIRCR.BFHFNMINS = 1 | 0x0000 000C |
| -1 | Fixed | Hard fault when AIRCR.BFHFNMINS = 0 | |||
| -1 | Fixed | Nonsecure HardFault | Hard fault. All classes of fault | ||
| -12 | 0 | Settable | MemManage | Memory management | 0x0000 0010 |
| -11 | 1 | Settable | BusFault | Pre-fetch fault, memory access fault | 0x0000 0014 |
| -10 | 2 | Settable | UsageFault | Undefined instruction or illegal state | 0x0000 0018 |
| -9 | 3 | Settable | SecureFault | Secure fault | 0x0000 001C |
| - | - | - | - | Reserved | 0x0000 0020 - 0x0000 0028 |
Table 140. Vector table (continued)
| Position | Priority | Type of priority | Acronym | Description | Address |
|---|---|---|---|---|---|
| -5 | 4 | Settable | SVCall | System service call via SWI instruction | 0x0000 002C |
| -4 | 5 | Settable | Debug monitor | Debug monitor | 0x0000 0030 |
| - | - | - | - | Reserved | 0x0000 0034 |
| -2 | 6 | Settable | PendSV | Pendable request for system service | 0x0000 0038 |
| -1 | 7 | Settable | SysTick | System tick timer | 0x0000 003C |
| 0 | 8 | Settable | - | Reserved | 0x0000 0040 |
| 1 | 9 | Settable | EXTI 16 (PVD) | EXTI line 16 interrupt, Power voltage monitor | 0x0000 0044 |
| 2 | 10 | Settable | RTC | RTC nonsecure global interrupts | 0x0000 0048 |
| 3 | 11 | Settable | RTC_S | RTC secure global interrupts | 0x0000 004C |
| 4 | 12 | Settable | TAMP | Tamper global interrupt | 0x0000 0050 |
| 5 | 13 | Settable | RAMCFG | RAM configuration global interrupt | 0x0000 0054 |
| 6 | 14 | Settable | FLASH | Flash nonsecure interface global interrupt Flash ECC single error correction interrupt | 0x0000 0058 |
| 7 | 15 | Settable | FLASH_S | Flash secure interface global interrupt | 0x0000 005C |
| 8 | 16 | Settable | GTZC1_TZIC | GTZC1_TZIC global interrupt | 0x0000 0060 |
| 9 | 17 | Settable | RCC | RCC nonsecure global interrupt | 0x0000 0064 |
| 10 | 18 | Settable | RCC_S | RCC secure global interrupt | 0x0000 0068 |
| 11 | 19 | Settable | EXTI0 (GPIO) | EXTI line- 0 interrupt, GPIO 0 | 0x0000 006C |
| 12 | 20 | Settable | EXTI1 (GPIO) | EXTI line 1 interrupt, GPIO 1 | 0x0000 0070 |
| 13 | 21 | Settable | EXTI2 (GPIO) | EXTI line 2 interrupt, GPIO 2 | 0x0000 0074 |
| 14 | 22 | Settable | EXTI3 (GPIO) | EXTI line3 interrupt , GPIO 3 | 0x0000 0078 |
| 15 | 23 | Settable | EXTI4 (GPIO) | EXTI line 4 interrupt, GPIO 4 | 0x0000 007C |
| 16 | 24 | Settable | EXTI5 (GPIO) | EXTI line 5 interrupt, GPIO 5 | 0x0000 0080 |
| 17 | 25 | Settable | EXTI6 (GPIO) | EXTI line 6 interrupt, GPIO 6 | 0x0000 0084 |
| 18 | 26 | Settable | EXTI7 (GPIO) | EXTI line 7 interrupt, GPIO 7 | 0x0000 0088 |
| 19 | 27 | Settable | EXTI8 (GPIO) | EXTI line 8 interrupt, GPIO 8 | 0x0000 008C |
| 20 | 28 | Settable | EXTI9 (GPIO) | EXTI line 9 interrupt, GPIO 9 | 0x0000 0090 |
| 21 | 29 | Settable | EXTI10 (GPIO) | EXTI line 10 interrupt, GPIO 10 | 0x0000 0094 |
| 22 | 30 | Settable | EXTI11 (GPIO) | EXTI line 11 interrupt, GPIO 11 | 0x0000 0098 |
| 23 | 31 | Settable | EXTI12 (GPIO) | EXTI line 12 interrupt, GPIO 12 | 0x0000 009C |
| 24 | 32 | Settable | EXTI13 (GPIO) | EXTI line 13 interrupt, GPIO 13 | 0x0000 00A0 |
| 25 | 33 | Settable | EXTI14 (GPIO) | EXTI line 14 interrupt, GPIO 14 | 0x0000 00A4 |
| 26 | 34 | Settable | EXTI15 (GPIO) | EXTI line 15 interrupt, GPIO 15 | 0x0000 00A8 |
Table 140. Vector table (continued)
| Position | Priority | Type of priority | Acronym | Description | Address |
|---|---|---|---|---|---|
| 27 | 35 | Settable | IWDG | Independent watchdog interrupt | 0x0000 00AC |
| 28 | 36 | Settable | LPDMA1_CH0 | LPDMA1 channel 0 global interrupt | 0x0000 00B0 |
| 29 | 37 | Settable | LPDMA1_CH1 | LPDMA1 channel 1 global interrupt | 0x0000 00B4 |
| 30 | 38 | Settable | LPDMA1_CH2 | LPDMA1 channel 2 global interrupt | 0x0000 00B8 |
| 31 | 39 | Settable | LPDMA1_CH3 | LPDMA1 channel 3 global interrupt | 0x0000 00BC |
| 32 | 40 | Settable | LPDMA1_CH4 | LPDMA1 channel 4 global interrupt | 0x0000 00C0 |
| 33 | 41 | Settable | LPDMA1_CH5 | LPDMA1 channel 5 global interrupt | 0x0000 00C4 |
| 34 | 42 | Settable | LPDMA1_CH6 | LPDMA1 channel 6 global interrupt | 0x0000 00C8 |
| 35 | 43 | Settable | LPDMA1_CH7 | LPDMA1 channel 7 global interrupt | 0x0000 00CC |
| 36 | 44 | Settable | OTFDEC1 (1) | OTFDEC1 global interrupt | 0x0000 00D0 |
| 37 | 45 | Settable | - | Reserved | 0x0000 00D4 |
| 38 | 46 | Settable | - | Reserved | 0x0000 00D8 |
| 39 | 47 | Settable | - | Reserved | 0x0000 00DC |
| 40 | 48 | Settable | TIM2 | TIM2 global interrupt | 0x0000 00E0 |
| 41 | 49 | Settable | I2C1_EV | I2C1 event interrupt | 0x0000 00E4 |
| 42 | 50 | Settable | I2C1_ER | I2C1 error interrupt | 0x0000 00E8 |
| 43 | 51 | Settable | USART1 | USART1 global interrupt | 0x0000 00EC |
| 44 | 52 | Settable | LPUART1 | LPUART1 global interrupt | 0x0000 00F0 |
| 45 | 53 | Settable | LPTIM1 | LPTIM1 global interrupt | 0x0000 00F4 |
| 46 | 54 | Settable | LPTIM2 | LPTIM2 global interrupt | 0x0000 00F8 |
| 47 | 55 | Settable | TIM16 | TIM16 global interrupt | 0x0000 00FC |
| 48 | 56 | Settable | TIM17 | TIM17 global interrupt | 0x0000 0100 |
| 49 | 57 | Settable | I2C3_EV | I2C3 event interrupt | 0x0000 0104 |
| 50 | 58 | Settable | I2C3_ER | I2C3 error interrupt | 0x0000 0108 |
| 51 | 59 | Settable | SAI1 | SAI global interrupt | 0x0000 010C |
| 52 | 60 | Settable | AES | AES global interrupt | 0x0000 0110 |
| 53 | 61 | Settable | RNG | RNG global interrupt | 0x0000 0114 |
| 54 | 62 | Settable | FPU | Floating point interrupt | 0x0000 0118 |
| 55 | 63 | Settable | HASH | HASH global interrupt | 0x0000 011C |
| 56 | 64 | Settable | PKA | PKA global interrupt | 0x0000 0120 |
| 57 | 65 | Settable | SPI3 | SPI3 global interrupt | 0x0000 0124 |
| 58 | 66 | Settable | ICACHE | ICACHE global interrupt | 0x0000 0128 |
| 59 | 67 | Settable | ADC4 | ADC4 global interrupt | 0x0000 012C |
Table 140. Vector table (continued)
| Position | Priority | Type of priority | Acronym | Description | Address |
|---|---|---|---|---|---|
| 60 | 68 | Settable | RADIO | 2.4 GHz RADIO global interrupt | 0x0000 0130 |
| 61 | 69 | Settable | WKUP | PWR nonsecure global WKUP pin interrupt | 0x0000 0134 |
| 62 | 70 | Settable | WKUP_S | PWR secure global WKUP pin interrupt | 0x0000 0138 |
| 63 | 71 | Settable | RCC_AUDIOSY NC | RCC audio synchronization interrupt | 0x0000 013C |
| 64 | 72 | Settable | USB (1) | USB global interrupt | 0x0000 0140 |
| 65 | 73 | Settable | XSPI1 (1) | XSPI1 global interrupt | 0x0000 0144 |
1. Only available on STM32WBA25xx devices