5.9.1. Vector Table and Reset

The vector table at location 0 is only required to have four values:

When interrupts are enabled, the vector table regardless of location, points to all mask-enabled exceptions. Also, the SVCall ISR location is populated if the SVC instruction is used.

An example of a full vector table:

unsigned int stack_base[STACK_SIZE];
void ResetISR(void);
void NmiISR(void);
ISR_VECTOR_TABLE vector_table_at_0
{
  stack_base + sizeof(stack_base),
  ResetISR,
  NmiSR,
FaultISR,
0,			// Populate if using MemManage (MPU)
0, 			// Populate if using Bus fault
0,			// Populate if using Usage Fault
0, 0, 0, 0,	 	// reserved slots
SVCallISR,
0,			// Populate if using a debug monitor
0,			// Reserved
0,			// Populate if using pendable service request
0,			// Populate if using SysTick
// external interrupts start here
  Timer1ISR,
  GpioInISR
  GpioOutISR,
  I2CIsr
};
Copyright © 2005, 2006 ARM Limited. All rights reserved.ARM DDI 0337E
Non-Confidential