#include <xc.h>
#include <sys/attribs.h>

/* Config bits */
#pragma config FSRSSEL = PRIORITY_7     /* Assign the SRS to level 7 priority handlers */

/* Define a Timer 2 ISR function at IPL level 7 that uses a shadow register set */

void __ISR (_TIMER_2_VECTOR, IPL7SRS) T2Interrupt(void)
{
    // Do some useful work

    // Reset interrupt flag
    IFS0bits.T2IF = 0;
}

/* Application begins here */
int main(void)
{
    // Initialize Timer 2 peripheral
    ...
    // Set Timer 2 interrupt priority to 7
        IPC2bits.T2IP = 7;                

    // Reset the Timer 2 interrupt flag
        IFS0bits.T2IF = 0;

    // Enable interrupts from Timer 2
        IEC0bits.T2IE = 1;

    // Interrupt Controller
    INTCONSET = _INTCON_MVEC_MASK;    /* enable interrupt controller for multi-vector mode */
    __builtin_enable_interrupts();            /* atomic enable CP0 Status(IE) flag */

    while(1)
    {
        mainTasks();                /* main application loop */
    }
}