Skip to main content
LeventF16
Associate II
September 6, 2024
Solved

STM32L431 brown out.

  • September 6, 2024
  • 6 replies
  • 1131 views

Hello.

How can we enable brown out for this processor and the brown out voltage?

Thank you.

Best answer by Tesla DeLorean

Some mechanics along the lines of..

 // Read the option byte
 FLASH_OBProgramInitTypeDef OBInit;
 HAL_FLASHEx_OBGetConfig(&OBInit);

 // Check bitwise if the brownout level is not 3
 if ((OBInit.USERConfig & OB_BOR_LEVEL_3) != OB_BOR_LEVEL_3)
 {
 // Set the brownout level to 3
 OBInit.OptionType = OPTIONBYTE_USER;
 OBInit.USERType = OB_USER_BOR_LEV;
 OBInit.USERConfig |= OB_BOR_LEVEL_3;

 HAL_FLASH_Unlock();
 HAL_FLASH_OB_Unlock();
 HAL_FLASHEx_OBProgram(&OBInit);
 // This function needs to be called Unlocked Flash and OB state.
 HAL_FLASH_OB_Launch();
 HAL_FLASH_OB_Lock();
 HAL_FLASH_Lock();
 HAL_FLASH_OB_Launch();
 }

6 replies

Tesla DeLorean
Guru
September 6, 2024

Perhaps it's covered in the Reference Manual, or there are examples in the code trees of CubeL4 ?

Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
Tesla DeLorean
Tesla DeLoreanBest answer
Guru
September 6, 2024

Some mechanics along the lines of..

 // Read the option byte
 FLASH_OBProgramInitTypeDef OBInit;
 HAL_FLASHEx_OBGetConfig(&OBInit);

 // Check bitwise if the brownout level is not 3
 if ((OBInit.USERConfig & OB_BOR_LEVEL_3) != OB_BOR_LEVEL_3)
 {
 // Set the brownout level to 3
 OBInit.OptionType = OPTIONBYTE_USER;
 OBInit.USERType = OB_USER_BOR_LEV;
 OBInit.USERConfig |= OB_BOR_LEVEL_3;

 HAL_FLASH_Unlock();
 HAL_FLASH_OB_Unlock();
 HAL_FLASHEx_OBProgram(&OBInit);
 // This function needs to be called Unlocked Flash and OB state.
 HAL_FLASH_OB_Launch();
 HAL_FLASH_OB_Lock();
 HAL_FLASH_Lock();
 HAL_FLASH_OB_Launch();
 }
Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
CGadg
Associate III
January 26, 2026

Is the option byte available in Cube IDE? I can't see it.

I've used the above code after initialisation and think it should be before initialisation, or better still in the option byte without a routine to change it.

TDK
September 6, 2024

You can adjust it in STM32CubeProgrammer along with other option bytes.

TDK_0-1725644023758.png

 

"If you feel a post has answered your question, please click ""Accept as Solution""."