stm32看门狗定时器记录「建议收藏」

stm32看门狗定时器记录「建议收藏」文章目录1、看门狗介绍2、独立看门狗3、窗口看门狗1、看门狗介绍STM32有两个看门狗,一个是独立看门狗另外一个是窗口看门狗。独立看门狗简单来说就是一个12位的递减计数器,当计数器的值从某个值一直减到0的时候,系统就会产生一个复位信号,即IWDG_RESET。如果在计数没减到0之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是我们经常说的喂狗。看门狗功能由VDD电压域供电,在停止模式和待机模式下仍能工作。因此我们就可以在程序死机的时候使用这个独立看门狗来复位程序,

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

1、看门狗介绍

STM32 有两个看门狗,一个是独立看门狗另外一个是窗口看门狗。

独立看门狗简单来说就是一个 12 位的递减计数器当计数器的值从某个值一直减到 0 的时候,系统就会产生一个复位信号,即IWDG_RESET。如果在计数没减到 0 之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是我们经常说的喂狗。 看门狗功能由 VDD 电压域供电,在停止模式和待机模式下仍能工作。因此我们就可以在程序死机的时候使用这个独立看门狗来复位程序,这里注意复位程序,不是类似打印机那种的断电续打,所以这个是不能解决所有问题的

时钟框图如下所示:
在这里插入图片描述
从上面的图上我们可以看出,他的时钟是由HSI来提供的,这个时钟不是特别准确的,他只是一个范围,所以这个定时器必然也就不是特别准确了,但是他不依赖于主时钟啊,所以主时钟出事了他也没事,所以啊,不一定都是坏事是不是!

下面来说窗口看门狗,窗口看门狗和独立看门狗差不多,也是一个递减的计数器,当递减到一个固定值的时候还不喂狗就会产生复位,区别就在这里,这里可以叫做窗口的下限,不然怎么叫窗口看门狗呢,而且这个值是一个固定的值,是不能改变的,并且窗口看门狗在减到一个数之前进行复位的话也会产生复位,这个就叫窗口的上限,上限是可以设置的,因此窗口看门狗要想不复位,就要在窗口上限和下限之间复位才行!

时钟框图如下所示:
在这里插入图片描述
这里可以看出,窗口看门狗的时钟是来自PCLK1,这个是主时钟分出来的,是比较准确的时钟信号!

2、独立看门狗

独立看门狗一般用来检测和解决由程序引起的故障,比如一个程序正常运行的时间是50ms,在运行完这个段程序之后紧接着进行喂狗,我们设置独立看门狗的定时溢出时间为60ms,比我们需要监控的程序 50ms 多一点,如果超过 60ms 还没有喂狗,那就说明我们监控的程序出故障了,跑飞了,那么就会产生系统复位,让程序重新运行。

独立看门狗由内部专门的 40Khz 低速时钟驱动,然后这个时钟的真实范围大概在30-60khz这个区间,但是我们计算还是可以按照40来进行计算,当然就是取这个区间里的值都是没问题的,这里我设置分频系数32,然后计数值为1000,大概就1s的时间了:
在这里插入图片描述
下面我们首先不对程序进行喂狗,在初始化部分写一个单独的打印函数:
在这里插入图片描述
将程序下载到开发板,可以看到程序一直在不断地复位:
在这里插入图片描述
因此我们需要喂狗了,这样才能让程序不至于一直复位:
在这里插入图片描述
将程序下载到开发板,可以看到初始化部分的打印函数只执行了一次,成功配置独立看门狗!
在这里插入图片描述

3、窗口看门狗

窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。
上面我们说到,窗口看门狗的下窗口是固定的,为0X40,上窗口是用户可以设定的,可以根据实际要求来设定窗口值,但是要求就是一定要大于0X40才可以,下面我们再来看下这个计数时间,计数时间的计算公式如下所示:

Twwdg=(4096× 2^WDGTB× (T[5:0]+1)) /Fpclk1;

参数说明:

  • Twwdg: WWDG 超时时间(单位为 ms)
  • Fpclk1: APB1 的时钟频率(单位为 Khz)
  • WDGTB: WWDG 的预分频系数
  • T[5:0]:窗口看门狗的计数器低 6 位

在cubemx中的窗口看门狗的配置如下所示:
在这里插入图片描述
我们可以对着这个图来看下:
在这里插入图片描述
刷新时间的计算如下:
在这里插入图片描述
在这个时间内不刷新都会造成系统复位!

这里我们就不去死抠这个时间了,因为我们知道他是可以在0X40这里产生中断的,正好是倒数第二个时刻,我们就可以在这个时刻进行产生的中断里面进行复位:

首先我们还是打开这个中断:
在这里插入图片描述
编写中断回调函数:
在这里插入图片描述
这里还是用这个led闪的来说明:
在这里插入图片描述
将程序下载到开发板,led一直闪烁,并且只打印一次,因为我们一直在喂狗!

在这里插入图片描述
下面将喂狗注释掉,再次下载到开发板,就可以看到他在一直复位,因为时间太短了,所以打印也是飞快!
在这里插入图片描述

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

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

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


相关推荐

  • SVM资料

    SVM资料解释SMO算法比较好的文档http://wenku.baidu.com/view/aeba21be960590c69ec3769e.html参考博客:http://myjuno.blogbus.com/logs/242581064.htmlSMO算法http://cs229.stanford.edu/materials/smo.pdf外层循环(主程…

    2022年7月21日
    12
  • python导入tensorflow方法_python导入包

    python导入tensorflow方法_python导入包若是你也遇到这个问题,说明你也没有理解tensorflow到底在哪里。当安装了anaconda3.6后,在PyCharm中设置interpreter,这个解释器决定了你在PyCharm环境中写的代码采用什么方式去执行。若是你的设置是anaconda下的python.exe。就会发现在PyCharm中写入importtensorflwoastf时,就会报错,提示没有tensorflow模块,…

    2022年8月27日
    3
  • 极限编程简述_极限编程的优缺点

    极限编程简述_极限编程的优缺点在敏捷方法中,极限编程(XP:eXtremeProgramming)是其中最著名的一个,它由一系列简单却互相依赖的实践组成。。。本篇博客,对极限编程做一个简述,以及个人的一些理解,主要从以下几点进

    2022年8月6日
    16
  • 少儿编程app排名_终于明白少儿编程软件哪个好「建议收藏」

    小孩子学习语言的能力很强。虽然成年人大脑的效率可能更高,但人越年轻,大脑越具有可塑性。今天小编主要给大家分享少儿编程软件哪个好,希望对你们有帮助!1.费雪思考&学习code-a-pillar(付费,基于iOS/Android)费雪思考&学习code-a-pillar这个应用程序有一个独特的优势:它包含一个应用程序和一个实物的玩具。虽然让孩子们通过实践学习技术和编程是一个好主…

    2022年4月8日
    523
  • k8s支持的存储_k8s安装与配置与优化

    k8s支持的存储_k8s安装与配置与优化k8sPV和PVC概述PVPVC生命周期配置存储ConfigMapSecretPV和PVC概述前面我们已经学习了使用NFS提供存储,此时就要求用户会搭建NFS系统,并且会在yaml配置nfs。由于kubernetes支持的存储系统有很多,要求客户全部掌握,显然不现实。为了能够屏蔽底层存储实现的细节,方便用户使用,kubernetes引入了PV和PVC两种资源对象。PV(Persistent Volume)是持久化卷的意思,是对底层的共享存储的一种抽象。一般情况下PV由kubernetes管理员进行创

    2022年8月11日
    2
  • java web servlet基础(PS教程)

    JavaWeb——ServletTomcat工作机制动画演示(点击动图可全屏观看)什么是ServletServlet(ServerApplet),全称JavaServlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web…

    2022年4月10日
    29

发表回复

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

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