看门狗定时器

WDGT是硬件定时电路,用于检测软件故障导致的系统故障。WDGT在内部计数器值达到一个预设门限时触发一个复位(WWDGT触发中断)。

1.独立看门狗定时器(FWDGT)

  • 独立时钟源(IRC32K)
  • 12位向下计数器,计数器值到0时,产生系统复位
  • 独立看门狗定时器硬件控制位,用来控制是否在上电时自动启动独立看门狗定时器; 看门狗定时器_第1张图片
  • 控制寄存器(FWDGT_CTL)
    CMD[15:0]
    只可写,写入不同的值来产生不同的功能
    0x5555 :关闭 FWDGT_PSC FWDGT_RLD 的写保护
    0xCCCC :开启独立看门狗定时器定时计数器。计数减到 0 时产生复位
    0xAAAA :重装载计数器
  • 预分频寄存器( FWDGT_PSC)
    独立看门狗定时器计时预分频选择。写这些位之前要通过向 FWDGT_CTL 寄存器写0x5555去除写保护。在改写这个寄存器的过程中, FWDGT_STAT 寄存器的 PUD 位被置1,此时读取此寄存器的值都是无效的。
    PSC[2:0]
    000 1 / 4
    001 :1 / 8
    010 1 / 16
    011 1 / 32
    100 1 / 64
    101 1 / 128
    110 1 / 256
    111 1 / 256
    如果应用需要使用不同的预分频系数,改变预分频值之前必须等到 PUD 位被清 0 。更新了预分频寄存器中的值后,在代码持续执行之前不必等待PUD 值被清零(在进入省电模式前需要等待PUD 值清零)。
  • 重装载寄存器(FWDGT_RLD)
    RLD[11:0]
    独立看门狗定时器定时计数器重装载值, FWDGT_CTL寄存器写入0xAAAA的时候,这个值会被更新到看门狗定时器计数器中。
    这些位有写保护功能。在写这些位之前需向 FWDGT_CTL 寄存器中写 0x5555 。在改写这个寄存器的过程中,FWDGT_STAT 寄存器的 RUD 位被置 1 ,从此寄存器中读取的任何值都是无效的。
    如果应用需要使用不同的重装载值,改变重加载值之前必须等到 RUD 位被清 0 。更新了重加载寄存器的值后,在代码持续执行之前不必等待RUD 值被清零(在进入省电模式前需要等待RUD 值清零)。
  • 状态寄存器(FWDGT_STAT)
    1  RUD
    独立看门狗定时计数器重装载值更新
    FWDGT_RLD寄存器写操作时,该位被置1 ,此时读取 FWDGT_RLD 寄存器的任何值都是无效的。在FWDGT_RLD 寄存器更新后,该位由硬件清零。
    0  PUD
    独立看门狗定时器预分频值更新
    FWDGT_PSC寄存器写操作时,该位被置1 ,此时读取 FWDGT_PSC 寄存器的任何值都是无效的。在FWDGT_PSC 寄存器更新后,该位由硬件清零。
    1.独立看门狗定时器(FWDGT)

2.窗口看门狗定时器(WWDGT)

  • 可编程7位向下计数器,计数值达0x3F时会系统复位(CNT[6]清零)。
  •  当计数器的值大于窗口寄存器的值时,更新计数器会产生复位。
  • 提前唤醒中断( EWI ):看门狗定时器打开,中断使能,当计数值达到 0x40 时将会产生中
    断。 看门狗定时器_第2张图片

    看门狗定时器_第3张图片

  • 控制寄存器(WWDGT_CTL)

    7  WDGTEN
    开启窗口看门狗定时器,硬件复位的时候清 0 ,写 0 无效。
    0 :关闭窗口看门狗定时器
    1 :开启窗口看门狗定时器
    6:0  CNT[6:0]
    看门狗定时器计数器的值。当计数值从 0x40降到0x3F ,产生看门狗定时器复位。当计数器值高于窗口值的时候,写计数器可以产生看门狗定时器系统复位
  • 配置寄存器(WWDGT_CFG)

    9  EWIE
    提前唤醒中断使能。如果该位被置 1 ,计数值达到 0x40(0100 0000) 时触发中断。该位由硬件复位清0 ,或通过 RCU 模块的 WWDGT 软件复位来清 0 。写 0 没有任何作用。
    8:7 PSC[1:0]
    预分频器,看门狗定时器计数器的时间基准
    00 PCLK1 / 4096 / 1
    01 PCLK1 / 4096 / 2
    10 PCLK1 / 4096 / 4
    11 PCLK1 / 4096 / 8
    6:0 WIN[6:0]
    窗口值,当看门狗定时器计数器的值大于窗口值时,写看门狗定时器计数器(WWDGT_CTL CNT 位)会产生复位。
  • 状态寄存器( WWDGT_STAT)
    0 EWIF
    提前唤醒中断标志位。当计数值达到 0x40,即使中断没有被使能(WWDGT_CFG中的EWIE位为0)该位也会被硬件置1 。这个 bit 可以通过写 0 清零,写 1 无效。

你可能感兴趣的:(单片机,嵌入式硬件)