hal【看门狗配置】STM32调试时防止被看门狗复位的解决办法

STM32F103C8的例子

 

 

 IWDG的配置项,40k/16=2.5khz,T=1/f=0.4ms

下图的最大喂狗时间就是4095*0.4=1638毫秒

 以我目前的配置习惯, os指示灯闪烁周期也就是1.5秒,直接把喂狗放在闪灯任务里就行了

 

独立看门狗的时钟为32k分频

可以配置为32分频,这样就是1khz,方便计算

 

 

 初始化后,看门狗就启动了,不需要另外手工启动

喂狗

 HAL_IWDG_Refresh(&hiwdg);

 

但,调试的时候,看门狗也会把程序复位,这是不行的,所以 

  找个地方把这两句放进去就好了

    __HAL_DBGMCU_FREEZE_IWDG();    // 在调试单步时,独立看门狗iwdg暂停    The independent watchdog counter clock is stopped when the core is halted
    __HAL_DBGMCU_FREEZE_WWDG();        //窗口狗也暂停

 这样,调试进入断点时不管停留多久,都不会触发看门狗

但在运行时,照样会出发看门狗

可以做一个简单的测试,初始化后,调用这两句

然后写一个延时空跑 时间超过喂狗时间

前边加断点,停留,不复位

运行这个耗时的部分, 系统复位,并且重新进入这个点

 

posted @ 2022-04-01 19:43  不打鱼光晒网  阅读(1156)  评论(0编辑  收藏  举报