STM32
直播中

贾伟刚

8年用户 1673经验值
私信 关注
[问答]

如何在调试时直接禁用开门狗而不影响cubemx生成的代码呢

如何在调试时直接禁用开门狗而不影响cubemx生成的代码呢?

如何在调试时直接禁用开门狗而不影响正式版的程序运行呢?

回帖(1)

张英

2021-8-16 17:08:54
前言
使用cube mx生成的stm工程开启了开门狗,在调试打断点时,开门狗会继续计数,从而对导致复位,这个时候是没法直接禁止开门狗的,如果把cube mx生成的代码直接修改了,下次使用cube mx修改工程时又会覆盖掉,如果忘掉了修改回来,开门狗又会开始在调试时捣乱,下面的方法介绍了如何在调试时直接禁用开门狗而不影响cube mx生成的代码和正式版的程序运行
资料
当前使用的芯片手册 dbg章节


代码
HAL_RCC_DBGMCU_CLK_ENABLE(); __HAL_DBGMCU_FREEZE_IWDG(); // 在调试单步时,iwdg暂停 The independent watchdog counter clock is stopped when the core is halted __HAL_DBGMCU_FREEZE_WWDG(); //
代码分析
__HAL_DBGMCU_FREEZE_IWDG();
参考HAL库定义
#define __HAL_DBGMCU_FREEZE_IWDG() SET_BIT(DBGMCU》APB1FZ,DBGMCU_APB1_FZ_DBG_IWDG_STOP) #define __HAL_DBGMCU_UNFREEZE_IWDG() CLEAR_BIT(DBGMCU》APB1FZ,DBGMCU_APB1_FZ_DBG_IWDG_STOP)
都是直接为寄存器赋值
HAL_RCC_DBGMCU_CLK_ENABLE();
注:DBG的时钟需要开启,不开启时,赋值不会赋成功。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分