Мозг дымится, прям беда какая то, никак не приручить STOP режим
Есть кнопка 1, на которую нужно однократно нажать и ввести мк в стоп. Будить планирую другой кнопкой.
Код
void EXTI2_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line2) != RESET)
{
NVIC_DisableIRQ(EXTI2_IRQn);
stop_enable = 1;
LED1_TOGGLE();
EXTI_ClearITPendingBit(EXTI_Line2);
}
}
В основном цикле чекаю флаг кнопки. После его срабатывания ухожу в стоп. Но беда в том, что контроллер не засыпает. Детектирую это светодиодом 2.
Код
while(1) {
if(stop_enable == 1) {
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
stop_enable = 0;
LED2_TOGGLE();
NVIC_EnableIRQ(EXTI2_IRQn);
}
}
Если вводить в сон не по кнопке, то все ок, но нужно именно по кнопке. Создалось впечатление что NVIC_DisableIRQ(EXTI2_IRQn) не отрабатывает, проверил отдельно от этого куска кода - работает. По отдельности все работает, сама проблема в том что именно этот кусок не работает, как сделать по другому не понятно.
ЗЫ видел аналогичные темы, выдергивание swd не помогло. Ввожу в стоп не в прерывании.