STMCU小助手
发布时间:2022-6-13 17:22
|
01. WWDG简介 窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位变成 0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个 MCU 复位。如果在递减计数器达到窗口寄存器值之前刷新控制寄存器中的 7 位递减计数器值,也会产生 MCU 复位。这意味着必须在限定的时间窗口内刷新计数器。( Q h) H4 R. C" r 5 l" c5 Q! F) [ 02. WWDG主要特性 可编程的自由运行递减计数器: _4 b& u2 a' u 复位条件$ a2 n6 \7 n2 X, S% F — 当递减计数器值小于 0x40 时复位(如果看门狗已激活)3 l' N2 |# M/ v% w0 {+ ] — 在窗口之外重载递减计数器时复位(如果看门狗已激活)(请参见 图 200) 提前唤醒中断 (EWI):当递减计数器等于 0x40 时触发(如果已使能且看门狗已激活) 03. WWDG功能说明 如果激活看门狗(WWDG_CR 寄存器中的 WDGA 位置 1),则当 7 位递减计数器(T[6:0]位)从 0x40 滚动到 0x3F(T6 已清零)时会引发复位。当计数器值大于窗口寄存器中所存储的值时,如果软件重载计数器,则会产生复位。
6 B( }# R4 b; R2 I4 ^1 a: H! y7 X 应用程序在正常运行过程中必须定期地写入 WWDG_CR 寄存器以防止 MCU 发生复位。只有当计数器值低于窗口寄存器值时,才能执行此操作。存储在 WWDG_CR 寄存器中的值必须介于 0xFF 和 0xC0 之间: 使能看门狗 : W# M5 W9 R3 o% i5 i0 P/ H- p+ { 在系统复位后,看门狗总是处于关闭状态。可通过设置 WWDG_CR 寄存器中的 WDGA 位来使能看门狗,之后除非执行复位操作,否则不能再次关闭。8 [# h5 Q3 i4 s" T 控制递减计数器% F, w; O0 c/ C8 p 3 F/ q0 G& l7 w q- G! u! h J) x 递减计数器处于自由运行状态:即使禁止看门狗,递减计数器仍继续递减计数。当使能看门狗时,必须将 T6 位置 1,以防止立即复位。 T[5:0] 位包含了看门狗产生复位之前的计时数目;复位前的延时时间在一个最小值和一个最大值之间变化,这是因为写入 WWDG_CR 寄存器时,预分频值是未知的(请参见 图 200)。配置寄存器 (WWDG_CFR) 包含窗口的上限:为防止发生复位,当递减计数器的值低于窗口寄存器值且大于 0x3F 时必须重载。/ M% o, y) o( O. V* | - X, A( s' \# y2 V P: M0 h( p 看门狗中断高级特性 如果在产生实际复位之前必须执行特定的安全操作或数据记录,则可使用提前唤醒中断(EWI)。通过设置 WWDG_CFR 寄存器中的 EWI 位使能 EWI 中断。当递减计数器的值为0x40 时,将生成 EWI 中断。在复位器件之前,可以使用相应的中断服务程序 (ISR) 来触 发特定操作(例如通信或数据记录)。4 q* L n3 R# ^4 S! C8 u 在某些应用中,可以使用 EWI 中断来管理软件系统检查和/或系统恢复/功能退化,而不会生成 WWDG 复位。在这种情况下,相应的中断服务程序 (ISR) 可用来重载 WWDG 计数器以避免 WWDG 复位,然后再触发所需操作。; s4 H9 Y3 u6 D: e+ G , T5 }: r" Z$ ?' ` 通过将 0 写入 WWDG_SR 寄存器中的 EWIF 位来清除 EWI 中断。 04. 设置看门狗超时" J5 X1 _- A/ ?1 J: {% R4 s9 ? / z! p1 F- m5 d& P; [
$ H+ s- ^& i' l j7 v 有关 T WWDG 的最小值和最大值,请参见下表。
温馨提示
写入 WWDG_CR 寄存器时,始终将 1 写入 T6 位,以避免生成立即复位。 " t& D6 Z8 G1 [8 E% t) L
; Z+ c% d' ]) n$ D6 q& b: L 05. WWDG寄存器 5.1 控制寄存器 (WWDG_CR) Status register& P2 n4 C7 r' N8 |) Y2 V8 h' c 偏移地址:0x00 复位值:0x0000 007F- F9 y. k! V7 R' y p 3 y) @' X$ X8 Q4 ?- O5 m: V
{6 {) j) u9 T" c, y" l 5.2 配置寄存器 (WWDG_CFR)7 h$ Z0 `, ^/ _2 K: B: {* o/ E Configuration register 偏移地址:0x04 复位值:0x0000 007F! _. x: g( }( u+ y$ Z& } ) P! o @+ g) k. ]/ _- \: }
+ o+ c* {0 q# f6 P- r( O" i. R 5.3 状态寄存器 (WWDG_SR)* I' |2 o4 N' L" }9 ? Status register 偏移地址:0x08# {8 ]2 v; W; h: v4 A; J# S& s 复位值:0x0000 00000 e* p/ X8 A0 @2 L9 ~6 k 8 [& f- d. }; j1 i" f
2 @1 [" l) [: U9 M 5.4 WWDG寄存器映射
1 ?+ s: ?. n* W) U; k3 {( h$ } |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版