Editar : esta pregunta es incorrecta. El stm325105 tiene solo un pin de activación. Pero otras partes ST tienen más de un pin de activación, por lo que la respuesta dada es válida para ellos.
Tengo un stm32f105 que tiene dos botones momentáneos conectados a las entradas de activación. El procesador se pone en MODO DE ESPERA. Cuando se presiona cualquiera de los botones, o se dispara el temporizador RTC, la CPU se activa.
El problema es que quiero que la CPU haga cosas diferentes dependiendo de qué entrada de activación se activó. De acuerdo con 5.3.5 del manual de referencia ST stm32f105xx , no se conservan registros, excepto un registro de estado que indica que hemos sido despertados (pero no por quién) y 42 registros de respaldo.
El modo de espera permite lograr el menor consumo de energía. Se basa en el modo de sueño profundo Cortex ® -M3, con el regulador de voltaje desactivado. En consecuencia, el dominio de 1.8 V está apagado. El PLL, el oscilador HSI y el oscilador HSE también están apagados. La SRAM y el contenido de los registros se pierden, excepto los registros en el dominio de copia de seguridad y el circuito en espera.
Después de salir del modo de espera, la ejecución del programa se reinicia de la misma manera que después de un reinicio (muestreo de pines de arranque, se recupera el reinicio del vector, etc.). El indicador de estado SBF en el registro de control / estado de energía (PWR_CSR) indica que la MCU estaba en modo de espera.
Esta publicación del foro ST, ¿Cómo determinar el origen de Wakeup from Standby? , sugiere que no puedo detectar qué activación se activó en el software. No encontré otras publicaciones allí que dieran más iluminación.
¿Cómo puedo usar software o hardware para determinar, después de despertar, qué entrada de activación se activó?