文档章节

STM32的两只狗儿——狗立看门狗

小汉憨憨
 小汉憨憨
发布于 2014/04/09 09:01
字数 760
阅读 178
收藏 1

STM32狗立看门狗,由专门的低速时钟(LSI)驱动,即便是主时钟发生故障它仍能够有效,所以此狗狗可以工作在与主时钟无关的要求下,或者待机模块下等,所以它叫独立看门狗,注意一旦开启此看门狗则只能由MCU复位后才清除,让它不再工作。

它的时钟是一个内部RC时钟,它会在30KHZ60KHZ之间变化,并非是精确的40KHZ,而只是一般计算时取40KHZ

 

狗立看门狗需设置四个寄存器如下:

其中,

预分频寄存器(IWDG_PR),最低三位PR[2:0](Prescaler divider)有效,可设置有8种不同的计数器时钟预分频因子。

重装载寄存器(IWDG_RLR)12RL[11:0]: 看门狗计数器重装载值 (Watchdog counter reload value) 有效,用来设置计数器的重装载值。

注意要设置以上两个寄存器的值需满足两个条件,详见如下。

 

键寄存器(IWDG_KR),用来控制去除IWDG_PRIWDG_RLR写保护功能以便正常写值,向此寄存器写入0x5555则暂时去除IWDG_PRIWDG_RLR的写保护功能才可向两个寄存器中写值。当向此寄存器写入0xAAAAIWDG_RLR的值会重装载,防止MCU复位,向入0xCCCC是开启狗立看门狗动作。

 

状态寄存器(IWDG_SR)最低两位有效RVU: 看门狗计数器重装载值更新 (Watchdog counter reload value update) 标识位和PVU: 看门狗预分频值更新 (Watchdog prescaler value update) 标识位,分别用来指示此时是否可向IWDG_RLR  IWDG_PR写值,此寄存器由硬件置1与清0,只有当为0时才可向上面两个寄存器写值。

 

它的初始化过程大致如下  

//时间计算(大概):Tout=((4*2^prer)*rlr)/40 (ms)
void IWDG_Init(u8 prer,u16 rlr)
{       
        IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); 
         IWDG_SetPrescaler(prer);   
         IWDG_SetReload(rlr); 
         IWDG_ReloadCounter();      
         IWDG_Enable(); 
}

喂狗可通过调用如下函数进行:

IWDG_ReloadCounter();//reload

 

以上参考正点原子相关代码,朋友们可以跳到库函数代码中自己研究下,控制比较简单,不再赘述。另外要注意不要使用硬件时钟中断喂狗,因为硬件时钟中断一般都有较高优先级且独立于主控程序,这样有时会出现主控程序虽然跑飞了,但仍能够正常喂狗的现象。

独立看门狗能够在一定程度上监控着程序正常运行,然而我认为更加强大,应用更灵活及更能保证程序稳定运行的还属窗口看门狗,虽然它开始时不太好理解,请看下篇。



 

© 著作权归作者所有

小汉憨憨
粉丝 4
博文 12
码字总数 14052
作品 0
武汉
程序员
私信 提问
加载中

评论(1)

yurenchen
yurenchen
"独"立看门狗
STM32的两只狗儿——窗口看门狗

STM32窗口看门狗共三个寄存器,如下图: 看似简单,但设置及应用起来有不少玄机。 控制寄存器(WWDGCR)中的值必须在0xFF与0xC0之间, 因为它的第0至第6位为递减计数器CNT,在它的第6位变为0时...

小汉憨憨
2014/04/10
799
0
STM32开发 -- 看门狗详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29350001/article/details/87788043 看门狗部分,之前讲软件复位的时候提到,接下来详细看一下。 一、独立...

聚优致成
02/20
0
0
STM32系列 STM32F4xx 独立看门狗(IWDG)

0 前言     由于单片机的工作常常会受到来自外界电磁场的干扰,造成各种寄存器和内存数据混乱,会导致程序指针错误,不在程序区,取出错误的程序指令等,都会陷入死循环,程序的正常运行...

大丽水手来搬砖
05/09
15
0
波士顿动力TED成果汇报:机器小狗Spot给你开门、递茶水

波士顿动力TED成果汇报:机器小狗Spot给你开门、递茶水 2018年1月1日 智元 机器人 波士顿动力在 TED上进行了一场成果汇报式的演讲,展示了公司一款名为Spot的机器狗,这只机器狗不仅能跑能蹦...

智元
2018/01/01
0
0
迅为-IMX6开发板-QtE-watchdog看门狗例程

本节介绍的是在 linux 系统环境下看门狗测试例程。WatchDog 是为了能够防止程序跑飞 而使用的一种东西,用户在一般的程序也许不需要,但在特殊的情况下可能会需要这种机制。 在此我们将介绍看...

书白
09/05
16
0

没有更多内容

加载失败,请刷新页面

加载更多

自建redis笔记

自建redis笔记 最近在linux安装了一下redis,特做一些笔记! 本文先单节点启动redis,然后再进行持久化配置,在次基础上,再分享搭建主从模式的配置以及Sentinel 哨兵模式及集群的搭建 单节点...

北极之北
18分钟前
2
0
vue+element之多表单验证

方法一:利用promise var p1=new Promise(function(resolve, reject) { this.$refs[form1].validate((valid) => { if(valid){ ......

沉迷代码我爱学习
20分钟前
2
0
golang 1.13 errors 包 新函数介绍

引 这次 errors 包算重量级更新。很有更能把以前的一些设计模式给推到。下面聊下用法。 error 装包 以前返回一个错误,想要保存 error 链,还要定义结构体保存以前的 error 信息。感兴趣看下...

guonaihong
29分钟前
50
0
并发编程之线程池

一、线程池 1、什么是线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序 都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。 第一:降...

codeobj
32分钟前
4
0
知识点总结思维导图模板分享,良心安利,建议收藏

思维导图经常被用在学习中,对大脑思维进行发散,对知识进行记忆。使用思维导图可以让知识更加简单更有层次。下面是利用思维导图所绘制的几款知识点总结思维导图模板,大家可以进行进行参考使...

干货趣分享
35分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部