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开发等领域,专注学习过程以及经验分享,共同学习,共同进步,不定期推送知识内容,不搬运知识,我只做知识的深加工,化繁为简。
在这里插入图片描述

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • APACHE rewriterule 规则「建议收藏」

    APACHE rewriterule 规则「建议收藏」Apache/RewriteRule最最好去读官方说明。http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html ——buaagengRewriteRule指令是重写引擎的根本。此指令可以多次使用。每个指令定义一个简单的重写规则。这些规则的定义顺序尤为重要——在运行时,规则是按这个顺序逐一生效的。

    2022年5月14日
    35
  • magento soap api

    magento soap apiSOAP:simpleobjectaccessprotocol;WSDL:webservicedescriptionlanguage;MagentoSoapV1v1扩展案例step1:在etc下新建api.xml,内容如下

    2022年7月13日
    27
  • 常见MQTT服务器搭建

    常见MQTT服务器搭建简介MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽、不可靠的网络的进行远程传感器和控制设备通讯等,正在日益成为物联网通信协议的重要组成部分。MQTT现在主要用于即时通讯,物联网M2M,物联网采集等。本文就社区上常见的开源MQTT服务器在常见操作系统上的搭建做详细介绍。目前一些开源MQTT服…

    2022年6月11日
    69
  • Maven根据Profiled读取不同配置文件

    Maven根据Profiled读取不同配置文件 前言在日常开发中,我们大多都会有开发环境(dev)、测试环境(test)、生产环境(prod),不同环境的参数肯定不一样,我们需要在打包的时候,不同环境打不同当包,如果手动改,一方面效率低,容易出错,而且每次打包都改动,非常麻烦,所以Maven给我们提供了profile的配置。 正文Mavenresourcesplugin支持明确声明<directory>指定…

    2022年4月30日
    44
  • myeclipse8.5注册码怎么用_java生成不重复验证码

    myeclipse8.5注册码怎么用_java生成不重复验证码注册码:用户名:myeclipse5.5注册码:zLR7ZL-655444-60536056302480798注册机代码:importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintStream;

    2022年9月30日
    3
  • idea2021.7.20激活码-激活码分享

    (idea2021.7.20激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSW…

    2022年3月21日
    121

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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