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 145. 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
wwdg1_it70WWDG1Window 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
Table 145. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
exti_exti3_wkup169EXTI3EXTI Line 3 interrupt0x0000 0064
exti_exti4_wkup1710EXTI4EXTI Line 4 interrupt0x0000 0068
dma1_it01811DMA_STR0DMA1 Stream0 global interrupt0x0000 006C
dma1_it11912DMA_STR1DMA1 Stream1 global interrupt0x0000 0070
dma1_it22013DMA_STR2DMA1 Stream2 global interrupt0x0000 0074
dma1_it32114DMA_STR3DMA1 Stream3 global interrupt0x0000 0078
dma1_it42215DMA_STR4DMA1 Stream4 global interrupt0x0000 007C
dma1_it52316DMA_STR5DMA1 Stream5 global interrupt0x0000 0080
dma1_it62417DMA_STR6DMA1 Stream6 global interrupt0x0000 0084
adc1_it2518ADC1_2ADC1 and ADC2 global interrupt0x0000 0088
adc2_it
ttfdcan_intr0_it2619FDCAN1_IT0FDCAN1 Interrupt 00x0000 008C
fdcan_intr0_it2720FDCAN2_IT0FDCAN2 Interrupt 00x0000 0090
ttfdcan_intr1_it2821FDCAN1_IT1FDCAN1 Interrupt 10x0000 0094
fdcan_intr1_it2922FDCAN2_IT1FDCAN2 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_it3427TIM_CCTIM1 capture / compare interrupt0x0000 00AC
tim2_it3528TIM2TIM2 global interrupt0x0000 00B0
tim3_it3629TIM3TIM3 global interrupt0x0000 00B4
tim4_it3730TIM4TIM4 global interrupt0x0000 00B8
Table 145. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
i2c1_ev_it3831I2C1_EVI2C1 event interrupt0x0000 00BC
exti_i2c1_ev_wkup
i2c1_err_it3932I2C1_ERI2C1 error interrupt0x0000 00C0
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_it4740EXTI15_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
-4942--0x0000 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
Table 145. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
dma1_it75447DMA1_STR7DMA1 Stream7 global interrupt0x0000 00FC
fmc_gbl_it5548FMCFMC global interrupt0x0000 0100
sdmmc_it5649SDMMC1SDMMC global interrupt0x0000 0104
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_DACTIM6 global interrupt0x0000 0118
dac_unr_itDAC 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
eth_sbd_intr_it6861ETHEthernet global interrupt0x0000 0134
exti_eth_wkup6962ETH_WKUPEthernet wakeup through EXTI line interrupt0x0000 0138
fdcan_cal_it7063FDCAN_CALFDCAN calibration interrupts0x0000 013C
cm7_sev_it7164-Arm ® Cortex ® -M7 Send even interrupt0x0000 0140
NC7265--0x0000 0144
NC7366--0x0000 0148
NC7467--0x0000 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
Table 145. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
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
usb1_gbl_it8477OTG_HSOTG_HS global interrupt0x0000 0174
dcmi_it8578DCMIDCMI global interrupt0x0000 0178
cryp_it8679CRYPCRYP global interrupt0x0000 017C
hash_rng_it8780HASH_RNGHASH and RNG global interrupt0x0000 0180
cpu_fpu_it8881FPUCPU FPU0x0000 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
-9891SAI2SAI2 global interrupt0x0000 01AC
quadspi_it9992QUADSPIQuadSPI 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
Table 145. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
i2c4_err_it10396I2C4_ERI2C4 error interrupt0x0000 01C0
spdifrx_it10497SPDIFSPDIFRX global interrupt0x0000 01C4
usb2_out_it10598OTG_FS_EP1_OUTOTG_FS out global interrupt0x0000 01C8
usb2_in_it10699OTG_FS_EP1_INOTG_FS in global interrupt0x0000 01CC
exti_usb2_wkup107100OTG_FS_WKUPOTG_FS wakeup0x0000 01D0
usb2_gbl_it108101OTG_FSOTG_FS global interrupt0x0000 01D4
dmamux1_ovr_it109102DMAMUX1_OVDMAMUX1 overrun interrupt0x0000 01D8
hrtim1_mst_it110103HRTIM1_MSTHRTIM1 master timer interrupt0x0000 01DC
hrtim1_tima_it111104HRTIM1_TIMAHRTIM1 timer A interrupt0x0000 01E0
hrtim1_timb_it112105HRTIM_TIMBHRTIM1 timer B interrupt0x0000 01E4
hrtim1_timc_it113106HRTIM1_TIMCHRTIM1 timer C interrupt0x0000 01E8
hrtim1_timd_it114107HRTIM1_TIMDHRTIM1 timer D interrupt0x0000 01EC
hrtim1_time_it115108HRTIM_TIMEHRTIM1 timer E interrupt0x0000 01F0
hrtim1_fault_it116109HRTIM1_FLTHRTIM1 fault interrupt0x0000 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
sai3_gbl_it121114SAI3SAI3 global interrupt0x0000 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
-130---0x0000 022C
sdmmc2_it131124SDMMC2SDMMC global interrupt0x0000 0230
hsem1_it132125HSEM0HSEM global interrupt 10x0000 0234
-133---0x0000 0238
adc3_it134127ADC3ADC3 global interrupt0x0000 023C
Table 145. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
dmamux2_ovr_it135128DMAMUX2_OVRDMAMUX2 overrun interrupt0x0000 0240
bdma_ch0_it136129BDMA_CH0BDMA channel 0 interrupt0x0000 0244
bdma_ch1_it137130BDMA_CH1BDMA channel 1 interrupt0x0000 0248
bdma_ch2_it138131BDMA_CH2BDMA channel 2 interrupt0x0000 024C
bdma_ch3_it139132BDMA_CH3BDMA channel 3 interrupt0x0000 0250
bdma_ch4_it140133BDMA_CH4BDMA channel 4 interrupt0x0000 0254
bdma_ch5_it141134BDMA_CH5BDMA 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
lptim4_it147140LPTIM4LPTIM2 timer interrupt0x0000 0270
exti_lptim4_wkup
lptim5_it148141LPTIM5LPTIM2 timer interrupt0x0000 0274
exti_lptim5_wkup
lpuart_gbl_it149142LPUARTLPUART global interrupt0x0000 0278
exti_lpuart_rx_it
exti_lpuart_tx_it
exti_d1_wwdg1_wkup150143WWDG1_RSTWindow Watchdog interrupt0x0000 027C
crs_it151144CRSClock Recovery System global interrupt0x0000 0280
ramecc1_it152145RAMECC1ECC diagnostic global interrupt for RAMECC D10x0000 0284
ramecc2_itRAMECC2ECC diagnostic global interrupt for RAMECC D2
ramecc2_itRAMECC3ECC diagnostic global interrupt for RAMECC D3
-153146SAI4SAI4 global interrupt0x0000 0288
-154147--0x0000 028C
-155148--0x0000 0290
Table 145. NVIC (1) (continued)
SignalPriorityNVIC positionAcronymDescriptionAddress offset
exti_wkup1_wkup156149WKUPWKUP0 to WKUP5 pins0x0000 0294
exti_wkup2_wkup
exti_wkup3_wkup
exti_wkup4_wkup
exti_wkup5_wkup
exti_wkup6_wkup
  1. 1. When different signals are connected to the same NVIC interrupt line, they are OR-ed.