当前位置: 首页 > article >正文

STM32入门--看门狗

一、独立看门狗简介

        STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。

        独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

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

二、IWBG功能描述

        在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。 无论何时,只要在键寄存器IWDG_KR中写入0xAAAA, IWDG_RLR中的值就会被重新加载到计数器,从而避免产生看门狗复位 。

独立看门狗框图

         键寄存器:本质就是个控制寄存器,在可能存在干扰的情况下,一般通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能,以降低硬件电路受到干扰的概率。

写入键寄存器的值

作用

0xCCCC

启用独立看门狗

0xAAAA

IWDG_RLR中的值重新加载到计数器(喂狗)

0x5555

解除IWDG_PRIWDG_RLR的写保护

0x5555之外的其他值

启用IWDG_PRIWDG_RLR的写保护

     

   这些时间是按照40kHz时钟给出。实际上,MCU内部的RC频率会在30kHz到60kHz之间变化。此外,即使RC振荡器的频率是精确的,确切的时序仍然依赖于APB接口时钟与RC振荡器时钟之间的相位差,因此总会有一个完整的RC周期是不确定的。

 计算公式:

超时时间:TIWDG = TLSI × PR预分频系数 × (RL + 1)
其中:TLSI = 1 / FLSI
1/40*4*1 = 0.1ms --- 1/40*4*4096 = 409.6ms

 注意:只有这几个预分频因子可选择。

 初始化:

        不用开启时钟

         但是需要解除写保护

0x5555

解除IWDG_PRIWDG_RLR的写保护

0x5555之外的其他值

启用IWDG_PRIWDG_RLR的写保护

        IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);    //独立看门狗写使能

         根据步骤再设置预分频值以及重装载值,最后使能即可。

         IWDG_SetPrescaler(IWDG_Prescaler_16);            //设置预分频为16


        IWDG_SetReload(2499);   //设置重装值为2499,独立看门狗的超时时间为1000ms

         IWDG_ReloadCounter();                            //重装计数器,喂狗


            IWDG_Enable();                                    //独立看门狗使能

三、窗口看门狗简介

        窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,看门狗电路在达到预置的时间周期时,会产生一个MCU复位。在递减计数器达到窗口寄存器数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新, 那么也将产生一个MCU复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。

       窗口看门狗是可编程的自由运行递减计数器 。

        条件复位 ─ 当递减计数器的值小于0x40,(若看门狗被启动)则产生复位。 ─ 当递减计数器在窗口外被重新装载,(若看门狗被启动)则产生复位。 如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),它可以被用于重装载计数器以避免WWDG复位。

电路逻辑门图形符号汇总_八种逻辑门电路符号-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/rwrsgg/article/details/106849011

四、WWDG功能描述

        如果看门狗被启动(WWDG_CR寄存器中的WDGA位被置’1’), 并且当7位(T[6:0])递减计数器从0x40翻转到0x3F(T6位清零)时(意思就是从1000000--64--0x40变成了0111111 -- 63 --0x3F)

        则产生一个复位。如果软件在计数器值大于窗口寄存器中的数值时重新装载计数器,将产生一个复位。

         WDGA位置1,与门的另外一路,只有输入1才能产生复位,故之后的或门入口必须有一位是1,当T6位从1变成0,那么对其取反就是1,那么该或门就会输出1,发生复位。因为是或门,所以任意一路输入1都可以复位。

        递减计数器T[6:0]的值小于0x40时,WWDG产生复位;

        递减计数器T[6:0]在窗口W[6:0]外被重新装载时,WWDG产生复位;

        递减计数器T[6:0]等于0x40时可以产生早期唤醒中断(EWI),用于重装载计数器以避免WWDG复位;

        定期写入WWDG_CR寄存器(喂狗)以避免WWDG复位,因为是与门,只要写入0就不会进入复位。;

超时时间:

                  TWWDG = TPCLK1 × 4096 × WDGTB预分频系数 × (T[5:0] + 1)

                1/36*4096*1 = 113us -- 1/36*4096*64 = 7.28ms

窗口时间:

                  TWIN = TPCLK1 × 4096 × WDGTB预分频系数 × (T[5:0] - W[5:0])

其中:TPCLK1 = 1 / FPCLK1

 

IWDG独立看门狗

WWDG窗口看门狗

复位

计数器减到0

计数器T[5:0]减到0后、过早重装计数器

中断

早期唤醒中断

时钟源

LSI40KHz

PCLK136MHz

预分频系数

483264128256

1248

计数器

12

6位(有效计数)

超时时间

0.1ms~26214.4ms

113us~58.25ms

喂狗方式

写入键寄存器,重装固定值RLR

直接写入计数器,写多少重装多少

防误操作

键寄存器和写保护

用途

独立工作,对时间精度要求较低

要求看门狗在精确计时窗口起作用

 


http://www.kler.cn/a/146814.html

相关文章:

  • Matplotlib | 理解直方图中bins表示的数据含义
  • python调用MySql保姆级教程(包会的)
  • 详解Rust的数据类型和语法
  • stm32启动过程解析startup启动文件
  • linux之调度管理(5)-实时调度器
  • 开源音乐分离器Audio Decomposition:可实现盲源音频分离,无需外部乐器分离库,从头开始制作。将音乐转换为五线谱的程序
  • python网络通信之基础知识填坑
  • 【算法萌新闯力扣】:回文链表
  • 前端实现埋点
  • 前端铜九铁十面试必备八股文——性能优化
  • C#,《小白学程序》第九课:堆栈(Stack),先进后出的数据型式
  • Git设置多个仓库同时推送
  • 【实时渲染】图形渲染管线
  • codeformer,是如何对数据进行降级处理的?是如何模糊人脸图像的?
  • quickapp_快应用_全局数据
  • Open Feign 源码解析(四) --- 请求对象构造(上)
  • 【Qt】判断QList链表内是否有重复数据
  • 微服务系列(三)--通过spring cloud zuul过滤器实现线上流量复制
  • 系统架构设计:8 论软件架构风格
  • mycat快速搭建
  • 微信小程序开发学习——小程序基本架构
  • 【设计模式-2.1】创建型——单例模式
  • HTML CSS登录网页设计
  • torch.nn.batchnorm1d,torch.nn.batchnorm2d,torch.nn.LayerNorm解释:
  • 数据结构总复习
  • React中通过children prop或者React.memo来优化子组件渲染【react性能优化】