Determine si el botón presionó la activación del modo STOP con STM32F0

3

Estoy usando una interrupción externa activada por una pulsación de botón para activar un STM32F030K6 desde el modo STOP. Me preguntaba si hay alguna forma de distinguir, dentro del controlador de interrupciones, una presión de botón que provocó una activación de una presión de botón normal.

    
pregunta foldl

1 respuesta

3

Siempre tiene la posibilidad de agregar esa función manualmente a través de la configuración de un indicador antes de ingresar en el modo DETENER, y verificar si ese indicador está establecido en el controlador de interrupción.

Como puede olvidarse de hacer eso cada vez que ingresa en el modo STOP, puede escribir una función global (como el compilador intrínseco) que establece la bandera y ingresa en el modo STOP.

EDITAR: pensé que este bit sería útil, pero como @foldl descubrió, este bit parece estar configurado solo en caso de una activación de los pines de activación y no de otros pines. No he visto ningún otro bit que pueda ser útil para esto.

El registro PWR_CSR contiene un bit de indicador de activación (WUF, bit 0):

  

Bit 0 WUF: Indicador de activación   Este bit está configurado por hardware para indicar que el dispositivo recibió un evento de activación. Se aprueba por   un reinicio del sistema o configurando el bit CWUF en el registro de control de potencia (PWR_CR)

     

0: no se produjo ningún evento de activación

     

1: se recibió un evento de activación desde uno de los pines WKUPx habilitados o desde el RTC   alarma.

     

Nota: se detecta un evento de activación adicional si se habilita un pin WKUPx (al configurar   Bit EWUPx) cuando su nivel de pin ya es alto.

Consulte Manual de referencia Página 83 .

Así que en su rutina de servicio de interrupción, puede marcar esta bandera. Sin embargo, tenga en cuenta que debe borrarlo manualmente configurando el bit CWUF en el registro PWR_CR:

  

Bit 2 CWUF: Borrar el indicador de activación.

     

Este bit siempre se lee como 0.

     

0: Sin efecto

     

1: borre el indicador de activación WUF después de 2 ciclos de reloj del sistema. (escribir)

    
respondido por el Arsenal

Lea otras preguntas en las etiquetas