Edycja : To pytanie jest nieprawidłowe. STM325105 ma tylko jeden pin aktywujący. Ale inne części ST mają więcej niż jeden pin budzący, więc podana odpowiedź jest ważna dla nich.
Mam stm32f105, który ma dwa chwilowe przyciski podłączone do wejść wakeup. Procesor jest przełączany w TRYB STANDBY. Po naciśnięciu dowolnego przycisku lub uruchomieniu zegara RTC procesor budzi się.
Problem polega na tym, że chcę, aby procesor robił różne rzeczy w zależności od tego, które wejście budzenia zostało uruchomione. Według 5.3.5 z ST stm32f105xx podręcznika , bez rejestry są zachowane, z wyjątkiem rejestru statusie wskazującą, że byliśmy budzeni (ale nie przez kogo) i 42 rejestrów zapasowych.
Tryb gotowości umożliwia osiągnięcie najniższego zużycia energii. Opiera się na trybie głębokiego zasypiania Cortex ® -M3, z wyłączonym regulatorem napięcia. Domena 1,8 V jest w związku z tym wyłączona. PLL, oscylator HSI i oscylator HSE są również wyłączone. SRAM i zawartość rejestru są tracone, z wyjątkiem rejestrów w domenie kopii zapasowej i obwodzie gotowości.
Po przebudzeniu z trybu gotowości wykonanie programu uruchamia się ponownie w taki sam sposób, jak po resecie (próbkowanie pinów rozruchowych, resetowanie wektora jest pobierane itp.). Flaga stanu SBF w Rejestrze kontroli mocy / statusu (PWR_CSR) wskazuje, że MCU było w trybie gotowości.
Ten post na forum ST: Jak ustalić pochodzenie Wakeup z trybu gotowości? , sugeruje, że nie mogę wykryć, które wybudzanie uruchomiło się w oprogramowaniu. Nie znalazłem tam żadnych innych postów, które dałyby więcej oświecenia.
Jak mogę użyć oprogramowania lub sprzętu do określenia, po wzbudzeniu, które wejście budzenia zostało uruchomione?