Skip to main content
Associate
October 28, 2024
Question

Regarding POR(25)

  • October 28, 2024
  • 2 replies
  • 801 views

Hi All

I am using STM32L053 board for a product development.

I am using RS485 communication Protocol. I am sending Data from Computer to the processor to get the response. 

When I send the data, I get proper response. but out of 10 times say 1 time the processor Resets with the error number 19,  that is POR(25)

This is reset due to CLASS B VAR FAIL. 

CLASS B VAR error comes as a result of 

Clock Status STL_Main Clock Test(void)  function which is written in the file STm32fxx_STLclockRun.c file.

this function has one condition,

 

 if (((PeriodValue ^ PeriodValueInv) == 0xFFFFFFFFuL)\
&& ((LSIPeriodFlag ^ LSIPeriodFlagInv) == 0xFFFFFFFFuL)\
&& (LSIPeriodFlag != 0u) ) 

 

in this condition, actually LSIPeriodFlag = 0  and also (LSIPeriodFlag ^ LSIPeriodFlagInv) are not exactly inverse of each other as LSIPeriodFlag = 0x00000000; LSIPeriodFlagInv = 0x55555555;

How to solve the problem?

Thanks in Advance

Regards

Ashwini

 

This topic has been closed for replies.

2 replies

Amel NASRI
ST Technical Moderator
November 15, 2024

Hi @AshwiniKool ,

As you are using LSI as clock source, it is possible that you are facing similar issue as the one in STM32F4 MCU ST SelfTest Error(STL_MainClockTest).

Please refer to the answer from @Petr Sladecek there.

-Amel

 

To give better visibility on the answered topics, please click on "Best Answer" on the reply which solved your issue or answered your question.
Petr Sladecek
ST Employee
December 3, 2024

Hello,

if you inspect all available source files (stm32fxx_STLclockrun.c, stm32fxx_STLmain.c), you can find that during the library initialization and once the result of the clock measurement is checked, SW invalidates class B pair variable value by purpose via putting LSIPeriodFlag into zero. To repeat the clock test, SW then must wait next 8x LSI cycles at least to check result of a next clock cross check measurement cycle. Consistency of the flag (the variable pair) is renewed at TIM21_IRQHandler (stm32l0xx_it.c) raised by end of the measurement cycle when both its elements are set properly to signalize a new measurement result is ready to be checked:

/* Set Flag tested at main loop */
LSIPeriodFlag = 0xAAAAAAAAu;
LSIPeriodFlagInv = 0x55555555u;

Rgds,

Petr