Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

162
Vistas
STM32WL se activa inmediatamente desde el modo de suspensión de apagado

Estoy intentando hacer que un STM32WL (actualmente en un devboard WL55JC1) entre en modo de suspensión usando el modo de apagado, y me encuentro con un problema en el que la MCU sale inmediatamente del modo de suspensión después de ingresar.

Esto es lo que estoy usando para conciliar el sueño:

 Radio.Sleep(); HAL_SUBGHZ_MspDeInit(&hsubghz); LL_RCC_RF_EnableReset(); __disable_irq(); HAL_SuspendTick(); HAL_PWREx_DisableSRAMRetention(); HAL_PWREx_EnableFlashPowerDown(PWR_FLASHPD_LPSLEEP); HAL_PWR_DisablePVD(); HAL_SUBGHZ_ExecSetCmd(&hsubghz, RADIO_SET_SLEEP, 0x0000, 2); HAL_Delay(3000); HAL_PWREx_EnterSHUTDOWNMode();

Al entrar en modo de suspensión, intento suspender el sysstick y luego uso la macro HAL para ingresar al modo de suspensión de apagado. Por lo que he leído, esto parece ser todo lo que necesito, pero obviamente no en este caso.

La salida del modo de suspensión ocurre independientemente de que el módulo ST-Link integrado en mi placa de desarrollo esté encendido o no.

NRST actualmente está flotando, ya que cuando lo conecto a tierra, el chip se apaga y consume 700uA. Otro enigma por resolver.

Editar: no estoy seguro de si ayudará, pero aquí está la configuración del reloj de mi sistema:

 void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /** Configure LSE Drive Capability */ HAL_PWR_EnableBkUpAccess(); __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW); /** Configure the main internal regulator output voltage */ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); /** Initializes the CPU, AHB and APB busses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE|RCC_OSCILLATORTYPE_MSI; RCC_OscInitStruct.LSEState = RCC_LSE_ON; RCC_OscInitStruct.MSIState = RCC_MSI_ON; RCC_OscInitStruct.MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT; RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_11; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } /** Configure the SYSCLKSource, HCLK, PCLK1 and PCLK2 clocks dividers */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK3|RCC_CLOCKTYPE_HCLK |RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1 |RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.AHBCLK3Divider = RCC_SYSCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { Error_Handler(); } }
over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda