cancel
Showing results for 
Search instead for 
Did you mean: 

STM32U5 systick slows down after wake up from stop2 mode

yyc
Associate

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);

 

}



0 REPLIES 0