窗口看门狗(WWTD)¶
功能介绍¶
窗口看门狗的时钟是从APB时钟PCLK分频得到的,当使用后假如软件在计数器到达指定值之前未能及时“喂狗”,就会产生复位或者中断。此外,WWTD还具有一个可配置的窗口值,假如软件在计数值达到窗口下限值之前或者上限值之后“喂狗”,也会产生中断或复位。因此软件必须在一个限定的时间窗口内“喂狗”。
窗口看门狗的主要特征有:
- 时钟来自于PCLK分频
- 支持基于窗口的service
- 支持正常模式和pre-warning alarm模式
- 正常模式下,喂狗时机错误、计数器越界、喂狗值写错可立即产生复位请求
- Pre-warning alarm模式下,第一次越上界产生中断,第二次越上界产生复位请求;喂狗值错或者喂狗时机在下界之前产生复位请求
- 锁定寄存器,避免寄存器误操作
寄存器映射¶
WWTD寄存器映射的基地址为0x4003B000,具体的寄存器映射见表14。
表14 WWTD寄存器映射
偏移量 | 名称 | 位宽 | 类型 | 复位值 | 描述 |
---|---|---|---|---|---|
0x00 | WDT_CTR | 32 | R/W | 0x00000000 | 控制寄存器 |
0x04 | WDT_SCALE | 32 | R/W | 0x00000001 | 分频寄存器 |
0x08 | WDT_SRV | 32 | WO | - | 喂狗值寄存器 |
0x0C | WDT_WLB | 32 | R/W | 0x00000000 | 窗口下界寄存器 |
0x10 | WDT_WUB | 32 | R/W | 0xFFFFFFFF | 窗口上界寄存器 |
0x14 | WDT_LOCK | 32 | R/W | 0x00000000 | 解锁命令寄存器 |
0x18 | WDT_COUNT | 32 | RO | 0x00000000 | 计数值寄存器 |
0x1C | WDT_STATUS | 32 | RO | 0x00000000 | 状态寄存器 |
控制寄存器(WDT_CTR)¶
偏移量:0x00
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:7 | Reserved | 0x0000000 | R/W | 保留 |
6 | INT_EN | 0 | R/W | 中断产生使能: 0:禁止 1:使能 |
5 | RST_EN | 0 | R/W | 复位产生使能: 0:禁止 1:使能 |
4 | WIND_EN | 0 | R/W | Window功能开关: 0:在上限以内的范围内喂狗即可 1:必须在窗口范围内喂狗 |
3 | HALT_EN | 0 | R/W | 保留 |
2 | MODE | 0 | R/W | 工作模式: 0:正常模式 1:pre-warning alarm模式 |
1 | CLK_SEL | 0 | R/W | 时钟选择: 0:PCLK分频后时钟 1:外部输入时钟 |
0 | GLB_ENB | 0 | R/W | WWTD使能: 0:禁止 1:使能 |
分频寄存器(WDT_SCALE)¶
偏移量:0x04
复位值:0x00000001
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:16 | Reserved | 0x0000 | R/W | 保留 |
15:0 | WDT_SCALE | 0x0001 | R/W | 分频寄存器。当选择PCLK分频后的时钟作为计时参考时钟时,此寄存器作为PCLK的分频系数。当配置为0或1时即不分频 |
喂狗值寄存器(WDT_SRV)¶
偏移量:0x08
复位值:-
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | WDT_SRV | - | WO | 喂狗值寄存器: 在窗口内向该寄存器写入0xABADC0DE即表示喂狗,若写入其他值会产生复位请求。如果中断请求已经产生,写入0xABADC0DE会清除中断请求 |
窗口下界寄存器(WDT_WLB)¶
偏移量:0x0C
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | WDT_WLB | 0x00000000 | R/W | 窗口下界寄存器 |
窗口上界寄存器(WDT_WUB)¶
偏移量:0x10
复位值:0xFFFFFFFF
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | WDT_WUB | 0xFFFFFFFF | R/W | 窗口上界寄存器 |
解锁命令寄存器(WDT_LOCK)¶
偏移量:0x14
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | WDT_LOCK | 0x00000000 | R/W | 解锁命令寄存器: 向此寄存器写入0x51ACCE55才能写该模块相关其他所有的寄存器,否则不能写其他所有的寄存器。 读此寄存器时: 0x00000000:不能写其他所有寄存器 0x00000001:可以写其他所有寄存器 |
计数值寄存器(WDT_COUNT)¶
偏移量:0x18
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | WDT_COUNT | 0x00000000 | RO | 计数值寄存器 |
状态寄存器(WDT_STATUS)¶
偏移量:0x1C
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:1 | Reserved | 0x00000000 | RO | 保留 |
0 | CNT_EXT | 0 | RO | 计数值计数越界状态: 1:已越上界 0:未越上界 |