STM32 - más botones presionan la interrupción

0

Estoy usando STM32L433CCT6 y lo estoy programando con eclipse y código generado por STM32CubeMX.

Me gustaría preguntarle, si es posible agregar el arranque que se llamará, si presiono dos (o más) botones.

Me refiero a algo como esta interrupción

void EXTI2_IRQHandler(void) {
    HAL_NVIC_ClearPendingIRQ(EXTI2_IRQn);
    HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
    {
        /* EXTI line interrupt detected*/
        if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_2) != SET) {

            //what I would like to do when is detected rising/falling edge

            __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_2);
            HAL_GPIO_EXTI_Callback(GPIO_PIN_2);

        }
    }
}

pero se llamará cuando detecte 2 botones pulsados, en lugar de subir o bajar el borde.

Gracias por su respuesta.

    
pregunta oburozec5

2 respuestas

0

Los botones y SALIR son un compañero muy malo. Por muchas razones, hay mucha información al respecto en internet. El enfoque correcto es comprobarlo en la interrupción del temporizador.

Aquí tienes el ejemplo:

enlace

    
respondido por el P__J__
-1

No, no es posible, necesita lógica adicional para eso.

Además, algunas líneas EXTI sirven para múltiples GPIO a la vez.

Una opción razonable sería guardar el tiempo de interrupción ( Hal_GetTick() de los servidores de memoria) y verificar en el bucle principal si los tiempos de los botones están muy juntos.

    
respondido por el Jan Dorniak

Lea otras preguntas en las etiquetas