2025-12-05 2:56 PM
Hello,
I have a STM32U5 waking up through a GPIO interrupt and flashing LEDs for a few times. Somehow after the processor wakes up from STOP2 mode the flashing speed slow down. I think this may have something to do with the Systick? I tried reconfiguring the clocks and didn't solve the issue. Below is the code. Thank you
Enter_Stop2_Mode();
while (1)
{
if(HAL_GPIO_ReadPin(V_Fu_Trig_GPIO_Port, V_Fu_Trig_Pin) == 1){
flashRedLED();
flashGreenLED();
MCU_IsAwake();
}else{
MCU_IsAsleep();
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
static void Enter_Stop2_Mode(void)
{
MCU_IsAsleep();
HAL_ADC_Start(&hadc4);
__HAL_RCC_ADC4_CLKAM_ENABLE();
HAL_SuspendTick();
__HAL_RCC_PWR_CLK_ENABLE ();
HAL_PWREx_EnterSTOP2Mode(PWR_SLEEPENTRY_WFI);
}
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_2||GPIO_PIN_6)
{
HAL_ResumeTick();
SystemClock_Config();
MDM_On();
MCU_IsAwake();
stopped = true;
VBat = false;
}
}
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_4)
{
HAL_ResumeTick();
SystemClock_Config();
MDM_On();
MCU_IsAwake();
stopped = true;
VBat = false;
}
}
void flashGreenLED(){
HAL_GPIO_WritePin(LED_G_GPIO_Port, LED_G_Pin, SET);
HAL_Delay(100);
HAL_GPIO_WritePin(LED_G_GPIO_Port, LED_G_Pin, RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(LED_G_GPIO_Port, LED_G_Pin, SET);
HAL_Delay(100);
HAL_GPIO_WritePin(LED_G_GPIO_Port, LED_G_Pin, RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(LED_G_GPIO_Port, LED_G_Pin, SET);
HAL_Delay(100);
HAL_GPIO_WritePin(LED_G_GPIO_Port, LED_G_Pin, RESET);
HAL_Delay(100);
}
void flashRedLED(){
HAL_GPIO_WritePin(LED_R_GPIO_Port, LED_R_Pin, SET);
HAL_Delay(100);
HAL_GPIO_WritePin(LED_R_GPIO_Port, LED_R_Pin, RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(LED_R_GPIO_Port, LED_R_Pin, SET);
HAL_Delay(100);
HAL_GPIO_WritePin(LED_R_GPIO_Port, LED_R_Pin, RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(LED_R_GPIO_Port, LED_R_Pin, SET);
HAL_Delay(100);
HAL_GPIO_WritePin(LED_R_GPIO_Port, LED_R_Pin, RESET);
HAL_Delay(100);
}