ARM Cortex-M Interrupt Vector Table Generator - NVIC Configuration Tool

Build and export ARM Cortex-M vector tables interactively. Configure ISRs, set priorities, generate assembly and C code, view NVIC register mappings. Perfect for prototyping exception handlers without compiling.

Configuration

Add Exception/IRQ Handler

Vector Table

System Exceptions

Exception #OffsetNameDescriptionPriority

External Interrupts (IRQs)

IRQ #Vector #OffsetHandlerDescriptionPriorityNVIC AddrActions

NVIC Register Mapping

Enable Registers (ISER)

Priority Registers (IPR)

Export Code

About ARM Cortex-M IVT Generator

A powerful tool for ARM Cortex-M developers to build and export interrupt vector tables (IVT) with exception handlers, priorities, and NVIC register mappings. Perfect for prototyping startup code without needing to compile.

Features:

  • Support for Cortex-M0, M0+, M3, M4, M7, M33, M55
  • Configure system exceptions and external interrupts
  • Set interrupt priorities (0-15)
  • Visual vector table with offsets and addresses
  • NVIC register mapping (ISER, ICER, IPR)
  • Export to Assembly (.s), C (.c), Linker Script (.ld)
  • Generate CMSIS-compatible initialization code
  • JSON export for further processing
  • Vendor-specific templates (STM32, Nordic, Microchip, NXP)
  • Calculate NVIC register addresses automatically

How to Use:

  1. Select Configuration: Choose Cortex-M series, vendor, and number of IRQs
  2. Add Handlers: Define ISR handlers with names, IRQ numbers, and priorities
  3. Review Table: View the complete vector table with system exceptions and IRQs
  4. Check NVIC Mapping: See which NVIC registers control each interrupt
  5. Export Code: Generate assembly, C, or linker script for your project

ARM Cortex-M Vector Table Structure:

Offset Exception # Handler 0x0000 - Initial SP value 0x0004 1 Reset_Handler 0x0008 2 NMI_Handler 0x000C 3 HardFault_Handler 0x0010 4 MemManage_Handler (M3+) 0x0014 5 BusFault_Handler (M3+) 0x0018 6 UsageFault_Handler (M3+) ... 0x0040 16 IRQ0_Handler (first external interrupt)

NVIC Registers:

  • ISER (Interrupt Set-Enable): Enable interrupts (0xE000E100 + n*4)
  • ICER (Interrupt Clear-Enable): Disable interrupts (0xE000E180 + n*4)
  • IPR (Interrupt Priority): Set priority (0xE000E400 + n)
  • ISPR/ICPR: Set/Clear pending bits
  • IABR: Active bit registers (read-only)

Priority Grouping:

Cortex-M processors support configurable priority grouping via SCB->AIRCR[10:8] (PRIGROUP). This determines how the priority byte is split into preemption priority and sub-priority. Most applications use group priority 0 (all bits for preemption).

Common Use Cases:

  • Startup Code: Generate vector table for new Cortex-M projects
  • Learning: Understand ARM exception handling architecture
  • Prototyping: Test ISR configurations before compiling
  • Documentation: Create visual interrupt documentation
  • Porting: Migrate vector tables between vendors/devices
  • Debugging: Verify NVIC register addresses and priorities

Tips:

  • System exceptions (-3 to 15) have fixed vector positions
  • External interrupts (IRQ0-IRQn) start at vector 16 (offset 0x0040)
  • Lower priority numbers = higher priority (0 is highest)
  • Each ISER/ICER register controls 32 interrupts (bit per IRQ)
  • IPR registers pack 4 priorities per 32-bit word (1 byte each)
  • Use default handler for unused interrupts (infinite loop or reset)
  • The Reset_Handler should initialize .data/.bss before calling main()