Faster Routine

You can set or clear a pin inside a Timer Counter interrupt Handler used to output a PWM signal, but don't set a PWM frequency much higher than 1.5 MHz because the interrupt takes some time to proceed, e.g.:

/*******************************************************************************/
/*                TIOA7 Frequency = 1.5 MHz over pin 3                          */
/*******************************************************************************/

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  PMC->PMC_PCER1 |= PMC_PCER1_PID34;                     // TC7 power ON - Timer Counter 2 channel 1 IS TC7 - See page 38

  PIOC->PIO_PDR |= PIO_PDR_P28;                          // The pin is no more driven by GPIO
  PIOC->PIO_ABSR |= PIO_PC28B_TIOA7;                     // Periperal type B  - See page 859

  TC2->TC_CHANNEL[1].TC_CMR = TC_CMR_TCCLKS_TIMER_CLOCK1  // MCK/2, clk on rising edge
                              | TC_CMR_WAVE               // Waveform mode
                              | TC_CMR_WAVSEL_UP_RC        // UP mode with automatic trigger on RC Compare
                              | TC_CMR_ACPA_CLEAR          // Clear TIOA7 on RA compare match  -- See page 883
                              | TC_CMR_ACPC_SET;           // Set TIOA7 on RC compare match

  TC2->TC_CHANNEL[1].TC_RC = 28;  //<*********************  Frequency = (Mck/128)/TC_RC  Hz = 1.5 MHz
  TC2->TC_CHANNEL[1].TC_RA = 14;  //<********************   Duty cycle = (TC_RA/TC_RC) * 100  %

  TC2->TC_CHANNEL[1].TC_IER = TC_IER_CPAS | TC_IER_CPCS;   // Interrupt on RA and RC compare matchs
  NVIC_EnableIRQ(TC7_IRQn);

  TC2->TC_CHANNEL[1].TC_CCR = TC_CCR_SWTRG | TC_CCR_CLKEN; // Software trigger TC7 counter and enable

}

void TC7_Handler() {
  static uint32_t Count;

  uint32_t status = TC2->TC_CHANNEL[1].TC_SR;

  if (status & TC_SR_CPCS) {
    // Todo : Clear a data pin
  }
  else { // if (status & TC_SR_CPA
    // Todo: Set  a data pin
  }

  Count++;
  if (Count == 1500000) {
    Count = 0;
    digitalWrite(LED_BUILTIN, ! digitalRead(LED_BUILTIN));
  }
}
void loop() {

}