请教,如何在stm32h723上修改option byte中的iwdg字段
默认情况下,option byte中的FLASH_OPTSR_FZ_IWDG_SDBY是1,想把它改成0。但是按照下面的方法没有修改成功。void get_option_bytes(void)
{
uint32_t val_d1 = 0;
uint32_t val_d2 = 0;
uint32_t val_security = 0;
uint32_t flag = 1;
FLASH_OBProgramInitTypeDef ob = {0};
HAL_FLASH_Unlock();
HAL_FLASH_OB_Unlock();
HAL_FLASHEx_OBGetConfig(&ob);
val_d1 = ob.USERConfig & FLASH_OPTSR_NRST_STBY_D1;
val_d2 = ob.USERConfig & FLASH_OPTSR_NRST_STBY_D2;
val_security = ob.USERConfig & FLASH_OPTSR_SECURITY;
log(LOG_DBG, "ob.userconfig=0x%x\r\n", ob.USERConfig);
log(LOG_DBG, "d1=0x%x\r\n", val_d1);
log(LOG_DBG, "d2=0x%x\r\n", val_d2);
log(LOG_DBG, "security=0x%x\r\n", val_security);
val_d1 = ob.USERConfig & FLASH_OPTSR_NRST_STOP_D1;
log(LOG_DBG, "stop = 0x%x\r\n", val_d1);
val_d2 = ob.USERConfig & FLASH_OPTSR_FZ_IWDG_SDBY;
log(LOG_DBG, "iwdg = 0x%x\r\n", val_d2);
if(1 == flag){
ob.OptionType = OPTIONBYTE_USER;
ob.USERType = OB_USER_IWDG_STDBY;
//ob.USERConfig &= (~FLASH_OPTSR_FZ_IWDG_SDBY_Msk);
ob.USERConfig = OB_IWDG_STDBY_FREEZE;
HAL_FLASHEx_OBProgram(&ob);
HAL_FLASH_OB_Launch();
log(LOG_DBG, "modified options bytes\r\n");
}
HAL_FLASH_OB_Lock();
HAL_FLASH_Lock();
} 参考代码在这里 https://blog.csdn.net/qq_41532050/article/details/132223585。 不知道option byte区域的数值用不用先擦除再写入,但是没有擦除的函数。
页:
[1]