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 @   不打鱼光晒网  阅读(1704)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示