0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

看门狗定时器、复位源、异常处理机制科普

信盈达 2025-11-17 10:53 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式开发中,系统一旦“跑飞”,工程师最怕的不是 bug,而是程序卡死无人知。这时,芯片自身的自我保护机制就至关重要。看门狗、复位源和异常处理机制,是保证系统可靠性的三大基石。本文带你梳理清楚它们的作用、原理与应用。

一、看门狗定时器(Watchdog Timer)

1. 原理

看门狗定时器本质上是一个独立定时器,持续倒计时:

  • 软件在规定时间内“喂狗”(重置看门狗计数器),系统继续运行。
  • 如果程序死循环或跑飞,没有及时喂狗,看门狗触发复位,将 MCU 拉回初始状态。

示例:STM32 独立看门狗 IWDG 喂狗代码

  1. #include"stm32f4xx_hal.h"
  2. IWDG_HandleTypeDef hiwdg;
  3. voidWatchdog_Init(void){
  4. hiwdg.Instance=IWDG;
  5. hiwdg.Init.Prescaler=IWDG_PRESCALER_64;
  6. hiwdg.Init.Reload=0x0FFF;// 最大计数
  7. HAL_IWDG_Init(&hiwdg);
  8. }
  9. voidFeed_Watchdog(void){
  10. HAL_IWDG_Refresh(&hiwdg);// 喂狗
  11. }
  12. intmain(void){
  13. HAL_Init();
  14. Watchdog_Init();
  15. while(1){
  16. // 主循环任务
  17. Feed_Watchdog();// 喂狗
  18. HAL_Delay(100);// 模拟其他操作
  19. }
  20. }

2. 应用场景

3. 开发注意点

  • 喂狗操作应放在主循环关键路径或任务完成后,而不是单纯在中断中定时喂,否则失去意义。
  • 某些 MCU 提供独立看门狗(IWDG)与窗口看门狗(WWDG),后者要求“既不能太早喂,也不能太晚喂”,增加可靠性。

二、复位源(Reset Source)

复位让 MCU 回到确定的起点,触发来源多样:

  1. 上电复位(POR)
  2. 外部复位(External Reset)
  3. 看门狗复位
  4. 低电压复位(Brown-out Reset)
  5. 软件复位(Software Reset)

示例:软件复位 STM32

  1. #include"stm32f4xx_hal.h"
  2. voidSoftware_Reset(void){
  3. NVIC_SystemReset();// 触发软件复位
  4. }

复位意义

  • 保证系统回到安全初始状态
  • 避免在电源或逻辑异常下继续运行
  • 给系统“第二次机会”

三、异常处理机制(Exception Handling)

即使有看门狗和复位,系统运行中仍可能遇到不可避免的异常,如访问非法地址、总线错误或中断嵌套冲突。

1. 异常来源

  • 硬件异常:除零错误、非法指令、总线错误
  • 系统异常:中断优先级冲突、栈溢出
  • 软件异常:数组越界、指针错误

2. 处理方式

  • 异常向量表:启动时建立,不同异常对应不同入口函数。
  • 硬件保护:部分 MCU 自动保存现场寄存器,便于恢复。
  • 软件处理:开发者可编写异常处理函数(如HardFault_Handler),打印或记录错误信息。

示例:Cortex-M HardFault 处理

  1. voidHardFault_Handler(void){
  2. // 可以点亮 LED 或输出日志
  3. while(1){
  4. // 死循环,等待复位或调试
  5. }
  6. }

3. 应用实践

  • Cortex-M 系列常见异常:
  • HardFault(硬错误)
  • MemManage(存储器管理错误)
  • BusFault(总线错误)
  • UsageFault(用法错误)
  • 异常处理函数中可加入死循环 + LED 闪烁或日志打印,方便调试。

四、三者关系

  • 看门狗:主动防御程序“卡死”
  • 复位源:系统“重启按钮”,确保安全状态
  • 异常处理:运行中诊断问题

它们共同构成系统的三道保险:

  1. 1.异常处理发现问题
  2. 2.看门狗在关键时刻触发复位
  3. 3.复位源保证重启后系统稳定

总结

嵌入式开发中,功能跑通只是第一步,系统可靠性才是真正考验。

  • 看门狗确保程序不会永久卡死
  • 复位源保证系统能安全回到起点
  • 异常处理机制帮助定位问题

三者配合,才能让嵌入式系统在无人值守的环境下长期稳定运行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 看门狗
    +关注

    关注

    10

    文章

    607

    浏览量

    72580
  • 定时器
    +关注

    关注

    23

    文章

    3360

    浏览量

    121742
  • 异常处理
    +关注

    关注

    0

    文章

    15

    浏览量

    7448
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一文详解看门狗定时器

    看门狗定时器由独立的1 Mhz 片内振荡驱动。这是VCC = 5V 时的典型值。请参见特性数据以了解其他VCC 电平下的典型值。通过设置看门狗定时
    发表于 09-02 16:40 4841次阅读
    一文详解<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>

    看门狗定时器的设计、工作原理及看门狗定时器的操作

    看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数,一般给看门狗一个数字,程序开始运行后看门狗
    发表于 05-23 09:14 8531次阅读
    <b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的设计、工作原理及<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的操作

    看门狗喂狗时间及程序

    ,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位看门狗分硬件
    发表于 10-16 09:19 1.8w次阅读

    看门狗定时器的作用

    看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位看门狗定时器
    发表于 10-20 14:41 7194次阅读

    dsp看门狗定时器的作用解析

    看门狗在外围监控DSP中软件的运行以及硬件的操作,当CPU出现故障时,看门狗将执行系统复位。如果软件进入了一个不正确的循环或者CPU出现暂时的混乱,看门狗
    发表于 11-21 16:52 1.5w次阅读
    dsp<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的作用解析

    基于VxWorks的看门狗定高效定时机制设计实现

    VxWorks提供了一个看门狗定时器(watchDog timer),它由以下四个函数维护: wdCreate( ) 创建并初始化一个看门狗定时器;wdDelete( ) 终止并
    发表于 03-06 09:22 5396次阅读
    基于VxWorks的<b class='flag-5'>看门狗</b>定高效<b class='flag-5'>定时机制</b>设计实现

    TB3123 - PIC®单片机的窗口看门狗定时器

    窗口看门狗定时器(Windowed Watchdog Timer,WWDT)是PIC单片机的增强型看门狗定时器。该定时器是PIC单片机现有
    发表于 03-26 14:35 0次下载
    TB3123 - PIC®单片机的窗口<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>

    看门狗定时器防止溢出复位程序

    看门狗定时器用来防止程序因供电电源、空间电磁干扰或其它原因引起的强烈干扰噪声而跑飞的事故。程序中设置看TL=WDTPW+WDTCNTCL,当程序跑飞不能及时清零看门狗,导致看门狗溢出
    发表于 04-23 09:59 5163次阅读
    <b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>防止溢出<b class='flag-5'>复位</b>程序

    看门狗定时器的相关问题和实验说明

    看门狗的作用: 看门狗定时器是一个计数,基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗计数
    的头像 发表于 10-06 12:59 5213次阅读
    <b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的相关问题和实验说明

    可配置电源监视为多轨系统集成了可调看门狗复位定时器

    可配置电源监视为多轨系统集成了可调看门狗复位定时器
    发表于 03-21 06:26 7次下载
    可配置电源监视<b class='flag-5'>器</b>为多轨系统集成了可调<b class='flag-5'>看门狗</b>和<b class='flag-5'>复位</b><b class='flag-5'>定时器</b>

    LPC2294看门狗定时器

    看门狗定时器(WDT)特点1.如果不定期重新装载,会内部重置芯片2.调试模式3.由软件启动,但是需要硬件复位或者看门狗复位/中断才能禁用。4
    发表于 12-04 10:36 8次下载
    LPC2294<b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>

    看门狗定时器

    看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数,一般给看门狗一个数字,程序开始运行后看门狗
    发表于 12-09 09:21 7次下载
    <b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>

    使用高速微型看门狗定时器

    在恶劣环境中使用的高速微控制应用的设计人员将使用看门狗定时器来防止软件失控。DS80C320高速微控制集成了看门狗
    的头像 发表于 02-09 11:54 1673次阅读

    内部和外部看门狗定时器的比较

    本文比较了内部(与微处理器集成)和外部(基于硬件)看门狗定时器(WDT)的优缺点。它解释了内部看门狗定时器易于实现,但容易发生故障。MAXQ
    的头像 发表于 04-03 11:15 4063次阅读

    看门狗定时器的工作原理

    看门狗定时器是一种独立的计时硬件模块,其核心功能是倒计时。如果系统软件在计时超时前没有对其进行复位操作(即“喂狗”),
    的头像 发表于 10-21 14:18 1907次阅读
    <b class='flag-5'>看门狗</b><b class='flag-5'>定时器</b>的工作原理