ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
3 июля
1223094
Nikolaev_Aleksey (13.07.2022 15:05, просмотров: 1410)
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); }