15.4 Specifying the Interrupt Vector

All 32-bit MCU devices have a primary interrupt vector table (IVT) at a default location. Some 32-bit MCU devices allow the IVT to be relocated/remapped using the IVTBASE register, some allow the IVT to be collapsed so that all peripheral interrupts are directed to a single trap vector, and some allow both (see Interrupt Vector Table.)

Note: A device Reset is not handled through the interrupt vector table. Instead, on device Reset, the program counter is refreshed from the Reset Vector. This causes execution to restart. By convention, the linker script constructs an either a GOTO statement or creates the Reset Vector to the C run-time startup module.

For relocated IVTs, the interrupt vector will be allocated automatically by the linker to the correct IVT if standard naming convention is used. For example:

  • function _T1Interrupt() would be assigned to the default table, named _ivt_0
  • function _T1Interrupt_2() would be assigned to a table named _ivt_2
  • function _PWM1Interrupt() would be assigned to both _ivt_0 and _ivt_2

When an interrupt function is defined, it appears in all IVTs, unless a number-specific version of that function has also been defined.