看门狗的详细介绍(重点:喂狗操作应该在主循环或其他正常运行的代码段中执行,而不是在中断服务函数中进行)

这篇具有很好参考价值的文章主要介绍了看门狗的详细介绍(重点:喂狗操作应该在主循环或其他正常运行的代码段中执行,而不是在中断服务函数中进行)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.看门狗的作用是:当单片机因为软硬件问题或者外界干扰导致死机时,可以自动复位单片机,使系统重新正常工作。

当电脑的系统死机了,我们可以人为手动的进行重启,使电脑重新正常工作。但当火星的单片机系统死机了,我们没办法人为的去重启,只能靠这只看门狗来程序启动系统。

2.看门狗工作原理:

假设计数值为1000,计数间隔时间为1ms,定时时间就为1s,看门狗就会在1s后执行单片机复位(计数值递减到0)。如果在计时结束前,执行喂狗操作,看门狗就会程序开始计时,比如在计数值300的位置执行喂狗,看门狗的计数值就会在1000和300间循环变化,不会导致系统复位。但当系统死机时,将无法执行正常的喂狗操作,看门狗的计数值就会一直递减到0,使系统复位,程序正常工作。

程序看门狗,单片机,stm32,嵌入式硬件

3.看门狗的使用原则:

看门狗的使用原则是系统正常工作时不复位,系统死机时尽快复位。如果做不到这两点,说明看门狗的使用是不正确的。

4.关于STM32F4 独立看门狗IWDG的配置

程序看门狗,单片机,stm32,嵌入式硬件

配置看门狗主要关注的是看门狗的超时复位时间,需要配置时钟分频系数和12位定时器重载值

程序看门狗,单片机,stm32,嵌入式硬件

例如我们将分频系数的寄存器配置为8,将定时器重载值的寄存器配置为4095,rc振荡器的时钟位32kHZ,32kHZ八分频等于4kHZ,4kHZ的周期是0.25ms,然后0.25*(4095+1)=1024ms,1024ms就是看门狗的超时复位时间。我们要注意的是独立看门狗的时钟是由独立RC振荡器提供,它是不精确的

看门狗的启动和喂狗主要操作的是key寄存器。看门狗的启动可分为软件启动和硬件启动,其中软件启动更加常用,只需要将key寄存器设为0xCCCC,硬件启动可以通过STM32cube programmer来修改option bytes的选项即可,不选中WDG_SW就可以是单片机上电后自动硬件启动看门狗。

看门狗的默认时钟分频系数是4,重载值是4095,复位时间大约为0.5s。硬件启动后我们依然可以通过修改分频系数和重载值寄存器来修改复位时间,硬件启动可以避免软件启动看门狗前系统死机,因此硬件启动更加可靠。

无论是硬件启动还是软件启动看门狗,看门狗在启动后都不能关闭看门狗的喂狗操作,看门狗的喂狗操作只需要将key寄存器的值修改为0xAAAA

程序看门狗,单片机,stm32,嵌入式硬件

5.关于看门狗的三个注意问题

(1)看门狗的复位时间

STM32 F4看门狗的复位时间约为0.5~32秒,一般设置为1~2秒,可以根据项目需要设置为其他值

(2)不要在定时器中断服务函数中喂狗

        喂狗操作应该在主循环或其他正常运行的代码段中执行,而不是在中断服务函数中进行。中断服务函数应尽可能短暂且高效,以确保系统响应性能。如果系统在主循环或其他正常运行的代码段中停止响应,看门狗将在超过设置的超时时间后触发复位,以重新启动系统。

        如果系统发生死机了,即使喂狗操作在定时器中断服务函数中,依然无法正常喂狗,因为如果系统发生死机,整个程序的执行都会停止,包括中断的触发和执行。

(3)如何暂停看门狗

程序看门狗,单片机,stm32,嵌入式硬件

6.关于三个问题中第二个问题的补充

STM32系统在main函数的while(1)中死机会导致所有中断事件无法相应吗?

        当STM32系统发生死机时,其中断处理机制会受到影响,导致所有中断事件无法得到正常响应。

        在STM32中,中断处理是通过向量表(Vector Table)和中断优先级配置来完成的。当一个中断事件发生时,处理器会跳转到相应的中断服务函数执行相应的处理操作。然而,当系统发生死机时,主循环无法正常运行,处理器也无法执行到中断服务函数所在的代码。

        由于死机意味着系统处于无响应状态,处理器无法继续执行任何代码,包括中断服务函数。因此,即使有中断事件触发,也无法得到相应的处理。

        为了确保中断的正常响应,在编写STM32应用程序时,需要注意避免导致死机的问题,如死循环、内存溢出、资源竞争等。当出现异常情况时,可以利用看门狗定时器或其他机制来进行系统复位,以恢复系统的正常运行。文章来源地址https://www.toymoban.com/news/detail-722704.html

到了这里,关于看门狗的详细介绍(重点:喂狗操作应该在主循环或其他正常运行的代码段中执行,而不是在中断服务函数中进行)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言操作符详细介绍

    目录 前言 一、原码、反码、补码的基础概念 1.原码 2.反码 3.补码 二、原码、反码、补码的计算方法 1.原码 2.反码 3.补码 三、算术操作符 四、移位操作符 1. 左移操作符 移位规则: 2. 右移操作符 移位规则: (1) 逻辑移位 (2) 算术移位 五、位操作符 1. 按位与运算(AND)

    2024年02月11日
    浏览(50)
  • 前端 js 操作 Cookie 详细介绍与案例

    1.1 详细介绍 名称和值:Cookie由一个名称和对应的值组成。名称是一个字符串,用于标识Cookie,而值则是与名称相关联的数据。 域名:每个Cookie都与特定的域名相关联。Cookie只会被发送到与其关联的域名下的请求中。 路径:Cookie可以与特定的路径相关联。当浏览器向指定路径

    2024年02月09日
    浏览(53)
  • 【JAVA】#详细介绍!!! 文件操作之File对象(1)!

    本文内容不涉及文件内容操作,主要是对指定文件元信息的获取,以及通过java代码如何创建一个文件或者删除文件 目录 文件操作的File对象  File对象的基本操作方法 得到文件(夹)对象的信息元 1.getParent 2. getName 3.getPath  4. getAbsolutePath和getCanonicalPath 文件和目录的创建 文件

    2024年02月02日
    浏览(40)
  • 安装打印机驱动程序的操作步骤,详细方法介绍

    安装打印机驱动程序是使用打印机的前提条件,因此学会正确的安装方法是非常重要的。下面是安装打印机驱动程序的详细步骤分析,为你全面的讲解安装和出现故障如何处理等问题。 一.安装打印机的准备工作 在安装打印机驱动程序之前,需要先准备好一些必要的工具和信

    2024年02月09日
    浏览(77)
  • 详细介绍Django的ORM操作中的F()函数

    在Django的ORM(对象关系映射)中,F()函数是一个强大的查询表达式,用于在数据库层级执行字段级别的操作和比较。 F()函数允许你在查询中 引用数据库字段 ,以及在查询过程中执行数据库级别的操作,而无需将数据取回到Python层。这可以提高性能并减少数据传输量。 下面是

    2024年02月13日
    浏览(40)
  • wait/waitpid(重点)介绍

    谢谢你的阅读,如有错误请大佬留言 目录 引子: waitpid 返回值介绍 参数介绍 pid status options:  当一个进程创建子进程后,如果子进程工作结束后会进入僵尸状态,等待父进程回收子进程资源(退出码,退出信号,子进程pid),如果父进程进入死循环或者程序执行时间过长,那

    2024年02月02日
    浏览(33)
  • 使用acmesh免费开启https(详细概念介绍与操作步骤记录)

    记录一次使用acme.sh免费开启https的过程,前半部分列举一些用到的概念,后半部分记录具体操作步骤。 文章已调整好线性阅读顺序,按顺序阅读即可。流程中涉及的概念会尽量进行讲解,以减少阅读此篇文章时,额外检索产生的时间消耗 。 acme.sh acme.sh是github上的一个开源项

    2024年02月20日
    浏览(37)
  • 腾讯云服务器镜像TencentOS Server操作系统详细介绍

    腾讯云TencentOS Server镜像是腾讯云推出的Linux操作系统,完全兼容CentOS生态和操作方式,TencentOS Server操作系统为云上运行的应用程序提供稳定、安全和高性能的执行环境,TencentOS可以运行在腾讯云CVM全规格实例上,包括黑石物理服务器2.0。腾讯云服务器网分享TencentOS Server镜像

    2024年02月10日
    浏览(48)
  • MySQL数据库,JDBC连接数据库操作流程详细介绍

    在学完 MySQL 和 Java 后,我们通常会尝试使用 Java编译器 连接 MySQL数据库,从而达到使用编译器来操作数据库的效果。连接的这个过程会用 JDBC 相关知识,因此我把 JDBC 包的下载及导入流程,以及 JDBC 的使用流程整理下来分享给大家。 目录 1. 啥是JDBC? 2. JDBC依赖包 2.1 依赖包

    2024年02月06日
    浏览(103)
  • Appium基础 — webview操作(重点)

    我们之前说过的所有操作,都是对原生页面的操作。 在手机APP中,除了原生页面,还是有webview页面(也就是H5页面),下面我们就说说对webview页面的操作。 1、先了解什么是Hybrid(混合)? 移动混合应用程序的App,即在移动应用程序中嵌入了 Webview ,通过 Webview 访问网页。

    2023年04月10日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包