I am not able to enter into the shutdown mode, i am using the below configuration, I wanted to use the wakeup pin 1 to wakeup form the shutdown mode , but in this it is not going to shutdown mode as the current consumption is at 112uA, what is the correct configuration or steps to do this, in the CubeMX i have configured the pin PA0 as wakeup pin1
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
/* USER CODE BEGIN 2 */
// logMessageUART(LOG_LEVEL_INFO, "STOP Mode Test \r \n");
if (__HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST))
{
LOG_INFO_UART("Wakeup from Software Reset!");
}
else if (__HAL_RCC_GET_FLAG(RCC_FLAG_PWRRST))
{
LOG_INFO_UART("Wakeup from Shutdown Mode!");
}
else if (__HAL_PWR_GET_FLAG(PWR_FLAG_WUF1))
{
LOG_INFO_UART("Wakeup from PA0!");
}
else if (__HAL_PWR_GET_FLAG(PWR_FLAG_WUF2))
{
LOG_INFO_UART("Wakeup from PC13 Button!");
}
else if (__HAL_PWR_GET_FLAG(PWR_FLAG_WUF3))
{
LOG_INFO_UART("Wakeup from PB2!");
}
else if (__HAL_PWR_GET_FLAG(PWR_FLAG_WUF4))
{
LOG_INFO_UART("Wakeup from RTC Wakeup!");
}
else
{
LOG_INFO_UART("Power-On Reset (Cold Boot)!");
}
// ? Clear Reset Flags
__HAL_RCC_CLEAR_RESET_FLAGS();
for (int i = 0; i < 20; i++ )
{
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
HAL_Delay(200);
}
//stop2_test();
__HAL_RCC_PWR_CLK_ENABLE();
// // ? Configure RTC Wakeup Timer (5-second wakeup)
// HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 20480, RTC_WAKEUPCLOCK_RTCCLK_DIV16, 20480);
// __HAL_RCC_GPIOA_CLK_ENABLE();
// GPIO_InitTypeDef GPIO_InitStruct = {0};
// GPIO_InitStruct.Pin = GPIO_PIN_0;
// GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
// GPIO_InitStruct.Pull = GPIO_PULLDOWN;
// GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
// HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// ? Enable RTC Wakeup as a Wakeup Source
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1_LOW); // RTC Wakeup (Internal)
// ? Disable Other Wakeup Pins (Only Use RTC)
// HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN2);
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN3);
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN4);
// ? Log Message Before Shutdown
LOG_INFO_UART("Entering Shutdown Mode...");
// __HAL_RCC_GPIOA_CLK_DISABLE();
__HAL_RCC_GPIOB_CLK_DISABLE();
__HAL_RCC_GPIOC_CLK_DISABLE();
CLEAR_REG(RCC->APBENR1);
// HAL_RTC_DeactivateAlarm(&hrtc, RTC_ALARM_A);
// HAL_RTC_DeactivateAlarm(&hrtc, RTC_ALARM_B);
// HAL_RTCEx_DeactivateTamper(&hrtc, RTC_TAMPER_1);
__HAL_RCC_HSE_CONFIG(RCC_HSE_OFF);
__HAL_RCC_HSI_DISABLE();
__HAL_RCC_MSI_DISABLE();
HAL_RCCEx_DisableLSECSS(); // Disable LSE clock security system
// HAL_RTCEx_DeactivateCalibrationOutPut(&hrtc);
// ? Clear All Wakeup Flags (Prevents Immediate Wakeup)
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF1);
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF2);
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF3);
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF4); // RTC Wakeup Flag
if (__HAL_PWR_GET_FLAG(PWR_FLAG_WUF1))
{
LOG_INFO_UART("Wakeup 1 flag is SET");
}
HAL_UART_DeInit(&huart2);
// HAL_RTC_DeInit(&hrtc);
HAL_DBGMCU_DisableDBGStopMode();
HAL_DBGMCU_DisableDBGStandbyMode();
// HAL_DBGMCU_DisableDBGSleepMode();
DBGMCU->CR = 0x00000000;
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF1);
HAL_PWR_EnterSHUTDOWNMode();
// ? This should never execute (MCU should reset on wakeup)
LOG_INFO_UART("ERROR: MCU Did NOT Shutdown!");