STM32F4xx - ¿Puede EXTI_GenerateSWInterrupt() activar el procesador desde el modo de parada?

Como dice el título, ¿puede la función EXTI_GenerateSWInterrupt() activar el procesador después de que se pone en un modo de bajo consumo usando la función PWR_EnterSTOPMode()? La documentación dice que una interrupción EXTI puede despertar el procesador del modo de parada, pero no he tenido suerte. Así es como estoy configurando EXTI y NVIC:

EXTI_InitTypeDef EXTI_Init_Struct;
NVIC_InitTypeDef NVIC_InitStructure;

EXTI_Init_Struct.EXTI_Line = EXTI_Line0;
EXTI_Init_Struct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_Init_Struct.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_Init_Struct.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_Init_Struct);

/*
some code
*/

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

/*
   more code
*/
static int power = 1;
static int stopMode = 0;
//main loop
while(1)
{
    if(power)
    {
        //this is just a test timer to shut down after 5 seconds
        if(ElapsedTimeLowRes(stopMode) >= FIVE_SECOND)
        {
            PWR_EnterSTOPMode(PWR_Regulator_LowPower , PWR_STOPEntry_WFI);
            power = 0;
        }
    }
    else
    {
        EXTI_GenerateSWInterrupt(EXTI_Line0);
        stopMode = 0;
        power = 1;
    }
}

Ahora, creo que tan pronto como se llame a la función EXTI_GenerateSWInterrupt en este caso, el procesador se reactivaría casi instantáneamente ya que se llama en la siguiente iteración del ciclo después de ponerlo en modo de parada. Sin embargo, este no es el caso. El procesador permanece en modo de parada. ¿Alguna idea?

Nota: Este es solo un código de "prueba" hasta que descubra cómo activar el procesador. Sé que podría usar un temporizador RTC para activar el procesador, pero el procesador podría estar dormido desde unos pocos segundos hasta más de una hora.

Gracias de antemano.

Respuestas (1)

¿Puede la función EXTI_GenerateSWInterrupt() activar el procesador después de que se pone en un modo de bajo consumo mediante la función PWR_EnterSTOPMode()?

La respuesta es simple: ¡No!

El núcleo de MCU no ejecuta ninguna instrucción en modo de parada y, por lo tanto, no puede ejecutar ninguna función.

Bien, eso es todo lo que necesitaba saber. Estaba pensando tanto. ¡Gracias!
Me imagino que este sería el mismo caso para usar el modo de suspensión (función WFI) también.