Мой конфиг: STM32F407VGT, то есть STM32CubeIDE.
Я перевел MCU в режим ожидания, и существует два способа выхода MCU из режима ожидания. Первый способ - подключить вывод PA0 с напряжением 3,3 В, а второй - дождаться, пока таймер RT C подсчитает указанное значение. Оба способа работают нормально.
Теперь мой вопрос: как я могу различить guish событий? Я нахожу это в спецификации
Бит 8 EWUP: Включить вывод WKUP
Этот бит устанавливается и сбрасывается программным обеспечением.
0: вывод WKUP используется для общих целей Цель ввода / вывода. Событие на выводе WKUP не выводит устройство из режима ожидания. 1: вывод WKUP используется для выхода из режима ожидания и принудительного включения конфигурации входа вниз (передний фронт на выводе WKUP выводит систему из режима ожидания). Примечание: этот бит сбрасывается сбросом системы.
С этим кодом я попытался придумать идею
if(PWR_CSR_EWUP == 0x00000100) // PA0 is used to leave standby mode
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET);
HAL_Delay(2500);
}
else // mcu leave standby mode because RTC timer count desired value
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET);
HAL_Delay(2500);
}
Enter_StandbyMode();
По какой-то причине я всегда получал, что PWR_CSR_EWUP не является ' t равно 0x00000100, даже если я выхожу из режима ожидания, подключив PA0 к 3,3 В. Таким образом, вывод заключается в том, что я всегда получаю его в другом состоянии (зеленый светодиод (PD14) всегда включен после того, как mcu покинул режим ожидания).