Question
How to clear the specified flash page's WRP?
Hi there,
I want to clear the specified flash page's WRP by program, but I can only do it by clearing all the flash page's WRP,
meanwhile, I also need to keep my data in option byte.
my code is as follows(the project at HERE :(
uint8_t data0 = HAL_FLASHEx_OBGetUserData(OB_DATA_ADDRESS_DATA0);
uint8_t data1 = HAL_FLASHEx_OBGetUserData(OB_DATA_ADDRESS_DATA1);
OBInit.OptionType |= OPTIONBYTE_WRP;
OBInit.WRPState = OB_WRPSTATE_DISABLE;
OBInit.WRPPage = ~OBInit.WRPPage & pages;
HAL_FLASH_Unlock();
HAL_FLASH_OB_Unlock();
// hal_sta |= HAL_FLASHEx_OBErase();
hal_sta |= HAL_FLASHEx_OBProgram(&OBInit);
OBInit.OptionType = OPTIONBYTE_DATA;
OBInit.DATAAddress = OB_DATA_ADDRESS_DATA0;
OBInit.DATAData = data0;
HAL_FLASHEx_OBProgram(&OBInit);
OBInit.DATAAddress = OB_DATA_ADDRESS_DATA1;
OBInit.DATAData = data1;
HAL_FLASHEx_OBProgram(&OBInit);
if(hal_sta == HAL_OK) {
HAL_FLASH_OB_Launch();
} else {
LOG_ERR("clear Flash WRP err[%d]\n", hal_sta);
}I don't know what I am wrong, please help me.
Thank you!
