|
默认情况下,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();
- }
复制代码 |
|