• STM32个人笔记-看门狗


    部分笔记来源于“STM32嵌入式开发”公众号。

    看门狗

    早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作。为了避免这个问题,后期的MCU在内部继承了看门狗的功能。

    现如今有两种看门狗,应用不同领域。两种看门狗:独立看门狗窗口看门狗

    独立看门狗

    由RCC时钟树得知,LSI驱动独立看门狗。即便在主时钟发送故障时仍然保持工作状态。

    IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。

    特性:

    自由运行递减计数器。

    时钟由独立RC振荡器提供(可在待机和停止模式下运行)。

    当递减计数器值达到0x000时产生复位(如果看门狗已激活)。

    窗口看门狗

    之所以称为窗口,是因为其喂狗时间是一个有上下限的范围内,可以通过设定时间寄存器,设定其上限时间和下限时间:喂狗时间不能过早也不能过晚。

    特性:

    一个可编程的递减计数器。

    触发芯片复位的条件:

            超过一定时间未对递减计数器更新--俗称喂狗。

            未在规定时间范围内更新--------------喂狗太早,狗还没饿。

    看门狗复位预警中断--让应用程序在芯片复位前有机会更新递减计数器(喂狗)。

    窗口看门狗的上限窗口就是配置寄存器WWDG_CFG:W[6:0],下限窗口是固定的0x40。

    当窗口看门狗的计数器在上限窗口之外,或是在下限窗口之外都会产生复位。

    上限窗口由 WWDG_CFG:W[6:0] 设定,最大为0x7F,即127。最小为0x40,即64。所以取值范围为0x40~0x7F,即64~127。

    配置寄存器WWDG_CFG:WDGTB[1:0]为计数器设定时钟分频系数,确定这个计数器可以定时的时间范围,从而确定窗口的时间范围。

    窗口看门狗的时钟来自于PCLK1,在时钟配置中,其频率为36M。则可通过上述的超时公式计算WWDG超时时间。

    区别

    使用条件对比:

    特点对比: 

    相同点

    不同点

     

     

    两者区别:

    独立看门狗没有中断,窗口看门狗有中断。

    独立看门狗有硬件软件之分,窗口看门狗只能软件控制。

    独立看门狗只有下限,窗口看门狗有下限和上限。

    独立看门狗是12位递减的,窗口看门狗是7位递减的。

    独立看门狗是用的内部大约40kHz的RC振荡器,窗口看门狗是用的系统时钟APB1。

    独立看门狗没有中断功能,只要在计数器减到0(下限)之前,重新装载计数器的值,就不会产生复位。

    要注意看门狗和外接复位IC同时存在的情况,外部电路可能会阻止看门狗复位。

    窗口看门狗有中断,这个中断的作用是在计数器达到下限0x40的时候,产生中断,让你喂狗。如果不喂狗,计数器的值变为0x3f时,将会产生系统复位。即便是喂狗,也该在中断里快速喂狗,要不时间长了计数器减1也会变成0x3f产生复位。

    窗口看门狗还有一个上限值,只有计数器值在上限值和下限值之间才能装载计数器,否则就会产生系统复位。当上限值小于下限值,没有意义。

  • 相关阅读:
    JVM-垃圾回收
    星闪:咫尺之间,联接智能世界
    数据结构与算法(二)
    本是同根生-双数据库集群keepalived virtual_route_id冲突导致连接故障
    新店速递丨白玉兰(商务)酒店赣榆吾悦广场店 正式上线
    ubuntu报Unit firewalld.service could not be found.
    每日刷题打卡Day12
    力扣 138. 随机链表的复制
    第2-3-6章 打包批量下载附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss
    Kafka消息队列大数据实战教程-第二篇(Kafka集群搭建)
  • 原文地址:https://blog.csdn.net/weixin_47077788/article/details/126088635