- 问题背景:STM32L431 要加入stop模式来省电,发现进入stop模式后,看门狗在运行导致stop模式没有喂狗,然后系统会因为看门狗溢出导致复位。那么问题来了,如何在STM32L4 系列进入stop模式后关闭看门狗,那就必须得配置选项字节(Option byte)。
- 问题解决:直接贴代码如下,在系统初始化的时候加入。可以来配置选项字节,在进入stop模式,关闭看门狗,退出stop模式看门狗自动使能。
void Config_Option_Byte(void) {//系统初始化调用 U32 uiFlag_IWDG; uiFlag_IWDG = READ_BIT(FLASH->OPTR,FLASH_OPTR_IWDG_STOP); if(uiFlag_IWDG) { PRINT_LOG("Need SET OPT\n"); HAL_FLASH_Unlock(); //解锁flash HAL_FLASH_OB_Unlock();//解锁“选项字节” CLEAR_BIT(FLASH->OPTR,FLASH_OPTR_IWDG_STOP);// 配置 “stop模式关闭看门狗” SET_BIT(FLASH->CR,FLASH_CR_OPTSTRT);//开始更新 “选项字节” FLASH_WaitForLastOperation(100);// 等待flash 操作结束 CLEAR_BIT(FLASH->CR,FLASH_CR_OPTSTRT);// HAL_FLASH_OB_Launch();// 加载flash,会导致重启. OPT 生效 HAL_FLASH_OB_Lock(); HAL_FLASH_Lock(); } else { PRINT_LOG("WTD frozen in stop\n"); } }
在系统初始化的时候,调用以上函数,就可以解决stop模式后关闭看门狗的问题。
-
Option byte背景知识。option byte 是