AT32F403A: StandBy и WAKEUP pin. На данном МК перешел в Standby.
(см. код ниже) По документу при подаче "rising edge on the WKUP
pin", он должен сброситься. По факту сброс происходит всегда, пока
на wakeup есть высокий уровень. Где я ошибся? main.c:
{
if(PWR_GetFlagStatus(PWR_FLAG_SBF) != RESET)
{
PWR_ClearFlag(PWR_FLAG_SBF);
}
if(PWR_GetFlagStatus(PWR_FLAG_WUF) != RESET)
{
PWR_ClearFlag(PWR_FLAG_WUF);
}
...
Sleep_mode_Configuration();
PWR_EnterSTANDBYMode();
}
void PWR_EnterSTANDBYMode(void)
{
/* Clear Wake-up flag */
PWR->CTRL |= PWR_CTRL_CLWUF;
/* Select STANDBY mode */
PWR->CTRL |= PWR_CTRL_PDDS;
/* Set SLEEPDEEP bit of Cortex System Control Register */
SCB->SCR |= SCB_SCR_SLEEPDEEP;
/* This option is used to ensure that store operations are completed */
#if defined ( __CC_ARM )
__force_stores();
#endif
/* Request Wait For Interrupt */
__WFI();
}
void Sleep_mode_Configuration(void)
{
//__USE_STANDBY_MODE
RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_PWR, ENABLE);
PWR_WakeUpPinCtrl(ENABLE);
}