Примером кода перевода в Standby поделитесь.
Вот мой код.
Код:
//переход в STANDBY
void EnterToStandbyMode(void)
{
uint32_t tmp;
while((BKP->RTC_CS&(1<<6)) != 0); //wait until write data in RTC
//включаем генератор LSI
BKP->REG_0F |= BKP_REG_0F_LSI_ON;
while(!(BKP->REG_0F & BKP_REG_0F_LSI_RDY)); //ждем стабилизации LSI
//переключаемся на тактирование от LSI
RST_CLK->CPU_CLOCK = RST_CLK_CPUclkLSI;
RST_CLK->DSP_CLOCK = 0;
RST_CLK->PLL_CONTROL = 0;
while((BKP->RTC_CS&(1<<6)) != 0); //wait until write data in RTC
//выключаем HSI
BKP->REG_0F &= ~BKP_REG_0F_HSI_ON ;
//выключаем HSE
RST_CLK->HS_CONTROL = 0;
while((BKP->RTC_CS&(1<<6)) != 0); //wait until write data in RTC
tmp = BKP->REG_0E;
tmp &= ~(BKP_REG_0E_LOW_Msk| BKP_REG_0E_SelectRI_Msk);
tmp |= (4 << BKP_REG_0E_LOW_Pos) | (4 << BKP_REG_0E_SelectRI_Pos);
BKP->REG_0E = tmp;
RST_CLK->PER_CLOCK = RST_CLK_PCLK_BKP;// | RST_CLK_PCLK_RST_CLK;
// Set SLEEPDEEP bit of Cortex System Control Register
SCB -> SCR |= SCB_SCR_SLEEPDEEP_Msk;
while((BKP->RTC_CS&(1<<6)) != 0); //wait until write data in RTC
BKP->REG_0F |= BKP_REG_0F_STANDBY;
__WFI();
}