Changer la fréquence PWM d'un arduino DUE

Un autre exemple plus clair éventuellement (PWMH0 à 1 MHz):

/******************************************************************************/
/*                         PWMH0 1 MHz                                        */
/******************************************************************************/

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);

  PMC->PMC_PCER1 |= PMC_PCER1_PID36;                   // PWM power ON

  PIOC->PIO_PDR |= PIO_PDR_P3;                         // Set pin to a peripheral
  PIOB->PIO_ABSR |= PIO_PC3B_PWMH0;                    // Set PWM pin peripheral type B for PWMH0 (Arduino pin 35)

  PWM->PWM_CLK = PWM_CLK_PREB(0) | PWM_CLK_DIVB(2);   // select Frequency : Mck/2 = 42 MHz

  PWM->PWM_CH_NUM[0].PWM_CMR = PWM_CMR_CPRE_CLKB;      // The period is left aligned, clock source as CLKB on channel 0
  PWM->PWM_CH_NUM[0].PWM_CPRD = 42;                    // Set the PWM frequency 42 MHz/42 = 1 MHz
  PWM->PWM_CH_NUM[0].PWM_CDTY = 20;                    // Set the PWM duty cycle to (CDTY/CPRD) * 100 %

  PWM->PWM_IER1 = PWM_IER1_CHID0;                      // Interrupt on Channel 0 counter
  NVIC_EnableIRQ(PWM_IRQn);                            // Enable interrupt

  PWM->PWM_ENA = PWM_ENA_CHID0;                        // Enable PWM channel 0
}

void loop() {

}

void PWM_Handler() {
  static uint32_t Count;
  PWM->PWM_ISR1;      // Clear status register
  if (Count++ == 1000000) {
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));   // Toggle pin every 1 Hz
    Count = 0;
  }
}