11. Nested vectored interrupt controller (NVIC)
11.1 Main features
- • Up to 39 maskable interrupt channels (see Table 53 ). These do not include the 16 interrupt lines of Cortex ® -M0+.
- • 4 programmable priority levels (2 bits of interrupt priority are 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, 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 the STM32L0 Series Cortex ® -M0+ programming manual (PM0223).
For code example, refer to A.7.1: NVIC initialization example .
11.2 SysTick calibration value register
The SysTick calibration value is fixed to 4000, which gives a reference time base of 1 ms with the SysTick clock set to 4 MHz (max HCLK/8).
11.3 Interrupt and exception vectors
Table 53 is the vector table for STM32L0x1 devices.
Table 53. List of vectors (1)(2)
| Position | Priority | Type of priority | Acronym | Description | Address |
|---|---|---|---|---|---|
| - | - | - | Reserved | 0x0000_0000 | |
| -3 | fixed | Reset | Reset | 0x0000_0004 | |
| -2 | fixed | NMI_Handler | Non maskable interrupt. The RCC Clock Security System (CSS) is linked to the NMI vector. | 0x0000_0008 | |
| -1 | fixed | HardFault_Handler | All class of fault | 0x0000_000C | |
| - | - | - | Reserved | 0x0000_0010 - 0x0000_002B | |
| 3 | settable | SVC_Handler | System service call via SWI instruction | 0x0000_002C | |
| - | - | - | Reserved | 0x0000_0030 - 0x0000_0037 | |
| 5 | settable | PendSV_Handler | Pendable request for system service | 0x0000_0038 | |
| 6 | settable | SysTick_Handler | System tick timer | 0x0000_003C |
| Position | Priority | Type of priority | Acronym | Description | Address |
|---|---|---|---|---|---|
| 0 | 7 | settable | WWDG | Window Watchdog interrupt | 0x0000_0040 |
| 1 | 8 | settable | PVD | PVD through EXTI Line detection interrupt | 0x0000_0044 |
| 2 | 9 | settable | RTC | RTC global interrupt through EXTI17/19/20 line and LSE CSS interrupt through EXTI 19 line | 0x0000_0048 |
| 3 | 10 | settable | FLASH | Flash memory and data EEPROM global interrupt | 0x0000_004C |
| 4 | 11 | settable | RCC_CRS | RCC global interrupt | 0x0000_0050 |
| 5 | 12 | settable | EXTI[1:0] | EXTI Line0 and 1 interrupts | 0x0000_0054 |
| 6 | 13 | settable | EXTI[3:2] | EXTI Line2 and 3 interrupts | 0x0000_0058 |
| 7 | 14 | settable | EXTI[15:4] | EXTI Line4 to 15 interrupts | 0x0000_005C |
| 8 | 15 | settable | - | Reserved | 0x0000_0060 |
| 9 | 16 | settable | DMA1_Channel1 | DMA1 Channel1 global interrupt | 0x0000_0064 |
| 10 | 17 | settable | DMA1_Channel[3:2] | DMA1 Channel2 and 3 interrupts | 0x0000_0068 |
| 11 | 18 | settable | DMA1_Channel[7:4] | DMA1 Channel4 to 7 interrupts | 0x0000_006C |
| 12 | 19 | settable | ADC_COMP | ADC and comparator interrupts through EXTI21 and 22 | 0x0000_0070 |
| 13 | 20 | settable | LPTIM1 | LPTIMER1 interrupt through EXTI29 | 0x0000_0074 |
| 14 | 21 | settable | USART4/USART5 | USART4/USART5 global interrupt | 0x0000_0078 |
| 15 | 22 | settable | TIM2 | TIMER2 global interrupt | 0x0000_007C |
| 16 | 23 | settable | TIM3 | TIMER3 global interrupt | 0x0000_0080 |
| 17 | 24 | settable | TIM6 | TIMER6 global interrupt | 0x0000_0084 |
| 18 | 25 | settable | TIM7 | TIMER7 global interrupt | 0x0000_0088 |
| 19 | 26 | settable | - | reserved | 0x0000_008C |
| 20 | 27 | settable | TIM21 | TIMER21 global interrupt | 0x0000_0090 |
| 21 | 28 | settable | I2C3 | I2C3 global interrupt | 0x0000_0094 |
| 22 | 29 | settable | TIM22 | TIMER22 global interrupt | 0x0000_0098 |
| 23 | 30 | settable | I2C1 | I2C1 global interrupt through EXTI23 | 0x0000_009C |
| 24 | 31 | settable | I2C2 | I2C2 global interrupt | 0x0000_00A0 |
| 25 | 32 | settable | SPI1 | SPI1 global interrupt | 0x0000_00A4 |
| 26 | 33 | settable | SPI2 | SPI2 global interrupt | 0x0000_00A8 |
| 27 | 34 | settable | USART1 | USART1 global interrupt through EXTI25 | 0x0000_00AC |
| Position | Priority | Type of priority | Acronym | Description | Address |
|---|---|---|---|---|---|
| 28 | 35 | settable | USART2 | USART2 global interrupt through EXTI26 | 0x0000_00B0 |
| 29 | 36 | settable | LPUART1 + AES | LPUART1 global interrupt through EXTI28 + AES global interrupt | 0x0000_00B4 |
1. The grayed cells correspond to the Cortex®-M0+ interrupts.
2. Refer to Table 1: STM32L0x1 memory density , to Table 2: Overview of features per category and to the device datasheets for the GPIO ports and peripherals available on your device. The memory area corresponding to unavailable GPIO ports or peripherals are reserved.