OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7405|回复: 12

WWDG的窗口动作问题

[复制链接]

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
发表于 2012-8-18 00:34:58 | 显示全部楼层 |阅读模式
T[6:0]是向下计数的值。
W[6:0]是设定后不变的窗口值。二者的取值都是0x7F-0x40.
其动作的过程是:
1.T向下计数,当达到W的时候,产生中断。
2.然后T继续向下计数直到T变为0x3F,产生复位。同时中断清除。
3.复位后重新装载T的原值。
那么如果连续使用WWDG,WWDG的复位周期就是固定的了(由T值决定,而中断周期看W决定。
其中,T和W一般是不同的。

版主,我的这样分析对吗?因为手册上没有对寄存器之间的动作关系进行说明,所以只好来问了...
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-18 01:36:22 | 显示全部楼层
T是计数器的值.
W才是窗口值.
下限是0X3F,上限是W值.
要喂狗,只能在W~0X3F这个区间.过早,过晚喂狗,结局都是一样---复位.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2012-5-17
在线时间
0 小时
发表于 2012-8-18 10:22:38 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
既然WWDG每次到了0x40的时候都会进入中断,从而刷新计数器的值。那什么样的异常情况才能使WWDG的计数器在窗外被刷新,即被复位呢? WWDG一般应用在哪儿呢? 个人感觉IWDG更实用啊。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-18 10:24:27 | 显示全部楼层
防止提前喂狗.
WWDG就是规定了一个窗口,必须在这个窗口时间内喂狗.其他时间都是会引起复位.不过我也觉得IWDG比较实用.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2012-5-17
在线时间
0 小时
发表于 2012-8-18 10:32:27 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
既然在中断的时候才能喂狗,那不会提前喂狗啊。 能进入中断则一定在窗内了。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-18 10:35:00 | 显示全部楼层
不是在中断的时候才能喂狗,喂狗你可以随便什么时候.
但是你必须确保是在窗口期内.
否则复位.

中断喂狗,使我们例子里面的,你不要被迷惑了...
我们例子是为了实现自动喂狗,才这么设计的,没说喂狗就一定要进中断.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2012-8-18 11:31:00 | 显示全部楼层
WWDG_CR描述:
T[6:0]---7位计数值。存储看门狗的计数器值(向下)。计数窗口取值:从0x7F-0x40(计数过程中,变化)。这些位用来存储看门狗的计数器值。每个PCLK1周期(4096x2^WDGTB) 减1 。当计数器值从40h 变为3Fh 时(T6 被清0) ,产生看门狗复位。

WWDG_CFR描述:
W[6:0]: 窗口值。窗口取值:从0x7F-0x40,为窗口上限(下限位0x3F)。这些位是用来与递减计数器进行比较用的窗口值(计数过程中,不变)。

从上面的两个寄存器的T和W的定义可以看到:
1.T值大于W;
2.T一直往下计数,达到W的时候,产生中断;
3.T继续向下计数,到达0x3F的时候产生复位;
4.在T--W期间,不允许窗口更新。在W以下,窗口允许更新。

这样的分析对吗?谢谢。
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-18 11:50:08 | 显示全部楼层
既然有想法,何不验证?

伟大的发现,都来自实验,从来不是提问得出的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2012-8-18 21:45:05 | 显示全部楼层
呵呵,好的。
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

96

主题

247

帖子

1

精华

高级会员

Rank: 4

积分
801
金钱
801
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2012-10-13 23:17:07 | 显示全部楼层
再继续问个问题喔:
如果在W[6:0]--0x40之间,重载T[6:0],CR内的T值变化了,那么WWDG是否按重载T值进行递减?还是按原来的递减过程中的值?
如果是按重载值进行递减,那么我要是一直在窗口内循环重载,不就产生不了中断了吗?
http://blog.tianya.cn/blogger/blog_main.asp?BlogID=4666068
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-3-28
在线时间
5 小时
发表于 2014-7-23 16:49:20 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
明白了,其实例程里面中断在0x40的时候触发,实现自动喂狗。那么上窗口时间 (即WWDG_Init(u8 tr,u8 wr,u8 fprer)中的wr=0x5F,在这个例程中是不起任何作用的,只是说明在0x7F-0x5F期间不能喂狗而已吧?
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-3-28
在线时间
5 小时
发表于 2014-7-23 16:57:02 | 显示全部楼层
回复【7楼】moline:
---------------------------------
2.T一直往下计数,达到W的时候,产生中断;这句话是不对的吧!
《原子教你玩STM32》书中讲到:
     配置寄存器(WWDG_CFR)的EWI 位可用来提前唤醒中断,也就是在快要产生复位的前一段时间(T[6:0]=0X40)来提醒我们,需要进行喂狗了,否则将复位!因此,我们一般用该位来设置中断,当窗口看门狗的计数器值减到 0X40 的时候,如果该位设置,并开启了中断,则会产生中断,我们可以在中断里面向 WWDG_CR 重新写入计数器的值,来达到喂狗的目的。
   所以,是在T一直往下计数,经过W到达0x40的时候,会触发中断,从而自动喂狗的,
   个人的理解,不知道你怎么认为?
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2016-6-6
在线时间
2 小时
发表于 2016-7-11 13:25:14 | 显示全部楼层
实际上,按照WWDG的程序和寄存器配置,喂狗总是发生在最后一刻,当计数器达到0X40时。
计数器的COUNTER T[6:0] 定义了中断周期;中断重新装载T[6:00]值;
窗口数值 W[6:0],定义了非中断周期。就是在T[max]-W[max]之间,中断不能发生。
从这个意义来讲,W【6:0】是可以定义为大于0X40即可。考虑到程序执行周期,应该要比0X40大N个周期才行。

回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 05:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表