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..