STM32独立看门狗实验

STM32独立看门狗实验一为什么需要看门狗?在MCU微型计算机系统中,MCU运行程序很容易受到外界电磁场的干扰,从而造成程序运行错误甚至发生跑飞现象,从而陷入死循环,程序的正常运行被打乱,从而造成不可预料的严重后果,于是人们就设计了一款用于实时监测计算机运行状态的芯片,我们就将其称为“看门狗(WatchDog)”。二看门狗的作用看门狗在我们程序正常工作的时候是不工作的,也就是说他根本没有任何作用,只有在单片…

大家好,又见面了,我是你们的朋友全栈君。

一 为什么需要看门狗?
在MCU微型计算机系统中,MCU运行程序很容易受到外界电磁场的干扰,从而造成程序运行错误甚至发生跑飞现象,从而陷入死循环,程序的正常运行被打乱,从而造成不可预料的严重后果,于是人们就设计了一款用于实时监测计算机运行状态的芯片,我们就将其称为“看门狗(WatchDog)”。
二 看门狗的作用
看门狗在我们程序正常工作的时候是不工作的,也就是说他根本没有任何作用,只有在单片机发生程序跑飞现象的时候看门狗才会产生一个复位脉冲强制单片机复位,从而使单片机正常运行。
三 STM32中的看门狗
STM32中内置了两种看门狗,一个是独立看门狗,另外一个是窗口看门狗,那么这两种看门狗有什么区别呢?
在这里插入图片描述
独立看门狗由内部RC振荡器震荡计时,因此其计时精度不够高。
四 看门狗的工作原理
看门狗的工作原理步骤:
1 键值寄存器(IWDG_KR)中写入 0xCCCC,开始启用独立看门狗。
2 看门狗开始从复位值 0xFFF 递减计数,每次递减1
3 计数器计数到末尾 0x000 时,会产生一个复位信号(IWDG_RESET)。
不管何时,我们都可以给键值寄存器(IWDG_KR)中写入0xAAAA,那么单片机就会自动将IWDG_RLR(自动重装载计数器)中的值重新写入键值寄存器(IWDG_KR)中,键值寄存器会从自动重装载计数器的值的基础上,重新向下计数,这就是人们俗称的“喂狗”。那么看门狗是如何实现实时监测程序的呢?看门狗会无时无刻的去喂狗,如果程序发生跑飞的现象,那么单片机程序就不能继续去喂狗,继而计数器计数到0,看门狗产生复位脉冲信号。
IWDG_PR (预分频寄存器)和 IWDG_RLR(自动重装载计数器) 寄存器具有写保护功能,自动写保护功能我们在单片机中已经见到很多了,写保护在现在计算机当中经常遇到,亩的就是保护计算机的程序被随意修改阅读,从而造成程序跑飞等现象。要想取消这两个寄存器的写保护,就要分别向两个寄存器中写入命令,IWDG_KR 寄存器中写入0x5555取消写保护。
IWDG_PR (预分频寄存器)用来设置看门狗的分频系数,刚才我们说到,我们的独立看门狗是LSI(40KHZ)的外部时钟振荡器得到的时钟系数,我们设置了分频系数就可以改变输入看门狗的时钟振荡频率。比如我们设置与分频系数为4,那么得到的分频频率就是10HZ。
五 独立看门狗常用操作库函数
1 IWDG_WriteAccessCmd//取消写保护 向其中写入0x5555
在这里插入图片描述
2 IWDG_SetPrescaler//设置预分频系数
在这里插入图片描述
3 IWDG_SetReload//设置重装载值
在这里插入图片描述
4 IWDG_ReloadCounter//喂狗,写入0xAAAA
在这里插入图片描述
5 IWDG_Enable//使能看门狗
在这里插入图片描述
6 IWDG_GetFlagStatus//获取看门狗此时的状态
在这里插入图片描述
六 独立看门狗的操作步骤
1 取消写保护
IWDG_WriteAccessCmd();
2 设置独立看门狗的预分频系数
IWDG_SetPrescaler();
3 设置独立看门狗的重装载值
IWDG_SetReload();
4 使能看门狗
IWDG_Enable();
5 看门狗喂狗
IWDG_ReloadCounter();
七 源码分享


void IWDG_Init(u8 prer,u16 rlr)//设置prer为预分频系数rlr为重装载
{
  //NO.1 取消写保护
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); 
  //NO.2 设置独立看门狗的预分频系数
  IWDG_SetPrescaler(prer);
  //NO.3 设置独立看门狗的重装载值
  IWDG_SetReload(rlr);
  //NO.4 使能看门狗·
  IWDG_Enable();
  //看门狗喂狗
  IWDG_ReloadCounter();
}
int main (void)
{
 
    RCC_Configuration(); 
    LED_Init();
    KEY_Init();
    IWDG_Init(4,625);
    
    delay_ms(500);
    GPIO_SetBits(LEDPORT,LED1);
  
    while(1)
     {
        if(!GPIO_ReadInputDataBit(KEYPORT,KEY1))
        {
            IWDG_ReloadCounter();·
        }
         delay_ms(10);
     }

}

我们来看看主函数,主函数中如果我们不去喂狗,那么主函数就会延时500毫秒然后点亮,一闪而过,那么我们就设置当按键按下时我们就去喂狗,我们不停地喂狗,那么MCU就不会去产生复位脉冲,从而LED就会一直亮,永远不会熄灭,我们不去喂狗了,MCU才会递减计数到0产生复位脉冲,然后LED熄灭。我们来看看开发板是否有这样的效果。
视频一开始我们并没有去喂狗,可以看看到LED一闪而过,视频后期我们一直不停地去喂狗,LED灯常亮。停止喂狗,LED熄灭。
微信搜索公众号“一昊”,带给你更多精彩!
专注ARM系列单片机、51单片机、小程序、C语言、云服务器、物联网、网页研发、JAVA、Android/IOS APP开发等领域,专注学习过程以及经验分享,共同学习,共同进步,不定期推送知识内容,不搬运知识,我只做知识的深加工,化繁为简。
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/144753.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 经典算法(5)杨辉三角

    经典算法(5)杨辉三角杨辉三角是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。

  • HTML中document的作用,html中的document对象是什么?一篇文章让你了解document对象

    HTML中document的作用,html中的document对象是什么?一篇文章让你了解document对象本篇文章主要的介绍了关于HTMLdocument对象的解释,还有关于HTMLdocument对象的使用实例解析,接下来让我们一起来看这篇文章吧首先我们来介绍一下HTML中的document对象:文档对象(document)代表浏览器窗口中的文档,该对象是window对象的子对象,由于window对象是DOM对象模型中的默认对象,因此window对象中的方法和子对象不需要使用window来引用。…

  • dpkg用法详解_dpkg -l

    dpkg用法详解_dpkg -ldpkg是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包。下面是它的一些命令解释:1)安装软件命令行:dpkg-i示例:dpkg-iavg71flm_r28-1_i386.deb2)安装一个目录下面所有的软件包命令行:dpkg-R示例:dpkg-R/usr/local/src3)释放软件包,但是不进行配置命令

  • vim安装YouCompleteMe 插件

    vim安装YouCompleteMe 插件vim安装youcomplete插件,折磨我好久,装不好硬是要把它装好,结果最后终于装好这个补全的插件。为了需要安装的人少走弯路,我的安装过程如下(主要提供步骤):1、先看你的vim版本是多少。我的是vim7.4.52貌似支持python。但是还是不行说是不支持YCM。 最后只能安装vim8.0,手动安装。 具体可以vim–version看来下python和python3是否

  • java判断闰年条件

    java判断闰年条件if(year%4==0&&year%100!=0||year%400==0){  }转载于:https://www.cnblogs.com/dopaer/p/6438758.html

  • iot技术_如何帮助阿尔兹海默症

    iot技术_如何帮助阿尔兹海默症场景介绍阿尔茨海默病,是导致中老年人认知功能障碍的最常见疾病之一,是发生在老年期及老年前期的一种原发性退行性脑病。据估计,全世界痴呆症患者数量为4700万,到2030年将达到7500万人。痴呆症患者数量到2050年预计将是现在的近三倍。疾病的高昂费用给卫生系统应对未来预计不断增加的病例构成挑战。据估计,目前每年的支出为8180亿美元,而支出的增长速度预计会比疾病流行率上升还要快。照料痴呆症患者…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号