Modifica : questa domanda è sbagliata. Stm325105 ha solo un pin di riattivazione. Ma altre parti ST hanno più di un pin di riattivazione, quindi la risposta fornita è valida per quelle.
Ho uno stm32f105 che ha due pulsanti momentanei collegati agli ingressi di sveglia. Il processore viene messo in MODALITÀ STANDBY. Quando viene premuto uno qualsiasi dei pulsanti o il timer RTC si attiva, la CPU si riattiva.
Il problema è che voglio che la CPU faccia cose diverse a seconda dell'input di attivazione attivato. Secondo la 5.3.5 del manuale di riferimento ST stm32f105xx , nessun registro viene conservato ad eccezione di un registro di stato che indica che siamo stati svegliati (ma non da chi) e 42 registri di backup.
La modalità Standby consente di ottenere il minor consumo energetico. Si basa sulla modalità deep-sleep Cortex ® -M3, con il regolatore di tensione disabilitato. Di conseguenza, il dominio da 1,8 V viene spento. Anche il PLL, l'oscillatore HSI e l'oscillatore HSE sono disattivati. La SRAM e i contenuti dei registri vengono persi ad eccezione dei registri nel dominio Backup e dei circuiti di standby.
Dopo essersi svegliato dalla modalità Standby, l'esecuzione del programma viene riavviata come dopo un reset (viene recuperato il campionamento dei pin di avvio, il ripristino del vettore, ecc.). L'indicatore di stato SBF nel registro di controllo / stato dell'alimentazione (PWR_CSR) indica che l'MCU era in modalità Standby.
Questo post sul forum ST, Come determinare l'origine di Wakeup da Standby? , suggerisce che non riesco a rilevare quale attivazione attivata nel software. Non ho trovato altri post lì che hanno dato ulteriore illuminazione.
Come posso utilizzare software o hardware per determinare, dopo il risveglio, quale input di sveglia è stato attivato?