Вообще, в чем смысл режимов пониженного энергопотребления в STM32 и как происходит переход туда.
Переход в любой режим состоит из трех идейных составляющих:
- отключить ядро: это достигается инструкцией WFI или WFE. Если эти инструкции вызываются тогда, когда бит SLEEPDEEP не стоит, получается sleep. Если SLEEPDEEP в SCR стоит, получается deep sleep. Это все, что может дать нам ядро.
- надо отключить тактирование периферии. Это нам дает бит PDDS. Если он в нуле, то получается STOP (можно выйти по прерываниям, работает LSE, выполнение программы продолжается с инструкции, следующей за WFI/WFE), если в единице - standby (только пины wakeup, выход представляет собой сброс МК).
- по вкусу, перевести регулятор напряжения ядра в режим пониженного потребления. Это делается битом LPDS в PWR->CR.