源代码
源代码参考了STM32L4XX_HAL_FLASH_EX.C这个库文件,也感谢朱老师NBIOT学习群管理员给予的有益的建议。 uint8_t flag_IWDG;
flag_IWDG=READ_BIT(FLASH->OPTR, FLASH_OPTR_IWDG_STOP)!=0;//设置旗标,避免反复加载flash导致重启
if(flag_IWDG!=0)
{
HAL_FLASH_Unlock();
HAL_FLASH_OB_Unlock();//解锁FLASH
CLEAR_BIT(FLASH->OPTR, FLASH_OPTR_IWDG_STOP);//修改看门狗参数为:休眠时看门狗停止计数
/* Set OPTSTRT Bit */
SET_BIT(FLASH->CR, FLASH_CR_OPTSTRT);//以下3句不可缺少,否则无法修改FLASH->OPTR
/* Wait for last operation to be completed */
FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE);
/* If the option byte program operation is completed, disable the OPTSTRT Bit */
CLEAR_BIT(FLASH->CR, FLASH_CR_OPTSTRT);
HAL_FLASH_OB_Launch();//加载flash,会导致重启
}
HAL_FLASH_OB_Lock();
HAL_FLASH_Lock();//修改完后关闭flash,已经上锁再执行一遍问题不大
|
———————————————— 版权声明:本文为CSDN博主「jubitl」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/jubitl/article/details/99698616