Sunting : Pertanyaan ini salah. Stm325105 hanya memiliki satu pin bangun. Tetapi bagian-ST lainnya memiliki lebih dari satu pin bangun, jadi jawaban yang diberikan berlaku untuk mereka.
Saya memiliki stm32f105 yang memiliki dua tombol sesaat yang terhubung ke input wakeup. Prosesor dimasukkan ke dalam MODE STANDBY. Ketika salah satu tombol ditekan, atau timer RTC menyala, cpu terbangun.
Masalahnya adalah saya ingin CPU melakukan hal yang berbeda tergantung pada input wakeup yang dipicu. Menurut 5.3.5 dari manual referensi stm32f105xx ST , tidak ada register yang disimpan kecuali untuk register status yang menunjukkan bahwa kami telah dibangunkan (tetapi tidak oleh siapa) dan 42 register cadangan.
Mode Siaga memungkinkan untuk mencapai konsumsi daya terendah. Ini didasarkan pada mode deepsleep Cortex ® -M3, dengan regulator tegangan dinonaktifkan. Akibatnya, domain 1,8 V dimatikan. PLL, osilator HSI, dan osilator HSE juga dimatikan. Konten SRAM dan register hilang kecuali untuk register di domain Cadangan dan sirkuit Siaga.
Setelah bangun dari mode Standby, eksekusi program restart dengan cara yang sama seperti setelah Reset (pengambilan sampel pin, reset vektor diambil, dll.). Bendera status SBF dalam daftar Kontrol daya / status (PWR_CSR) menunjukkan bahwa MCU dalam mode Siaga.
Posting forum ST ini, Bagaimana menentukan asal dari Wakeup dari Siaga? , menyarankan agar saya tidak dapat mendeteksi wakeup yang dipicu oleh perangkat lunak. Saya tidak menemukan tulisan lain di sana yang memberikan pencerahan lagi.
Bagaimana saya bisa menggunakan perangkat lunak atau perangkat keras untuk menentukan, setelah bangun, input wakeup yang dipicu?