STM32F4xx - Puede EXTI_GenerateSWInterrupt () Activar el procesador desde el modo de parada

0

Como indica el título, ¿puede la función EXTI_GenerateSWInterrupt () activar el procesador después de que se ponga en modo de bajo consumo de energía utilizando la función PWR_EnterSTOPMode ()? La documentación dice que una interrupción EXTI puede activar el procesador desde el modo de parada, pero no he tenido suerte. Aquí es cómo estoy configurando el 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á casi instantáneamente, ya que se está llamando en la siguiente iteración del bucle después de ponerse en modo de parada. Este no es el caso sin embargo. El procesador permanece en modo de parada. ¿Algún pensamiento?

Nota: Esto 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 inactivo desde unos pocos segundos hasta más de una hora.

Gracias de antemano.

    
pregunta Josh

1 respuesta

3
  

¿Puede la función EXTI_GenerateSWInterrupt () activar el procesador después de ponerlo en modo de bajo consumo usando la función PWR_EnterSTOPMode ()?

La respuesta es simple: ¡No!

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

    
respondido por el Turbo J

Lea otras preguntas en las etiquetas