一、引言
在嵌入式系统中,看门狗定时器(Watchdog Timer, WDT)是一种用于监控系统运行状态的硬件或软件定时器。如果系统因为软件错误或其他原因陷入死循环或长时间无响应,看门狗定时器会触发系统复位,以确保系统能够自动恢复运行。
本次作业用到独立看门狗,独立看门狗(Independent Watchdog, IWDG)是 STM32 微控制器中的一种硬件定时器,用于在系统出现故障(如陷入死循环或长时间无响应)时自动复位系统。它独立于主系统时钟运行,通常使用内部低速时钟(LSI)作为时钟源,这使得它即使在主系统时钟出现故障时也能正常工作。
喂狗(Feeding the Watchdog)
“喂狗”是指在看门狗定时器溢出之前,通过软件重置看门狗定时器的计数器。通常,这是在主程序正常执行时定期进行的操作。通过“喂狗”,可以告诉看门狗系统正在正常运行,不需要复位。典型地,这通过调用一个特定的函数(如 IWDG_Feed()
)来完成。
不喂狗(Not Feeding the Watchdog)
“不喂狗”是指看门狗定时器在预设的时间内没有被重置。这通常意味着系统出现了问题,例如程序陷入死循环、无响应或者长时间执行某个任务未完成。在这种情况下,看门狗定时器会溢出并触发系统复位。
二、代码
1.main.c
IWDG_Config(IWDG_Prescaler_64 ,625); 用来配置看门狗定时器,使其在1秒后超时
主循环则用来检测按键是否按下:
1s内如按下则喂狗,将调用