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(); //窗口狗也暂停
这样,调试进入断点时不管停留多久,都不会触发看门狗
但在运行时,照样会出发看门狗
可以做一个简单的测试,初始化后,调用这两句
然后写一个延时空跑 时间超过喂狗时间
前边加断点,停留,不复位
运行这个耗时的部分, 系统复位,并且重新进入这个点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)