Skip to main content
AxelMC
Associate II
October 30, 2018
Question

Problems with PWR_MODE STOP and the wake up with Timer LPTIM1

  • October 30, 2018
  • 6 replies
  • 1167 views

The LPTIM1 interrupt is running. But if I use the EnterStopMode function, the controller is not gone at the stop mode (LED1 come directly). If I use the EnterStopMode function the second time, the controller goes into the STOP mode and after few seconds the interupt wake up the controller (LED2 is delayed few seconds). Do I forget flags reset at first?

 if (HAL_LPTIM_Counter_Start_IT(&hlptim1, 20000) != HAL_OK)

 {

  Error_Handler();

 }

 __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

   /* ### - 4 - Enter in Stop mode ########################################### */

 HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

 LED1_ON;

 //HAL_Delay(10);

 HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

 LED2_ON;

 //HAL_Delay(10);

 HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

 LED3_ON;

This topic has been closed for replies.

6 replies

Khouloud GARSI
ST Employee
October 30, 2018

Hi @AxelMC​ ,

Could you please precise which STM32 MCU you're using.

Khouloud.

AxelMC
AxelMCAuthor
Associate II
October 30, 2018

​Hi, I use the Nucleo Board L053R8 with STM32L053R8T.

AxelMC
AxelMCAuthor
Associate II
October 30, 2018

Each time, if I set the LPTIM1, I have the problem

HAL_LPTIM_Counter_Stop_IT(&hlptim1);

__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

HAL_LPTIM_Counter_Start_IT(&hlptim1, 50000);

one time ---> NO STOP

HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

2 time --> STOP !!! ????

HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

Khouloud GARSI
ST Employee
October 30, 2018

Hi @AxelMC​ ,

By default the LPTIM peripheral is deactivated in STOP mode. You have to activate it in order to work properly during this mode.

If you're using HAL, below is the instruction that you should call:

__HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() ;

Khouloud.

AxelMC
AxelMCAuthor
Associate II
October 30, 2018

​Hi Khouloud,

My probleme is the controller does not stop. If I enter the STOP Mode the second times, he stops and the Timer wake him up.

/* ### - 3 - Start counting in interrupt mode ############################# */

HAL_LPTIM_Counter_Stop_IT(&hlptim1);

__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

__HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() ;

HAL_LPTIM_Counter_Start_IT(&hlptim1, 50000);

__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

/* ### - 4 - Enter in Stop mode ########################################### */

HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

LED1_ON; // ---> Failure not STOPPED -- No Wait!!!  :face_screaming_in_fear:

HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

LED2_ON; // --> Come back after 10 sec

HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

LED3_ON; // --> Come back after 10 sec

HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

Khouloud GARSI
ST Employee
October 30, 2018

Hi @AxelMC​ ,

There is an example under STM32CubeL0, it's found under the path below:

STM32Cube_FW_L0_V1.10.0\Projects\STM32L053R8-Nucleo\Examples\PWR\PWR_STOP

Is it working using your HW? Please check it, maybe you're missing something.

Otherwise you may share your C files (main, msp,it) in order to verify if the issue is reproduced from my side.

Khouloud.