应该是在main中的while中,不可以在中断中,有时主程序不运行,可以中断是可以运行的,这样发现不了问题。
要计算一下主程序中每一段代码的运行时间,在中间插上喂狗的代码函数
喂狗的位置是程序运行的必经路上喂狗。建议不要放到中断里面去喂狗。
另外,喂狗的时间要大于单次循环的最大时间。
比如STM32F1的最大喂狗时间是4S。
估算程序运行时间,然后根据看门狗设置的超时时间喂狗。
一般情况下,看门狗超时时间需要超过主循环的一个最长周期,这样在主循环的任意位置喂狗都不会造成系统复位。同时还要注意主循环里尽量不要再使用while之类的阻塞性语句,不然看门狗可能会因为程序阻塞在这样的语句里来不及喂狗而触发复位中断。
程序里面延时波动大的,最好用变量记录延时时长来做延时。