• 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产生复位。

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

  • 相关阅读:
    基于React+antd的环境监测网站的设计与实现
    从零开始利用MATLAB进行FPGA设计(一):建立脉冲检测模型的Simulink模型2
    04.shiro会话管理
    k8s-实战——Harbor镜像仓库的部署
    FFM(Field-aware Factorization Machine -领域感知的因子分解机)解析及举例
    node.js毕业设计源码宠物医生预约系统
    NSA SELinux将在Linux 6.6中去品牌化为SELinux
    【Hack The Box】linux练习-- Shocker
    3天上手Ascend C编程丨通过Ascend C编程范式实现一个算子实例
    使用WIX 进行商业智能OEM打包
  • 原文地址:https://blog.csdn.net/weixin_47077788/article/details/126088635