Изменить : этот вопрос не так. У stm325105 есть только один контакт активации. Но у других ST-частей есть более одного контакта пробуждения, поэтому данный ответ действителен для них.
У меня есть stm32f105, у которого есть две кнопки, подключенные к входам пробуждения. Процессор установлен в РЕЖИМ ОЖИДАНИЯ. Когда нажата какая-либо из кнопок или срабатывает таймер RTC, процессор включается.
Проблема в том, что я хочу, чтобы процессор делал разные вещи, в зависимости от того, какой вход пробуждения был активирован. Согласно 5.3.5 из справочного руководства по ST stm32f105xx , регистры не сохраняются, за исключением регистра состояния, указывающего, что мы были разбужены (но не кем) и 42 резервных регистра.
Режим ожидания позволяет достичь минимального энергопотребления. Он основан на режиме бездействия Cortex ® -M3 с отключенным регулятором напряжения. Домен 1,8 В, следовательно, отключен. PLL, генератор HSI и генератор HSE также отключены. SRAM и содержимое регистров теряются, за исключением регистров в резервном домене и резервной схеме.
После выхода из режима ожидания выполнение программы возобновляется так же, как и после сброса (выборка пинов загрузки, выборка вектора и т. Д.). Флаг состояния SBF в регистре управления питанием / состояния (PWR_CSR) указывает, что MCU находился в режиме ожидания.
Это сообщение на форуме ST, Как определить происхождение Wakeup из Standby? , предполагает, что я не могу определить, какой запуск вызван в программном обеспечении. Я не нашел там других постов, которые бы давали больше света.
Как я могу использовать программное или аппаратное обеспечение для определения, после пробуждения, какой сигнал активизации был активирован?