This is an old revision of the document!


Nested Vectored Interrupt Controller

The NVIC manages all the interrupts and is closely coupled to the processor core.
A list of all available interrupts: interrupt table.




  • 91 maskable interrupt channels.
  • 16 programmable priority levels.
  • low-latency exceptions and interrupt handling.


For external interrupts via GPIO pins go to the EXTI page.

#include "reg_stm32f4xx.h"
 
RCC->APB1ENR |= (0x1 << 0u);          /* Enable TIM2 clock. */
 
/* configure timer */
TIM2->PSC = 84000u - 1u;              /* Counting with f = 84MHz / 84000 = 1MHz */
TIM2->ARR = 512u;                     /* Count to 512 */
TIM2->DIER |= (0x1 << 0u);            /* Enable IRQ */
 
TIM2->CR1 |= (0x1 << 0u);             /* Start timer */


#include "reg_stm32f4xx.h"
 
NVIC->ISER[0] |= (0x1 << 28u);        /* Enable TIM2 global interrupt. */


Table of interrupt numbers: IRQ numbers.

ISER0

Interrupt set enable register 1




ISER1

Interrupt set enable register 2




ISER2

Interrupt set enable register 3




SETENA*1Enable interrupt (unmask interrupt)

*Setting this bit to 0 has no effect, refer to ICER

ICER0

Interrupt clear enable register 1




ICER1

Interrupt clear enable register 2




ICER2

Interrupt clear enable register 3




CLRENA*1Disable interrupt (mask interrupt)

*Setting this bit to 0 has no effect, refer to ISER

  • stm32/peripherals/nvic.1480427427.txt.gz
  • Last modified: 2016/11/29 13:50
  • by kesr