我要使用Hardware independent watchdog,所以要将user option byte中的WDG_SW位置0,代码如下: FLASH_OBProgramInitTypeDef option; __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_OPERR); HAL_FLASHEx_OBGetConfig(&option); if ((option.USERConfig & OB_IWDG_SW) == OB_IWDG_SW) { HAL_FLASH_OB_Unlock(); option.USERConfig &= (~OB_IWDG_SW); option.OptionType = OPTIONBYTE_USER; if (HAL_FLASHEx_OBProgram(&option) != HAL_OK) Debug("\nfail 1"); if (HAL_FLASH_OB_Launch() != HAL_OK) Debug("\nfail 2\n"); else Debug("\nok\n"); HAL_FLASH_OB_Lock(); } 以上代码在STM32F401RC上使用正常,但在STM32F429ZG上不起作用了,没有报错,改写option byte后在不断电不复位的情况下再次读取option byte确认是我写入的值,但复位后又变成默认值了。 哪里出错了? |
评分
查看全部评分
涉及到生产烧写代码的问题,最好还是在程序里实现。