(XC32) How do I write a Interrupt Service Routine (ISR) for a particular interrupt vector for PIC32 devices using ISR macros?

In MPLAB® XC32, Interrupt Service Routines (ISRs) can be written using the following macros:

  • __ISR

The __ISR macro will assign the vector-number location to a specific Interrupt Priority Level (IPL). This will place a jump to the interrupt handler at the associated vector location.


The __ISR_AT_VECTOR(v, IPL) will place the entire interrupt handler at the vector location and associate it with the software-assigned interrupt priority. Software should make sure that the vector spacing is set to accommodate the size of the handler.


The attribs.h header file contains macro definitions for __ISR and __ISR_AT_VECTOR. Macro for interrupt vector number can be found in device specific header file under the folder <Compiler-DIR>/pic32mx/include/proc.

© 2024 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.