STM32学习之看门狗(理论篇)
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载注明出处
看门狗是什么意思?
看门狗本质上是一种特殊的定时器
定时器的基本功能?
单片机中的定时器基本功能是在设定一定时间后自动触发某个动作。
定时器可以根据用户预先设定的时间,在时间到达后触发相应的动作。比如,设定定时器在 100ms 后触发中断,当定时器计时达到 100ms 时,会产生一个中断信号,CPU 会暂停当前正在执行的程序,转而去执行中断服务程序。在中断服务程序里,能够编写相应的代码来完成特定的任务,像控制 LED 灯的闪烁、读取传感器数据等。
喂狗操作会发生什么?
● 系统在正常运行期间,需要在计数器减到 0 之前,通过软件向 IWDG 发送复位信号,也就是 “喂狗”。这会让计数器重新加载初始值,继续递减计数,而避免系统发生复位。
那WDG跟一般定时器有何区别?
● WDG:主要用于监控系统运行状态,保障系统的稳定性和可靠性。当系统出现软件故障(如程序跑飞、死循环)或硬件异常,导致无法在规定时间内完成 “喂狗” 操作时,WDG 会触发系统复位,使系统重新启动,从而恢复正常运行。
● 一般定时器:主要用于实现定时功能,在设定的时间到达后触发特定的事件或任务。例如,定时触发中断服务程序、产生周期性的信号、控制设备的定时开关等。
复位后程序会怎么变化?
复位后,程序会从头开始执行,CPU 首先执行启动代码(Bootloader),初始化时钟、外设、内存等硬件资源。
看门狗种类
看门狗(Watchdog Timer)是一种用于监测系统运行状态、防止程序陷入死循环或异常状态的硬件或软件机制。以下是常见的看门狗种类及其特点的总结:
看门狗分类对比表
类型 | 工作原理 | 触发方式 | 应用场景 | 优缺点 |
---|---|---|---|---|
硬件看门狗 | 独立于主CPU的专用硬件电路,通过外部晶振或RC电路提供时钟,计数溢出时触发复位信号。 | 硬件复位(Reset)或中断(IRQ)。 | 高可靠性系统(如工业控制、汽车电子、航空航天)。 | 优点:完全独立于CPU,可靠性高; 缺点:需要额外硬件成本,配置灵活性低。 |
软件看门狗 | 由CPU执行的一段程序代码,通过定时器中断或系统调用实现计数,超时未刷新则触发复位或异常处理。 | 软件复位、跳转至特定处理函数或抛出异常。 | 资源受限的嵌入式系统(如单片机、低成本MCU)。 | 优点:无需额外硬件,成本低; 缺点:依赖CPU运行,若CPU卡死则失效。 |
窗口看门狗 | 硬件看门狗的一种特殊类型,要求喂狗操作必须在指定的时间窗口内完成(早于上限且晚于下限)。 | 超时或窗口外喂狗均触发复位。 | 对时序要求严格的系统(如安全关键系统、实时控制系统)。 | 优点:能检测程序跑飞或时序异常; 缺点:配置复杂,需精确计算窗口时间。 |
独立看门狗 | 硬件看门狗的一种,使用专用低速时钟(如STM32的LSI),不受主系统时钟影响,确保在时钟故障时仍有效。 | 独立时钟计数,超时触发复位。 | 对时钟稳定性要求高的系统(如通信设备、医疗仪器)。 | 优点:抗干扰能力强; 缺点:计时精度较低,依赖内部低速时钟。 |
系统看门狗 | 操作系统级的看门狗服务,通过监控关键进程或系统资源(如CPU负载、内存使用)来判断系统状态。 | 终止异常进程、重启服务或触发系统复位。 | 复杂系统(如Linux服务器、Android设备)。 | 优点:可针对特定进程监控; 缺点:依赖操作系统运行,内核崩溃时可能失效。 |
电源看门狗 | 监测电源电压或功耗,当电压低于阈值或波动异常时触发复位,防止系统在低电压下不稳定运行。 | 电压比较器触发硬件复位。 | 电池供电设备(如IoT设备、便携式仪器)或电压波动较大的环境。 | 优点:保护硬件免受低电压损坏; 缺点:仅关注电源状态,无法检测程序逻辑错误。 |