STM32
登录
直播中
李斌
8年用户
1471经验值
私信
关注
[问答]
如何设置WWDG窗口看门狗的超时时间
开启该帖子的消息推送
WWDG
窗口看门狗WWDG的主要功能有哪些?
如何设置WWDG窗口看门狗的超时时间?
回帖
(1)
莫循虎
2021-9-24 15:15:32
手册说明:
窗口看门狗WWDG的主要功能
●可编程的自由运行递减计数器
●有条件的复位
─如果开启了看门狗,当递减计数器的数值小于0x40时产生复位
─如果开启了看门狗,当在指定的时间窗口之外重加载递减计数器的数值(见图27)时产生复位
●硬件或软件启动看门狗(由选择字节指定)
●可在HALT指令时产生复位(由选择字节配置)
WWDG功能说明
如果开启了看门狗(设置了WDGA=1),当7位的递减计数器(T[6:0]位)从0x40变为0x3F时(即T6变为0),看门狗产生一个复位信号并把复位引脚拉低。如果软件刷新计数器时,计数器的数值大于窗口寄存器中的数值,同样会产生复位。
(图25:STM8窗口看门狗框图)
在正常的操作期间,应用程序必须定期地写入WDGCR寄存器,以避免产生复位;这个写的动作必须在计数器的数值小于窗口寄存器的数值时进行。写入WDGCR寄存器的数值必须是介于0xFF和0xC0之间(见图26):
开启看门狗:
如果(通过选择字节)选择了软件看门狗,在系统复位后看门狗处于关闭状态。设置WDGCR寄存
器中的WDGA位将开启看门狗,随后在下次复位之前将不能关闭看门狗。
如果(通过选择字节)选择了硬件看门狗,看门狗将始终开启,而WDGA位将不起作用。
控制递减计数器:
递减计数器是自由运行计数器:即使未开启看门狗,它依然不断地递减计数。当开启看门狗
时,必须设置T6位以避免立刻产生复位。T[5:0]位中包含了看门狗产生复位前允许的时间延迟(见图26);因为写入WDGCR寄存器时,预分频器的状态是不可知的(见图27),所以这个时间延迟介于一个最小和最大数值之间。
窗口寄存器(WDGWR)的数值是指定窗口的高限:为防止复位,必须在递减计数器的数值小于窗口寄存器的数值并大于0x3F时刷新递减计数器。图27描述了窗口看门狗操作过程。
注意:T6位可以用于产生一个软件复位(即设置WDGA位同时清除T6位)
在停止时产生看门狗复位
如果开启了看门狗,并且选择了停止时产生看门狗复位的选项,则执行HALT指令将产生复位。
在停止模式下使用WWDG
如果在选择字节中使能了停止模式下的看门狗(HALT指令不产生看门狗复位),建议在执行HALT指令前先刷新看门狗计数器,以避免在唤醒微控制器后立刻进入不希望的看门狗复位。
如何设置看门狗的超时
下图显示了看门狗计数器(CNT)中的6位数值,与以毫秒为单位的超时时间的线性关系,这个表可以在不考虑时序变化时作为一个快速的粗略计算参考,如果需要更精确的计算,请使用图27的公式。
---------------------------------------------------------------------------------------------------------------------------
警告:每次写入WDGCR寄存器时,首先要置T6位为‘1’,以避免立刻产生看门狗复位。
理论看似复杂 实际应用很简单
void main(void)
{
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); //系统运行时钟
INIT_Config(); //初始化函数
WWDG_Init(0x7F, 0x7F); //初始化窗口看门狗
while (1)
{
App();
WWDG_SetCounter(0x7E); //在窗口时间范围内喂狗 系统正常运行 低于窗口范围 系统复位
}
}
亲测 stm8s与stm8L通用0
手册说明:
窗口看门狗WWDG的主要功能
●可编程的自由运行递减计数器
●有条件的复位
─如果开启了看门狗,当递减计数器的数值小于0x40时产生复位
─如果开启了看门狗,当在指定的时间窗口之外重加载递减计数器的数值(见图27)时产生复位
●硬件或软件启动看门狗(由选择字节指定)
●可在HALT指令时产生复位(由选择字节配置)
WWDG功能说明
如果开启了看门狗(设置了WDGA=1),当7位的递减计数器(T[6:0]位)从0x40变为0x3F时(即T6变为0),看门狗产生一个复位信号并把复位引脚拉低。如果软件刷新计数器时,计数器的数值大于窗口寄存器中的数值,同样会产生复位。
(图25:STM8窗口看门狗框图)
在正常的操作期间,应用程序必须定期地写入WDGCR寄存器,以避免产生复位;这个写的动作必须在计数器的数值小于窗口寄存器的数值时进行。写入WDGCR寄存器的数值必须是介于0xFF和0xC0之间(见图26):
开启看门狗:
如果(通过选择字节)选择了软件看门狗,在系统复位后看门狗处于关闭状态。设置WDGCR寄存
器中的WDGA位将开启看门狗,随后在下次复位之前将不能关闭看门狗。
如果(通过选择字节)选择了硬件看门狗,看门狗将始终开启,而WDGA位将不起作用。
控制递减计数器:
递减计数器是自由运行计数器:即使未开启看门狗,它依然不断地递减计数。当开启看门狗
时,必须设置T6位以避免立刻产生复位。T[5:0]位中包含了看门狗产生复位前允许的时间延迟(见图26);因为写入WDGCR寄存器时,预分频器的状态是不可知的(见图27),所以这个时间延迟介于一个最小和最大数值之间。
窗口寄存器(WDGWR)的数值是指定窗口的高限:为防止复位,必须在递减计数器的数值小于窗口寄存器的数值并大于0x3F时刷新递减计数器。图27描述了窗口看门狗操作过程。
注意:T6位可以用于产生一个软件复位(即设置WDGA位同时清除T6位)
在停止时产生看门狗复位
如果开启了看门狗,并且选择了停止时产生看门狗复位的选项,则执行HALT指令将产生复位。
在停止模式下使用WWDG
如果在选择字节中使能了停止模式下的看门狗(HALT指令不产生看门狗复位),建议在执行HALT指令前先刷新看门狗计数器,以避免在唤醒微控制器后立刻进入不希望的看门狗复位。
如何设置看门狗的超时
下图显示了看门狗计数器(CNT)中的6位数值,与以毫秒为单位的超时时间的线性关系,这个表可以在不考虑时序变化时作为一个快速的粗略计算参考,如果需要更精确的计算,请使用图27的公式。
---------------------------------------------------------------------------------------------------------------------------
警告:每次写入WDGCR寄存器时,首先要置T6位为‘1’,以避免立刻产生看门狗复位。
理论看似复杂 实际应用很简单
void main(void)
{
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); //系统运行时钟
INIT_Config(); //初始化函数
WWDG_Init(0x7F, 0x7F); //初始化窗口看门狗
while (1)
{
App();
WWDG_SetCounter(0x7E); //在窗口时间范围内喂狗 系统正常运行 低于窗口范围 系统复位
}
}
亲测 stm8s与stm8L通用0
举报
更多回帖
rotate(-90deg);
回复
相关问答
WWDG
如何去计算
WWDG
窗口
看门狗
的
超时时间
2021-08-10
1097
怎样去计算
窗口
看门狗
(
WWDG
)的
超时时间
2021-08-13
2795
如何去计算
窗口
看门狗
(
WWDG
)的最大
超时时间
?
2021-07-27
1744
有关
窗口
看门狗
WWDG
的基本知识
2021-09-27
1987
如何去计算
窗口
看门狗
的
超时时间
2021-08-05
1818
有关
窗口
看门狗
(
WWDG
)的基本知识汇总
2021-08-09
2033
STM32
WWDG
窗口
看门狗
概述
2021-09-27
821
怎样去设计
窗口
看门狗
的硬件部分?
2021-07-26
1032
基于STM32CubeMX实现对
窗口
看门狗
的配置
2021-09-02
1741
STM32独立
看门狗
与
窗口
看门狗
相关知识概述
2021-09-09
2052
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分