【STM32】Debug下禁用看门狗

问题背景

因为工程中加入了独立看门狗IWDG,但是有时候需要硬件仿真单步调试设置个断点啥的,这时候看门狗就会因为没有及时喂狗复位,弹窗报错,整个仿真都不能继续了。实测JLINK会弹窗如下图所示,但是亲儿子STLINK没有任何弹窗…【STM32】Debug下禁用看门狗_第1张图片
之前一直都是在debug的时候关掉看门狗宏定义,但是这样麻烦不说,会有一个隐患存在就是,真正的项目工程是需要看门狗的,我们随意关掉的话,终究会存在debug完之后忘记再重新打开看门狗的问题,所以我们最好的办法是能够在debug这个特定的条件下,冻结掉看门狗,就像低功耗下冻结看门狗一样。

解决办法:

翻阅参考手册

【STM32】Debug下禁用看门狗_第2张图片
【STM32】Debug下禁用看门狗_第3张图片

#define __HAL_DBGMCU_FREEZE_IWDG()           SET_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_IWDG_STOP)
#define __HAL_DBGMCU_UNFREEZE_IWDG()         CLEAR_BIT(DBG->APBFZ1, DBG_APB_FZ1_DBG_IWDG_STOP)

/*********************调试模式下禁用独立看门狗IWDG**********************************/
	__HAL_RCC_DBGMCU_CLK_ENABLE();  //打开时钟
	__HAL_DBGMCU_FREEZE_IWDG();	  //调试模式下,冻结看门狗计数器时钟
    __HAL_RCC_DBGMCU_CLK_DISABLE();   //关闭时钟
    
/*********************调试模式下使能独立看门狗IWDG**********************************/
	__HAL_RCC_DBGMCU_CLK_ENABLE();  //打开时钟
	__HAL_DBGMCU_UNFREEZE_IWDG();	  //调试模式下,使能看门狗计数器时钟
    __HAL_RCC_DBGMCU_CLK_DISABLE();   //关闭时钟

你可能感兴趣的:(STM32,stm32,单片机,看门狗,IWDG,debug)