Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

163
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda