Edit : Esta pergunta está errada. O stm325105 possui apenas um pino de ativação. Como outras peças ST têm mais de um pino de ativação, a resposta fornecida é válida para eles.
Eu tenho um stm32f105 que possui dois botões momentâneos conectados às entradas de ativação. O processador é colocado no modo de espera. Quando qualquer um dos botões é pressionado ou o timer RTC é acionado, a CPU acorda.
O problema é que eu quero que a CPU faça coisas diferentes, dependendo de qual entrada de ativação foi acionada. De acordo com 5.3.5 do manual de referência ST stm32f105xx , nenhum registro é preservado, exceto um registro de status indicando que fomos acordados (mas não por quem) e 42 registros de backup.
O modo de espera permite alcançar o menor consumo de energia. Baseia-se no modo de aprofundamento Cortex ® -M3, com o regulador de tensão desativado. O domínio de 1,8 V é consequentemente desligado. O PLL, o oscilador HSI e o oscilador HSE também estão desligados. A SRAM e o conteúdo do registro são perdidos, exceto para os registros no domínio de Backup e no circuito em espera.
Depois de sair do modo de espera, a execução do programa é reiniciada da mesma maneira que após uma redefinição (amostragem de pinos de inicialização, busca de redefinição de vetor, etc.). O sinalizador de status do SBF no controle de energia / registro de status (PWR_CSR) indica que o MCU estava no modo de espera.
Esta postagem no fórum ST, Como determinar a origem do Wakeup no modo de espera? , sugere que não consigo detectar qual ativação foi acionada no software. Não encontrei outras postagens lá que dessem mais esclarecimentos.
Como posso usar software ou hardware para determinar, após a ativação, qual entrada de ativação foi acionada?