19. Nested vectored interrupt controller (NVIC)

19.1 NVIC features

The NVIC includes the following features:

The NVIC and the processor core interface are closely coupled, which enables low latency interrupt processing and efficient processing of late arriving interrupts.

All interrupts, including the core exceptions, are managed by the NVIC.

For more information on exceptions and NVIC programming, refer to PM0253 programming manual for Cortex®-M7.

19.1.1 SysTick calibration value register

The SysTick calibration value (SYST_CALIB) is fixed to 0x3E8. It provides a reference timebase of 1 ms based when the SysTick clock frequency is 1 MHz. To match the 1 ms timebase whatever the application frequency, the SysTick reload value must be programmed as follows in the SYST_RVR register:

\[ \text{reload value} = (F_{\text{HCLK}} \times \text{SYST\_CALIB}) - 1 \]

\[ \text{reload value} = ((F_{\text{HCLK}} / 8) \times \text{SYST\_CALIB}) - 1 \]

where \( F_{\text{HCLK}} \) refers to the AHB frequency expressed in MHz.

For example, to achieve a timebase of 1 ms when the SysTick clock source is the 100 MHz HCLK:

\[ \text{reload value} = (100 \times \text{SYST\_CALIB}) - 1 = 0x1869F \]

19.1.2 Interrupt and exception vectors

The exception vectors connected to the NVIC are the following: reset, NMI, HardFault, MemManage, Bus Fault, UsageFault, SVCall, DebugMonitor, PendSV, SysTick.

Table 125. NVIC (1)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
----Reserved0x0000 0000
--3-ResetReset0x0000 0004
--2-NMINon maskable interrupt. The RCC Clock Security System (CSS) is linked to the NMI vector.0x0000 0008
--1-HardFaultAll classes of fault0x0000 000C
-0-MemManageMemory management0x0000 0010
-1-BusFaultPrefetch fault, memory access fault0x0000 0014
-2-UsageFaultUndefined instruction or illegal state0x0000 0018
----Reserved0x0000 001C-
0x0000 002B
-3-SVCallSystem service call via SWI instruction0x0000 002C
-4-DebugMonitorDebug monitor0x0000 0030
----Reserved0x0000 0034
-5-PendSVPendable request for system service0x0000 0038
-6-SysTickSystem tick timer0x0000 003C
wwdg_it70WWDGWindow Watchdog interrupt0x0000 0040
exti_pwr_pvd_wkup81PVD_PVMPVD through EXTI line detection interrupt0x0000 0044
exti_tamp_rtc_wkup92RTC_TAMP_STAMP_
CSS_LSE
RTC tamper, timestamp0x0000 0048
lsecss_rcc_itCSS LSE
exti_wkup_rtc_wkup103RTC_WKUPRTC Wakeup interrupt through the EXTI line0x0000 004C
flash_it114FLASHFlash memory global interrupt0x0000 0050
rcc_it125RCCRCC global interrupt0x0000 0054
exti_exti0_wkup136EXTI0EXTI Line 0 interrupt0x0000 0058
exti_exti1_wkup147EXTI1EXTI Line 1 interrupt0x0000 005C
exti_exti2_wkup158EXTI2EXTI Line 2 interrupt0x0000 0060
exti_exti3_wkup169EXTI3EXTI Line 3 interrupt0x0000 0064
exti_exti4_wkup1710EXTI4EXTI Line 4 interrupt0x0000 0068
dma1_it01811DMA1_STR0DMA1 Stream0 global interrupt0x0000 006C
Table 125. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
dma1_it11912DMA1_STR1DMA1 Stream1 global interrupt0x0000 0070
dma1_it22013DMA1_STR2DMA1 Stream2 global interrupt0x0000 0074
dma1_it32114DMA1_STR3DMA1 Stream3 global interrupt0x0000 0078
dma1_it42215DMA1_STR4DMA1 Stream4 global interrupt0x0000 007C
dma1_it52316DMA1_STR5DMA1 Stream5 global interrupt0x0000 0080
dma1_it62417DMA1_STR6DMA1 Stream6 global interrupt0x0000 0084
adc1_it2518ADC1_2ADC1 and ADC2 global interrupt0x0000 0088
adc2_it
ttfdcan_intr0_it2619FDCAN1_IT0TT CAN Interrupt 00x0000 008C
fdcan_intr0_it2720FDCAN2_IT0FDCAN Interrupt 00x0000 0090
ttfdcan_intr1_it2821FDCAN1_IT1TT CAN Interrupt 10x0000 0094
fdcan_intr1_it2922FDCAN2_IT1FDCAN Interrupt 10x0000 0098
exti_exti5_wkup3023EXTI9_5EXTI Line[9:5] interrupts0x 0000 009C
exti_exti6_wkup
exti_exti7_wkup
exti_exti8_wkup
exti_exti9_wkup
tim1_brk_it3124TIM1_BRKTIM1 break interrupt0x0000 00A0
tim1_upd_it3225TIM1_UPTIM1 update interrupt0x0000 00A4
tim1_trg_it3326TIM1_TRG_COMTIM1 trigger and commutation interrupts0x0000 00A8
tim1_cc_it3427TIM1_CCTIM1 capture / compare interrupt0x0000 00AC
tim2_it3528TIM2TIM2 global interrupt0x0000 00B0
tim3_it3629TIM3TIM3 global interrupt0x0000 00B4
tim4_it3730TIM4TIM4 global interrupt0x0000 00B8
i2c1_ev_it3831I2C1_EVI2C1 event interrupt0x0000 00BC
exti_i2c1_ev_wkup
i2c1_err_it3932I2C1_ERI2C1 error interrupt0x0000 00C0
Table 125. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
i2c2_ev_it4033I2C2_EVI2C2 event interrupt0x0000 00C4
exti_i2c2_ev_wkup
i2c2_err_it4134I2C2_ERI2C2 error interrupt0x0000 00C8
spi1_it4235SPI1SPI1 global interrupt0x0000 00CC
exti_spi1_it
spi2_it4336SPI2SPI2 global interrupt0x0000 00D0
exti_spi2_it
usart1_gbl_it4437USART1USART1 global interrupt0x0000 00D4
exti_usart1_wkup
usart2_gbl_it4538USART2USART2 global interrupt0x0000 00D8
exti_usart2_wkup
usart3_gbl_it4639USART3USART3 global interrupt0x0000 00DC
exti_usart3_wkup
exti_exti10_wkup4740EXTI15_10EXTI Line[15:10] interrupts0x0000 00E0
exti_exti11_wkup
exti_exti12_wkup
exti_exti13_wkup
exti_exti14_wkup
exti_exti15_wkup
exti_rtc_al4841RTC_ALARMRTC alarms (A and B) through EXTI Line interrupts0x0000 00E4
dfsdm2_it4942DFSDM2DFSDM2 interrupt0x0000 00E8
tim8_brk_it5043TIM8_BRK_TIM12TIM8 break and TIM12 global interrupts0x0000 00EC
tim12_gbl_it
tim8_upd_it5144TIM8_UP_TIM13TIM8 update and TIM13 global interrupts0x0000 00F0
tim13_gbl_it
tim8_trg_it5245TIM8_TRG_COM_TIM14TIM8 trigger /commutation and TIM14 global interrupts0x0000 00F4
tim14_gbl_it
tim8_cc_it5346TIM8_CCTIM8 capture / compare interrupts0x0000 00F8
dma1_it75447DMA1_STR7DMA1 Stream7 global interrupt0x0000 00FC
fmc_gbl_it5548FMCFMC global interrupt0x0000 0100
sdmmc_it5649SDMMC1SDMMC global interrupt0x0000 0104
Table 125. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
tim5_gbl_it5750TIM5TIM5 global interrupt0x0000 0108
spi3_it5851SPI3SPI3 global interrupt0x0000 010C
exti_spi3_wkup
uart4_gbl_it5952UART4UART4 global interrupt0x0000 0110
exti_uart4_wkup
uart5_gbl_it6053UART5UART5 global interrupt0x0000 0114
exti_uart5_wkup
tim6_gbl_it6154TIM6_DAC1TIM6 global interrupt0x0000 0118
dac1_unr_itDAC1 underrun error interrupt
tim7_gbl_it6255TIM7TIM7 global interrupt0x0000 011C
dma2_it06356DMA2_STR0DMA2 Stream0 interrupt0x0000 0120
dma2_it16457DMA2_STR1DMA2 Stream1 interrupt0x0000 0124
dma2_it26558DMA2_STR2DMA2 Stream2 interrupt0x0000 0128
dma2_it36659DMA2_STR3DMA2 Stream3 interrupt0x0000 012C
dma2_it46760DMA2_STR4DMA2 Stream4 interrupt0x0000 0130
----Reserved0x0000 0134
----Reserved0x0000 0138
fdcan_cal_it7063FDCAN_CALFDCAN calibration interrupts0x0000 013C
dfsdm1_it47164DFSDM1_FLT4DFSDM1 filter 4 interrupt0x0000 0140
dfsdm1_it57265DFSDM1_FLT5DFSDM1 filter 5 interrupt0x0000 0144
dfsdm1_it67366DFSDM1_FLT6DFSDM1 filter 6 interrupt0x0000 0148
dfsdm1_it77467DFSDM1_FLT7DFSDM1 filter 7 interrupt0x0000 014C
dma2_it57568DMA2_STR5DMA2 Stream5 interrupt0x0000 0150
dma2_it67669DMA2_STR6DMA2 Stream6 interrupt0x0000 0154
dma2_it77770DMA2_STR7DMA2 Stream7 interrupt0x0000 0158
usart6_gbl_it7871USART6USART6 global interrupt0x0000 015C
exti_usart6_wkupUSART6 wakeup interrupt
i2c3_ev_it7972I2C3_EVI2C3 event interrupt0x0000 0160
exti_i2c3_ev_wkup
i2c3_err_it8073I2C3_ERI2C3 error interrupt0x0000 0164
usb1_out_it8174OTG_HS_EP1_OUTOTG_HS out global interrupt0x0000 0168
usb1_in_it8275OTG_HS_EP1_INOTG_HS in global interrupt0x0000 016C
exti_usb1_wkup8376OTG_HS_WKUPOTG_HS wakeup interrupt0x0000 0170
Table 125. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
usb1_gbl_it8477OTG_HSOTG_HS global interrupt0x0000 0174
dcmi_it/pssi_it8578DCMI/PSSIDCMI/PSSI global interrupt0x0000 0178
cryp_it8679CRYPCRYP global interrupt0x0000 017C
hash_rng_it8780HASH_RNGHASH and RNG global interrupt0x0000 0180
cpu_fpu_it8881FPUCPU FPU interrupt0x0000 0184
uart7_gbl_it8982UART7UART7 global interrupt0x0000 0188
exti_uart7_wkup
uart8_gbl_it9083UART8UART8 global interrupt0x0000 018C
exti_uart8_wkup
spi4_it9184SPI4SPI4 global interrupt0x0000 0190
exti_spi4_wkup
spi5_it9285SPI5SPI5 global interrupt0x0000 0194
exti_spi5_wkup
spi6_it9386SPI6SPI6 global interrupt0x0000 0198
exti_spi6_wkup
sai1_it9487SAI1SAI1 global interrupt0x0000 019C
ltdc_it9588LTDCLCD-TFT global interrupt0x0000 01A0
ltdc_err_it9689LTDC_ERLCD-TFT error interrupt0x0000 01A4
dma2d_gbl_it9790DMA2DDMA2D global interrupt0x0000 01A8
sai2_it9891SAI2SAI2 global interrupt0x0000 01AC
octospi1_it9992OCTOSPI1OCTOSPI global interrupt0x0000 01B0
lptim1_it10093LPTIM1LPTIM1 global interrupt0x0000 01B4
exti_lptim_wkup
cec_it10194CECHDMI-CEC global interrupt0x0000 01B8
exti_cec_it
i2c4_ev_it10295I2C4_EVI2C4 event interrupt0x0000 01BC
exti_i2c4_ev_it
i2c4_err_it10396I2C4_ERI2C4 error interrupt0x0000 01C0
spdifrx_it10497SPDIFRXSPDIFRX global interrupt0x0000 01C4
----Reserved0x0000 01C8
----Reserved0x0000 01CC
----Reserved0x0000 01D0
----Reserved0x0000 01D4
Table 125. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
dmamux1_ovr_it109102DMAMUX1_OVDMAMUX1 overrun interrupt0x0000 01D8
----Reserved0x0000 01DC
----Reserved0x0000 01E0
----Reserved0x0000 01E4
----Reserved0x0000 01E8
----Reserved0x0000 01EC
----Reserved0x0000 01F0
----Reserved0x0000 01F4
dfsdm1_it0117110DFSDM1_FLT0DFSDM1 filter 0 interrupt0x0000 01F8
dfsdm1_it1118111DFSDM1_FLT1DFSDM1 filter 1 interrupt0x0000 01FC
dfsdm1_it2119112DFSDM1_FLT2DFSDM1 filter 2 interrupt0x0000 0200
dfsdm1_it3120113DFSDM1_FLT3DFSDM1 filter 3 interrupt0x0000 0204
----Reserved0x0000 0208
swpmi_gbl_it122115SWPMI1SWPMI global interrupt0x0000 020C
exti_swpmi_wupSWPMI wakeup
tim15_gbl_it123116TIM15TIM15 global interrupt0x0000 0210
tim16_gbl_it124117TIM16TIM16 global interrupt0x0000 0214
tim17_gbl_it125118TIM17TIM17 global interrupt0x0000 0218
exti_mdios_wkup126119MDIOS_WKUPMDIOS wakeup0x0000 021C
mdios_it127120MDIOSMDIOS global interrupt0x0000 0220
jpeg_it128121JPEGJPEG global interrupt0x0000 0224
mdma_it129122MDMAMDMA0x0000 0228
----Reserved0x0000 022C
sdmmc2_it131124SDMMC2SDMMC2 global interrupt0x0000 0230
hsem1_it132125HSEM0HSEM global interrupt 10x0000 0234
----Reserved0x0000 0238
dac2_unr_it134127DAC2DAC2 underrun interrupt0x0000 023C
dmamux2_ovr_it135128DMAMUX2_OVRDMAMUX2 overrun interrupt0x0000 0240
bdma2_ch0_it136129BDMA2_CH0BDMA2 channel 0 interrupt0x0000 0244
bdma2_ch1_it137130BDMA2_CH1BDMA2 channel 1 interrupt0x0000 0248
bdma2_ch2_it138131BDMA2_CH2BDMA2 channel 2 interrupt0x0000 024C
bdma2_ch3_it139132BDMA2_CH3BDMA2 channel 3 interrupt0x0000 0250
bdma2_ch4_it140133BDMA2_CH4BDMA2 channel 4 interrupt0x0000 0254
Table 125. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
bdma2_ch5_it141134BDMA2_CH5BDMA2 channel 5 interrupt0x0000 0258
bdma_ch6_it142135BDMA_CH6BDMA channel 6 interrupt0x0000 025C
bdma_ch7_it143136BDMA_CH7BDMA channel 7 interrupt0x0000 0260
comp_gbl_it144137COMPCOMP1 and COMP2 global interrupt0x0000 0264
exti_comp1_wkup
exti_comp2_wkup
lptim2_it145138LPTIM2LPTIM2 timer interrupt0x0000 0268
exti_lptim2_wkup
lptim3_it146139LPTIM3LPTIM2 timer interrupt0x0000 026C
exti_lptim3_wkup
uart9_it147140UART9UART9 global interrupt0x0000 0270
exti_uart9_wkup
usart10_it148141USART10USART10 global interrupt0x0000 0274
exti_usart10_wkup
lpuart_gbl_it149142LPUART1LPUART1 global interrupt0x0000 0278
exti_lpuart_rx_it
exti_lpuart_tx_it
----Reserved0x0000 027C
crs_it151144CRSClock Recovery System global interrupt0x0000 0280
ecc_it152145ECCECC diagnostic global interrupt0x0000 0284
----Reserved0x0000 0288
exti_dts_wkup154147DTS_ITTemperature sensor global interrupt0x0000 028C
dts_it
----Reserved0x0000 0290
exti_wkup1_wkup156149WKUPWKUP0 to WKUP5 pins0x0000 0294
exti_wkup2_wkup
exti_wkup3_wkup
exti_wkup4_wkup
exti_wkup5_wkup
exti_wkup6_wkup
octospi2_it157150OCTOSPI2OCTOSPI2 global interrupt0x0000 0298
otfdec1_sec_it158151OTFDEC1OTFDEC1 interrupt0x0000 029C
otfdec2_sec_it159152OTFDEC2OTFDEC2 interrupt0x0000 02A0
Table 125. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
gfxmmu_it160153GFXMMUGFXMMU interrupt0x0000 02A4
bdma1_it161154BDMA1BDMA1 global interrupt0x0000 02A8

1. When different signals are connected to the same NVIC interrupt line, they are OR-ed.