前 言
本文仅供个人参考记录复习,如有错误或者模糊的地方欢迎指教.
看门狗是一种硬件计时器,它用于监控系统的运行状态并在出现故障或异常情况时采取相应的措施。它类似于一个定时器,如果系统在特定的时间间隔内没有向看门狗喂食,即未及时重置其计时器,那么看门狗将被触发并执行预定的动作,例如软件复位系统。
WDG看门狗
看门狗是一种很重要的硬件功能,0用于监视系统是否正常运行。当系统出现故障或死锁时,看门狗会自动采取措施,以保证系统的稳定性和正确性。
看门狗可以对系统的运行状态进行监控,包括程序计数器、堆栈指针等关键信息,以检测系统是否正常运行。如果系统出现死锁或其他异常情况,例如程序无限循环、中断嵌套等,看门狗就会检测到,并采取相应的措施,如软件复位、中断处理等,以恢复正常运行。当系统出现严重错误时,可能会导致系统挂起,无法响应外部事件或命令。此时,看门狗可以强制复位系统,从而使其恢复到初始状态。
需要我们合理规划程序,对漏洞、故障和干扰提前准备处理办法,最后才使用看门狗对系统复位解决无法预见的问题。
独立看门狗(Independent Watchdog)和窗口看门狗(Window Watchdog)都是常见的看门狗类型
独立看门狗
独立看门狗使用一个定时器来监控系统的运行状态,并在特定的时间间隔内没有喂狗信号时触发动作。通常,独立看门狗可以通过配置一个超时时间来确定系统的响应时间。
工作原理:当系统正常运行时,会周期性地向独立看门狗发送喂狗信号,重置看门狗计时器,防止其超时触发。如果系统出现故障或死锁,无法正常发送喂狗信号,则看门狗计时器将超时,触发看门狗中断或复位操作,以恢复系统的正常运行状态。
由图可知看门狗计数器溢出后会直接发出复位信号而不是中断,而喂狗即重装载数值,若程序卡死没有及时喂狗,则计算器归零后程序复位。
输入时钟为LSI内部低速时钟,经过8位(256)预分频器分频后驱动12位(4095)递减计数器,需先在键寄存器写入特定数据控制电路喂狗。喂狗时重装载寄存器中的值会被复制在递减计数器中,这时计数器回到重载值重新自减。
超时时间
超时时间指的是看门狗定时器的计数周期。当IWDG开始计数后,如果在超过超时时间之后没有被重置,就会触发看门狗复位。这样可以确保系统在正常运行时定期重置看门狗,以避免系统崩溃或死锁的情况。
超时时间:
寄存器
键寄存器(IWDG_KR)
用于启动或重载独立看门狗计数器。通过向该寄存器写入特定的值,可以激活、重加载或喂狗。
预分频寄存器(IWDG_PR)
用于设置IWDG的时钟预分频系数。通过修改该寄存器的值,可以改变IWDG计数器的时钟频率,从而影响IWDG的溢出时间。
重装载寄存器(IWDG_RLR)
用于设置IWDG的重装载值。当IWDG计数器达到该值时,会导致IWDG溢出并触发复位。通过修改该寄存器的值,可以调整IWDG的溢出时间。
状态寄存器(IWDG_SR)
用于检查IWDG的状态。其中包含了是否发生了看门狗溢出的标志位。
窗口看门狗
与独立看门狗不同,窗口看门狗引入了一个时间窗口,在这个时间窗口内喂狗不会触发看门狗。只有在时间窗口外没有喂狗信号时,看门狗才会触发。
工作原理:窗口看门狗设置了一个较长的超时时间和一个较短的时间窗口。当系统正常运行时,在时间窗口内向窗口看门狗发送喂狗信号可以重置计时器,并防止触发看门狗。只有当系统出现故障或无法在时间窗口内喂狗时,看门狗计时器超时,触发看门狗中断或复位操作。看门狗控制寄存器的T6位既可以当作计算器的值参与递减计数,又可以作为溢出位控制复位。
窗口看门狗相对于独立看门狗具有更高的灵活性和精确性。它可以根据应用需求调整时间窗口的大小,以适应不同的工作模式和时间要求。通过合理配置和使用独立看门狗或窗口看门狗,可以提高系统的可靠性和稳定性,防止由于软件错误或其他异常情况导致的系统故障。
超时时间
超时时间:
窗口时间:
寄存器
配置寄存器(WWDG_CFR)
配置寄存器用于设置窗口看门狗的工作模式、预分频值和窗口时间。
控制寄存器(WWDG_CR)
控制寄存器用于控制窗口看门狗的启动、停止和重载等操作。
状态寄存器(WWDG_SR)
状态寄存器用于读取窗口看门狗的状态信息。