打印
[STM32F1]

STM32的独立看门狗和窗口看门狗有什么主要的区别?

[复制链接]
2668|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kangzj|  楼主 | 2018-7-25 22:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32的独立看门狗和窗口看门狗有什么主要的区别?分别应用在什么场合?
沙发
ousj| | 2018-7-25 22:02 | 只看该作者

1)独立看门狗没有中断,窗口看门狗有中断

2)独立看门狗有硬件软件之分,窗口看门狗只能软件控制

3)独立看门狗只有下限,窗口看门狗又下限和上限

4)独立看门狗是12位递减的。窗口看门狗是7位递减的

5)独立看门狗是用的内部的大约40KHZ RC振荡器,窗口看门狗是用的系统时钟APB1ENR

使用特权

评论回复
板凳
xxmmi| | 2018-7-25 22:04 | 只看该作者
独立看门狗没有中断功能,只要在计数器减到0(下限)之前,重新装载计数器的值,就不会产生复位,独立看门够有硬件和软件之分,硬件是通过烧写器的“设定选项几节等”配置,一旦开启了硬件看门狗,那么就停不下来了,只能在重新配置“设定选项几节等”才能关掉硬件看门狗,软件看门狗只需要设置IWDG->KR=0XCCCC;就可以启动看门狗了,软件狗可以在系统复位时关掉,如果在在初始化里开启软件看门狗,那就开启了软件看门狗,

独立看门狗是12位递减的寄存器,使用片子内部的RC振荡器,这个振荡器是关不掉的。



窗口看门狗有中断,这个中断的作用是在计数器达到下限0x40的时候,产生中断,让你喂狗,如果你不喂狗,计数器的值变为0x3f的时候,将会产生系统复位,即使是喂狗,也应该在中断里快速喂狗,要不时间长了计数器减一也会变成0x3f产生复位,这个时间根据芯片手册的公式进行计算即可得到,窗口看门狗只有软件开启方式,还有一个上限值,这个值如果大于计数器的初始值,那么就没有任何作用了,这个值小于计数器的初始值得时候,当计数器的值大于上限值时你对计数器进行装载,将会产生复位,只有在计数器减到小于上限值时,你才能重新装载计数器,意思就是说只有计数器的值在上限值和下限值之间你才能装载计数器,否则就会产生系统复位,当上限值小于下限值,也没有意义。



独立看门狗Iwdg——我的理解是独立于系统之外,因为有独立时钟,所以不受系统影响的系统故障探测器。主要用于监视硬件错误。

窗口看门狗wwdg——我的理解是系统内部的故障探测器,时钟与系统相同。如果系统时钟不走了,这个狗也就失去作用了。主要用于监视软件错误。





以下是经过测试发现的:

//发现1:当窗口值大于等于计数器的值,无论怎么更改配置的顺序,都是正确的运行结果
//发现2:当窗口值小于计数器的值,顺序一旦改变就运行错误

经过测试发现,当初始化的顺序不是正常顺序的话,就会把WWDG->SR置一,为什么我也不知道,谁知道片子里面怎么搞的
你在开启中断就进入中断的,这时你又进行喂狗,就会复位的,因为这时计数器的值>上限窗口的值,所以会复位,所以就会一直出错下去
解决办法是,初始话的时候最后两句是先清除中断标志然后在开启中断,如果你不这么干,那么在初始化的时候很可能把WWDG->SR
置位,那么你在开启中断,就会毫不犹豫的进入中断,你在中断重装计数器值得时候,就会产生复位

使用特权

评论回复
地板
xxmmi| | 2018-7-25 22:06 | 只看该作者
看门狗和普通的单片机一样,计数器从 0xFFF 递减计数,到0产生复位,其中计数时间可设置!也就是说在该时间内,喂狗一次,计数器又开始从 0xFFF 递减计数,不会产生复位,原理很简单。可在主函数,中断中喂狗。一旦单片机死机不执行喂狗时,就复位。

窗口看门狗是在计数器从0x7f---上窗口---下窗口——ox3f。其中0x7f---上窗口即使喂狗也无效,而上窗口---下窗口——ox3f间喂狗有效!当计时器执行到下窗口时(0x4f)会产生中断。到0x3f,如果仍然没喂狗则会复位!

1)大致简介这2只狗,窗口看门狗得喂狗时间可控制在一个范围里,同时假如程序死机,可在中断里保存重要数值在flash中(但要快在复位前),到ox3f复位重启!
独立看门狗如果死机在喂狗那条语句,这程序不会复位,这样是不行的。而窗口看门狗的有效喂狗时间可控制,这样的情况几乎为0.
那是不是独立看门狗就不如窗口看门狗了呢????????那也不是
独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然 有效。而窗口看门狗是用的pclk1,这不是这样啦!!!
看来俩条狗一起用吧!!!安全大大提高啦!!

使用特权

评论回复
评论
oyhprince 2019-6-15 14:52 回复TA
多谢答主的贡献 
5
juventus9554| | 2018-7-25 22:08 | 只看该作者

独立看门狗如果死机在喂狗那条语句,这程序不会复位,这样是不行的。而窗口看门狗的有效喂狗时间可控制,这样的情况几乎为0.

使用特权

评论回复
6
kangzj|  楼主 | 2018-7-25 22:10 | 只看该作者

1.喂狗指令又不是死循环,怎么会死机?

使用特权

评论回复
7
kangzj|  楼主 | 2018-7-25 22:12 | 只看该作者
2.这样的情况几乎为0,是说不能可靠复位的情况几乎为0吧?

使用特权

评论回复
8
stly| | 2018-7-25 22:14 | 只看该作者
喂狗要在主函数里喂狗,不能在中断里喂狗。

使用特权

评论回复
9
llljh| | 2018-7-25 22:16 | 只看该作者
独立看门狗好像是有独立时钟的,窗口看门狗用的是系统时钟

使用特权

评论回复
10
dingy| | 2018-7-25 22:18 | 只看该作者
如果系统时钟不走了,窗口看门狗就不行了,独立看门狗还能继续

使用特权

评论回复
11
kangzj|  楼主 | 2018-7-25 22:20 | 只看该作者

唉,还是没有什么结果,算了,先结贴吧,多谢大家啦

使用特权

评论回复
12
keaibukelian| | 2018-7-26 08:52 | 只看该作者
三楼说的很详细

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

672

主题

7007

帖子

2

粉丝