Bearbeiten : Diese Frage ist falsch. Der stm325105 hat nur einen Weckstift. Andere ST-Teile haben jedoch mehr als einen Weckstift, sodass die angegebene Antwort für diese gilt.
Ich habe einen stm32f105, der zwei Momenttasten hat, die mit den Weckeingängen verbunden sind. Der Prozessor wird in den STANDBY-MODUS versetzt. Wenn eine der Tasten gedrückt wird oder der RTC-Timer ausgelöst wird, wird die CPU aktiviert.
Das Problem ist, dass ich möchte, dass die CPU verschiedene Dinge tut, je nachdem, welcher Weckeingang ausgelöst wurde. Gemäß 5.3.5 aus dem ST stm32f105xx-Referenzhandbuch bleiben keine Register erhalten, außer einem Statusregister, das angibt, dass wir aufgeweckt wurden (aber nicht von wem), und 42 Sicherungsregistern.
Der Standby-Modus ermöglicht den niedrigsten Stromverbrauch. Es basiert auf dem Cortex ® -M3-Tiefschlafmodus mit deaktiviertem Spannungsregler. Die 1,8-V-Domäne wird folglich ausgeschaltet. Die PLL, der HSI-Oszillator und der HSE-Oszillator sind ebenfalls ausgeschaltet. SRAM- und Registerinhalte gehen mit Ausnahme von Registern in der Sicherungsdomäne und in der Standby-Schaltung verloren.
Nach dem Aufwachen aus dem Standby-Modus wird die Programmausführung auf die gleiche Weise wie nach einem Reset neu gestartet (Boot-Pins-Abtastung, Vektor-Reset werden abgerufen usw.). Das SBF-Statusflag im Leistungssteuerungs- / Statusregister (PWR_CSR) zeigt an, dass sich die MCU im Standby-Modus befand.
Dieser ST-Forumsbeitrag, Wie man den Ursprung von Wakeup aus dem Standby-Modus ermittelt? schlägt vor, dass ich nicht erkennen kann, welches Aufwecken in der Software ausgelöst wurde. Ich habe dort keine anderen Beiträge gefunden, die mehr Aufklärung gaben.
Wie kann ich mithilfe von Software oder Hardware nach dem Aufwachen feststellen, welcher Aufweckeingang ausgelöst wurde?