Редагувати : це питання неправильне. У stm325105 є тільки один штифт пробудження. Але в інших частинах ST є більше одного штифта для пробудження, тому дана відповідь справедлива для них.
У мене є stm32f105, який має дві миттєві кнопки, підключені до входів пробудження. Процесор ставиться в режим очікування. Після натискання будь-якої з кнопок або запуску таймера RTC процесор прокидається.
Проблема полягає в тому, що я хочу, щоб процесор робив різні речі залежно від того, який вхід будильника спрацьовував. Згідно з 5.3.5 з посібника по використанню ST stm32f105xx , жодні регістри не зберігаються, за винятком регістра статусу, який вказує на те, що нас розбудили (але не ким) і 42 резервних реєстру.
Режим очікування дозволяє досягти найменшого енергоспоживання. Він заснований на режимі заглиблення Cortex ® -M3, відключений регулятор напруги. Отже, домен 1,8 В відключається. PLL, генератор HSI та генератор HSE також вимикаються. Вміст SRAM та реєстру втрачається за винятком регістрів домену резервного копіювання та режиму очікування.
Після пробудження з режиму очікування виконання програми відновлюється так само, як і після скидання (вибірка завантажувальних штифтів, отримання скидання векторів тощо). Прапор статусу SBF в регістрі керування живленням / статусом (PWR_CSR) вказує, що MCU знаходився в режимі очікування.
Цей пост форуму ST, як визначити походження пробудження з режиму очікування? , говорить про те, що я не можу виявити, яке пробудження викликане програмним забезпеченням. Я не знайшов там інших публікацій, які б більше не втішалися.
Як я можу використовувати програмне чи апаратне забезпечення для визначення, коли прокинувся, який сигнал ввімкнено?