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 # | Offset | Name | Description | Priority | 
|---|
External Interrupts (IRQs)
| IRQ # | Vector # | Offset | Handler | Description | Priority | NVIC Addr | Actions | 
|---|
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:
- Select Configuration: Choose Cortex-M series, vendor, and number of IRQs
 - Add Handlers: Define ISR handlers with names, IRQ numbers, and priorities
 - Review Table: View the complete vector table with system exceptions and IRQs
 - Check NVIC Mapping: See which NVIC registers control each interrupt
 - 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()