cancel
Showing results for 
Search instead for 
Did you mean: 

Shutdown Mode in stm32u083rc

Sumukha
Associate
Screenshot 2025-02-26 111913.pngI 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!");
0 REPLIES 0