电子产业一站式赋能平台

PCB联盟网

搜索
查看: 93|回复: 0
收起左侧

单片机如何选择合适的系统复位方案?

[复制链接]

989

主题

989

帖子

8575

积分

高级会员

Rank: 5Rank: 5

积分
8575
发表于 2025-3-18 08:03:00 | 显示全部楼层 |阅读模式

30m432iej3r640467531.gif

30m432iej3r640467531.gif

8 {6 L) m& B* i  a( \5 X8 u点击上方蓝色字体,关注我们
" f( r4 o, t5 \" A( P8 r# ^! M$ S. o9 ?6 r. T4 b
- x9 s* A0 E8 C9 Q9 k2 r: T
看门狗的基本原理是通过一个定时器来监测系统运行状态。正常情况下,应用程序需要定期向看门狗发送信号(喂狗),以防止定时器溢出。  Z( H! m+ m' \1 V( Z! Y
7 a6 d" T0 m* v1 c
一旦程序发生异常,导致看门狗未能在规定时间内收到喂狗信号,定时器将会触发系统复位。+ j  p  }% ~) r% m  y6 E
$ Z  @( {" q8 D" p2 R( r
根据实现方式的不同,看门狗可以分为硬件看门狗软件看门狗
$ V8 c) S! A. }9 O
( @8 Y/ E4 t: `" B+ ^& O

4gkt5o5bsb3640467631.png

4gkt5o5bsb3640467631.png

0 g, ~4 q2 P* S8 g$ i1
+ Y1 V) ?. w( ~9 `硬件看门狗3 ]) _, x4 Z% T( W* S6 U4 ]; U
1.1、外部独立硬件看门狗4 E7 w* z4 y- F# C  v/ H

ajrddgejbsb640467731.png

ajrddgejbsb640467731.png
; L6 G3 u  D, |) V/ \% _1 l7 ~
. q2 q( R' r& {7 C; p+ b) L
特点:  d  j( `" D1 A. L3 I9 D9 g# M; `; n
  • 作为独立于MCU/MPU的外部芯片运行
  • 不受主处理器影响,即使处理器死机仍可触发复位
  • 可靠性最高,适用于工业、汽车、航天等对可靠性要求极高的应用场景2 a: E) w# T# e. i4 {7 b

    " m0 f/ E' k  Q6 p* o6 d+ {0 q* H5 k
    % h& x+ C+ G# Q# y
    工作方式:2 O5 Y6 Z# k" Z- v  `) y3 V
  • MCU 通过 GPIO 向看门狗芯片发送喂狗信号(例如周期性地翻转一个引脚)
  • 若 MCU 失去响应,外部看门狗检测到超时,则输出复位信号
  • 由于其独立性,该类看门狗的喂狗时间通常不可调或调整较受限2 g* B$ k% G7 c9 ~" v5 o

    . r8 T7 S6 x& {, c7 }, ]1.2、内置硬件看门狗
    . K9 l- D: N9 S特点:
    . A. ?0 Q3 o  y: r4 j1 u0 J5 F
  • 由处理器内部的定时器实现,通常由 MCU 内部的 WDT 外设负责管理
  • 需要软件驱动程序支持,可编程设置超时时间
  • 复位逻辑依赖于 MCU 自身,一旦 MCU 时钟或电源管理单元故障,可能导致看门狗失效
    - D& B$ l" o% m& N' D7 ]- @

    5 T7 @) P: v/ f6 W: f+ N
    ' ]* ^+ X) j) T, @7 d; L8 G3 V
    工作方式:& w( o* E5 ~  ?
  • 在应用程序中启用 WDT 并设置适当的超时时间
  • 定期调用 API 进行喂狗(如 STM32 的 HAL_IWDG_Refresh())
  • 若 MCU 进入死循环或阻塞,看门狗超时触发系统复位4 E  P. E6 W0 i+ W1 n& u+ w

    8 ?& I3 h4 v9 Y: c" E7 k2: V2 V% R) \& e& |7 Q; @1 P
    软件看门狗
    0 D/ W# x) \( Z特点:
    & ]# ?1 O  f4 Z" t
  • 通过软件定时器模拟看门狗功能
  • 依赖系统的定时器中断,若中断系统异常,可能会失效
  • 适用于轻量级应用,但可靠性远低于硬件看门狗
    ' y9 f' \. ?: F) l
    ; Z: w0 _! M! _! D; D1 l" h4 B) E

    : D- W! ~. j- l' k工作方式:
    , z2 `, E7 {  r! t
  • 在任务调度器(如 FreeRTOS)中实现定时检查
  • 任务正常运行时定期重置软件定时器
  • 若某任务超时未喂狗,则触发复位逻辑
    + ^' g( R; t7 F4 Q. b  @' w
    ! q: P4 F, @2 l+ s
    在调试过程中发现的故障,应该通过代码优化、异常处理、错误恢复机制等手段加以解决,而不是依赖看门狗。
    # x' Q! b8 q" w1 g" h
    + k* p/ Y$ v. d3 y) ~看门狗的作用是在非人为可控情况下自动恢复系统,它不能取代良好的软件工程实践。
    $ J1 }) J3 c. c
    # L+ y7 I! o' B1 _在某些应用场景(如数据采集系统),系统崩溃时可能需要保护关键数据,以便在重启后进行恢复。2 E$ w" ?& }$ W2 J

    8 N! b2 L! w3 c$ L: e这可能需要:
    8 Z* S/ G- Q! M( A  }6 t/ G/ z
  • 采用EEPROMFlash电池备份 RAM 存储关键变量
  • 结合上电自检(POST)机制,分析重启原因,决定是否进入故障恢复流程. ?' {7 J% a! \

    & S. G" V. R4 Q3
    * M: d; n1 }8 }" M/ I, a看门狗喂狗策略( ?- U& i, U6 l+ f
  • 避免在主循环或高频中断中盲目喂狗:这样可能会掩盖实际的问题,导致系统在异常情况下仍然喂狗,无法及时复位。解决方案:在关键任务执行完毕后喂狗,而不是简单地在循环内喂狗。
  • 结合任务超时检测(对于 RTOS):可以使用任务看门狗(Task Watchdog),在任务级别进行超时监测,而非仅靠系统级 WDT 进行复位。
  • 多级看门狗策略:采用软件看门狗监测任务,硬件看门狗监测整个系统,以构建更健壮的故障恢复机制。. X3 {& [2 b8 x2 N0 S( z
    看门狗是一种保障系统稳定性的关键机制,但它并不能取代软件优化和异常处理。! e& r! S* F- B; g
    ' M" u3 Y( j% K3 Q; [
    在高可靠性应用中,外部硬件看门狗是最佳选择,而在一般嵌入式应用中,内置硬件看门狗已经足够。. k3 _) f0 _  J4 j/ X- A
    3 }6 F; f( v( `1 }
    软件看门狗可以作为任务级监测的补充手段。
    8 L# N1 D  Z- ]
    " w4 i9 b4 k" `0 g合理利用不同类型的看门狗,结合健壮的软件架构,才能真正提升系统的稳定性和可靠性。
    ( `# Q! @: ?; Y6 j9 A8 x

    neiqvdt43bo640467832.jpg

    neiqvdt43bo640467832.jpg

    ; T" \2 [  N- }5 j) j

    4hoxr3bhvct640467932.gif

    4hoxr3bhvct640467932.gif

    5 E( D- ~+ j3 \: a点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表