Hi
These functions are designed to do the same thing but the sleep() function has a number of advantages (e.g. disabling systick) which can cause issues
// RTCZero.cpp
void RTCZero::standbyMode()
{
// Entering standby mode when connected
// via the native USB port causes issues.
SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
__DSB();
__WFI();
}
// ArduinoLowPower.cpp
void ArduinoLowPowerClass::sleep() {
bool restoreUSBDevice = false;
if (SERIAL_PORT_USBVIRTUAL) {
USBDevice.standby();
} else {
USBDevice.detach();
restoreUSBDevice = true;
}
// Disable systick interrupt: See https://www.avrfreaks.net/forum/samd21-samd21e16b-sporadically-locks-and-does-not-wake-standby-sleep-mode
SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk;
SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
__DSB();
__WFI();
// Enable systick interrupt
SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk;
if (restoreUSBDevice) {
USBDevice.attach();
}
}
Thanks