20.7.1.2.1 Code

Copy-paste the following code to your user application:
#if SAML21
    /* Check if the RESET is caused by external wakeup pin */
    if (system_get_reset_cause() == SYSTEM_RESET_CAUSE_BACKUP
        && system_get_backup_exit_source() == SYSTEM_RESET_BACKKUP_EXIT_EXTWAKE
        && (system_get_pin_wakeup_cause() & (1 << CONF_EXT_WAKEUP_PIN))
        ) {
        system_init();
        delay_init();
        config_clock_output_and_extwake_pin();
        /* Now GCLK0/GCLK1 are running at 4MHz , using LED0 ON/OFF as an indication */
        led_toggle_indication(4);
        port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);
        while(1);
    }
#endif


    /* Disable I/O retention*/
    system_io_retension_disable();

    system_init();
    delay_init();

    port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);

    /* Config GCLK0/GCLK1 output pin and extwakeup pin */
    config_clock_output_and_extwake_pin();

    /* Config external interrupt for wakeup system from standby mode*/
    configure_extint_channel();
    delay_s(1);

    /* Turn off LED0 before enter standby mode */
    port_pin_set_output_level(LED_0_PIN, LED_0_INACTIVE);

    /* Set and enter standby mode, using default stanby config */
    system_set_sleepmode(SYSTEM_SLEEPMODE_STANDBY);
    system_sleep();

    /* Detect BUTTON pressed and system  wakeup from standby mode,
        turn on led */
    port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);

    /* Disable external interrupt to avoid any impact */
    extint_chan_disable_callback(BUTTON_0_EIC_LINE,
                EXTINT_CALLBACK_TYPE_DETECT);
    extint_chan_clear_detected(BUTTON_0_EIC_LINE);

    /* Switch GCLK0 to 48MHz */
    performance_level_switch_test();

    /* GCLK0 is runing at 48MHz and GCLK1 is running at 4MHz ,
        use led ON/OFF as an indication */
    led_toggle_indication(2);

#if SAML21
    /* Set external wakeup pin polarity */
    system_set_pin_wakeup_polarity_low(1<<CONF_EXT_WAKEUP_PIN);

    /* Set external wakeup detector */
    system_enable_pin_wakeup(1<<CONF_EXT_WAKEUP_PIN);
    system_set_pin_wakeup_debounce_counter(SYSTEM_WAKEUP_DEBOUNCE_2CK32);

    /* Enter BACKUP mode */
    system_set_sleepmode(SYSTEM_SLEEPMODE_BACKUP);
    system_sleep();

    /* Now system is in BACKUP mode and wait for extwakeup pin to low */
#endif