OpenEdv-开源电子网

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

独立看门狗学习

[复制链接]

6

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
312
金钱
312
注册时间
2015-7-15
在线时间
36 小时
发表于 2016-3-9 00:10:18 | 显示全部楼层 |阅读模式
本帖最后由 bruceSTM32 于 2016-3-9 23:10 编辑

看门狗:专门用于监测程序运行状态的模块。程序中开启看门狗,如果出现运行故障或者程序跑飞,不能在规定时间范围内及时喂狗,就会触发中断或者系统复位,将跑飞的程序拉回到运行序列上来。
这就是看门狗的作用。IWDG和WWDG的区别:
(1)IWDG是由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效;
   WWDG是由APB1时钟分频后得到的时钟驱动。
(2)WWDG可以产生中断。
(3)IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合;
   WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。

键值寄存器:给一个特殊的值,就能产生一个特殊的操作,起到控制的作用。
下图为独立看门狗的原理框图。

QQ截图20160309224056.jpg
理解了这个框图,就能明白独立看门狗的工作原理。
低速内部时钟经过预分频寄存器进行分频,就会得到一个新的时钟频率,通过重载寄存器的值加载到计数器,
如果计数器在计数到0之前还没有给计数器重新加载值,那么独立看门狗就会复位;如果在计数器计数到0之前,
给键寄存器写入0xAAAA(也就是要喂狗),那么重载寄存器的值就会被重新加载到计数器,从而就避免了看门狗复位。

独立看门狗的超时时间是由预分频寄存器和重装载寄存器共同决定的。
QQ截图20160309230443.jpg

独立看门狗操作步骤:
(1)打开驱动独立看门狗的低速内部时钟(LSI)
由RCC的控制/状态寄存器RCC_CSR中的LSION置1;
(2)配置IWDG_PR和IWDG_RLR寄存器的值
向键寄存器IWDG_KR中写入0x5555,修改预分频寄存器和重装载寄存器中的值;
(3)开启独立看门狗
键寄存器IWDG_KR中写入0xCCCC,开始启用独立看门狗;
(4)喂狗
在程序中隔一定时间就要向键寄存器IWDG_KR中写入0xAAAA,进行喂狗,否则看门狗就会复位。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2016-10-8
在线时间
59 小时
发表于 2016-11-28 11:25:31 | 显示全部楼层
小杰哥 发表于 2016-8-6 11:14
如果出现运行故障或者程序跑飞,不能在规定时间范围内及时喂狗,就会触发中断或者系统复位,将跑飞的程序拉 ...

个人觉得 如果像你说的那样 程序老是跑飞或者不执行 那是编程时逻辑不合理的节奏 但比如像在比较复杂的电磁环境下 可能出现某个寄存器的值出现错误或者数据线出现问题 看门狗就会有比较好的作用;还有就是多次需要喂狗的问题 觉得可以用MDK仿真 查看程序循环时所需要的时间 再确定是不是需要多次喂狗。
回复 支持 1 反对 0

使用道具 举报

3

主题

261

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2014-2-20
在线时间
284 小时
发表于 2016-3-9 09:41:47 | 显示全部楼层
独立看门狗没有中断,窗口看门狗有中断,中断可以用来做“后事”
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
312
金钱
312
注册时间
2015-7-15
在线时间
36 小时
 楼主| 发表于 2016-3-9 23:11:31 | 显示全部楼层
Da Wen 发表于 2016-3-9 09:41
独立看门狗没有中断,窗口看门狗有中断,中断可以用来做“后事”

又学到了一招
回复 支持 反对

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2016-7-19
在线时间
12 小时
发表于 2016-8-6 11:14:20 | 显示全部楼层
如果出现运行故障或者程序跑飞,不能在规定时间范围内及时喂狗,就会触发中断或者系统复位,将跑飞的程序拉回到运行序列上来。那么我想请问一下,是不是一定要在程序中多次用到喂狗的程序?还有,程序跑飞了就算拉回运行序列上来后,如果程序没有改变,那不一样又跑飞了 吗??
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 13:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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