STM32 看门狗详解
目录
1、IWDG
1.1 独立看门狗简介
1.2 独立看门狗的特点
1.3 独立看门狗功能描述
1.4 硬件看门狗
1.5 寄存器访问保护
1.6 调试模式
2、WWDG
2.1 简介
2.2 窗口看门狗主要特点
2.3 窗口看门狗功能说明
2.4 如何设置看门狗超时
2.5 调试模式
3、区别
1、IWDG
1.1 独立看门狗简介
IWDG(Independent watchdog)独立看门狗,可以用来检测并解决由于软件错误导致的故障,当计数器到达给定的超时值时,会触发一个中断或产生系统复位
独立看门狗的时钟是它专用的低速时钟(LSI),所以它能保持工作及时主时钟出现问题。窗口看门狗的时钟是有APB1时钟分频得到得到,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。
IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序。
1.2 独立看门狗的特点
①自由运行递减计数器
②时钟来自通过独立的RC振荡器(可以工作在待机和停止模式下)
③当向下计数器值达到0时,会产生复位(如果看门狗已经激活)
1.3 独立看门狗功能描述
上图红框显示,看门狗功能由 VDD 电压域供电,所以在停止模式和待机模式下仍能工作
向关键字寄存器(IWDG_KR)写入0XCCCC,独立看门狗就会启动,计数器开始下降从复位值0XFFF。当计数器值到达0,会产生一个复位信号(独立看门狗复位)
无论何时向关键字寄存器写入0XAAAA,IWDG_RLR的数值会重载进计数器,避免看门狗复位
1.4 硬件看门狗
如果通过器件选项位使能“硬件看门狗”功能,上电时将自动使能看门狗;如果在计数器计数结束前,若软件没有向关键字寄存器写入相应的值,则系统会产生复位
1.5 寄存器访问保护
IWDG_PR 和 IWDG_RLR 寄存器具有写访问保护。若要修改寄存器,必须首先对 IWDG_KR寄存器写入代码 0x5555。而写入其他值则会破坏该序列,从而使寄存器访问保护再次生效。这意味着重装载操作(即写入 0xAAAA)也会启动写保护功能。
状态寄存器指示预分频值和递减计数器是否正在被更新
1.6 调试模式
当微控制器进入调试模式时( Cortex™-M3 内核停止), IWDG 计数器会根据 DBG 模块中的 DBG_IWDG_STOP 配置位选择继续正常工作或者停止工作
下图是LSI在不同分频情况下IWDG超时周期的最小值和最大值。
2、WWDG
2.1 简介
窗口看门狗(Window watchdog)通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位变成 0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个 MCU 复位。如果在递减计数器达到窗口寄存器值之前刷新控制寄存器中的 7 位递减计数器值,也会产生 MCU 复位。这意味着必须在限定的时间窗口内刷新计数器
2.2 窗口看门狗主要特点
①可编程自由向下计数器
②复位条件,激活看门狗的情况下,当递减计数器值小于 0x40 时复位;在窗口之外重载递减计数器时复位。
③提前唤醒中断 (EWI):当递减计数器等于 0x40 时触发(如果已使能且看门狗已激活)
2.3 窗口看门狗功能说明
如果窗口看门狗启动(WWDG_CR寄存器的WDGA位置1),7位向下计数器从0X40向0x3F滚动(T6已经清零),会导致一个复位。如果软件重载计数器,当计数器值大于窗口所存储的值时,就会产生复位
应用程序必须在正常操作期间写WWDG_CR寄存器去组织MCU复位。这个操作必须发生在计数器值小于窗口寄存器值。窗口寄存器值存储在WWDG_CR寄存器,必须在0XFF和0XC0之间。
使能窗口看门狗
复位之后,窗口寄存器经常是禁止的。通过设置WWDG_CR寄存器的WDGA位去使能,不能被禁止除了通过复位。
控制向下计数器
递减计数器处于自由运行状态:即使禁止看门狗,递减计数器仍继续递减计数。当使能看门狗时,必须将 T6 位置 1,以防止立即复位
T[5:0] 位包含了看门狗产生复位之前的计时数目;复位前的延时时间在一个最小值和一个最大值之间变化,这是因为写入 WWDG_CR 寄存器时,预分频值是未知的。配置寄存器 (WWDG_CFR) 包含窗口的上限:为防止发生复位,当递减计数器的值低于窗口寄存器值且大于 0x3F 时必须重载
注意:可使用 T6 位产生软件复位(将 WDGA 位置 1 并将 T6 位清零)
看门狗中断高级特性
如果在产生实际复位之前必须执行特定的安全操作或数据记录,则可使用提前唤醒中断(EWI)。通过设置 WWDG_CFR 寄存器中的 EWI 位使能 EWI 中断。当递减计数器的值为0x40 时,将生成 EWI 中断。在复位器件之前,可以使用相应的中断服务程序 (ISR) 来触发特定操作(例如通信或数据记录)。
在某些应用中,可以使用 EWI 中断来管理软件系统检查和/或系统恢复/功能退化,而不会生成 WWDG 复位。在这种情况下,相应的中断服务程序 (ISR) 可用来重载 WWDG 计数器以避免 WWDG 复位,然后再触发所需操作。
通过将 0 写入 WWDG_SR 寄存器中的 EWIF 位来清除 EWI 中断
2.4 如何设置看门狗超时
例子:APB1的频率是24MHZ,WDGTB[1:0]设置3,T[5:0]设置成63
t = 1/24000*4096*2*2*2*(63+1)= 24.85ms
有关 TWWDG 的最小值和最大值
2.5 调试模式
当微控制器进入调试模式时( Cortex™-M3内核停止),WWDG计数器会根据DBG模块中的DBG_WWDG_STOP配置位选择继续正常工作或者停止工作
3、区别
应用场景不同
IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。
WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序
为什么要窗口看门狗?
对于一般的看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但这有一个隐患,有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执行了刷新看门狗操作,这样的情况下一般的看门狗就检测不出来了;
如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置刷新看门狗的一个时间窗口,保证不会提前刷新看门狗也不会滞后刷新看门狗,这样可以检测出程序没有按照正常的路径运行非正常地跳过了某些程序段的情况。
看门狗代码开源地址:
https://github.com/strongercjd/STM32F207VCT6
点击查看本文所在的专辑,STM32F207教程
关注公众号,第一时间收到文章更新。评论区不能及时看到,需要交流可以到公众号沟通
STM32 看门狗详解相关推荐
- STM32—看门狗详解入门(独立看门狗、窗口看门狗)
目录 一.什么是看门狗? 二.独立看门狗IWDG 1.特点.本质及原理 2.配置 3.main.c代码 三.窗口看门狗WWDG 1.特点.本质及原理 2.配置 3.main.c代码 四.独立看门狗与窗 ...
- STM32看门狗详解
看门狗的作用:防止单片机因未知原因死机或比我们预期的时间过长长时间不能响应,如果出现这种问题,看门狗就会把单片机复位 独立看门狗(IWDG): 时钟来源:内部低速时钟(LSI),所以用看门狗时不需要配 ...
- 大佬给总结的单片机看门狗详解很有用
一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...
- stm32看门狗详细介绍
独立看门狗(IWDG) 独立看门狗由内部专门的 40Khz 低速时钟(内部 RC 时钟)驱动,即使主时钟发生故障,它也仍然有效. 作用 单片机系统万一在外界干扰死循环,看门狗可以复位.看门狗的作用就是 ...
- STM32串口通信详解以及通信异常或者卡死常见问题分析
STM32串口通信详解以及通信异常或者卡死常见问题分析 目录 STM32串口通信详解以及通信异常或者卡死常见问题分析 一.常见的异常问题 二.STM32的串口简介 1.串口的通讯方式 ①按数据传输方向 ...
- STM32 HAL库详解 及 手动移植
源: STM32 HAL库详解 及 手动移植
- STM32看门狗总结
转自:http://www.openedv.com/thread-56260-1-1.html STM32看门狗总结 调原子哥的开发板一年多,基本上能用,但是对于STM32某些基本外设的工作机理还不甚 ...
- stm32 DMA使用详解
转自:http://www.cnblogs.com/121792730applllo/p/3154447.html STM32 DMA使用详解 DMA部分我用到的相对简单,当然,可能这是新东西,我暂时 ...
- STM32启动文件详解-比较清晰的一篇
STM32启动文件详解 启动文件使用的 ARM 汇编指令汇总 启动程序源码注释(点此下载) 1. Stack-栈 Stack_Size EQU 0x00000400AREA STACK, NOINIT ...
最新文章
- 使用火炬之光资源(转)
- 尚学堂Spring视频教程(二):Spring控制反转
- python 享元模式_python 设计模式之享元(Flyweight)模式
- 为什么说流处理即未来?
- react 组件构建_使用React Spring和Tinycolor构建色彩丰富的弹性组件
- 《JavaScript语言精粹》笔记
- MFC小笔记:控件随窗口变化
- 两种方法求最大公约数和最小公倍数
- C语言下,获取文件信息
- 机器学习-吴恩达-笔记-6-应用机器学习的建议
- 南充高中计算机老师,2021四川南充教师招聘考试高中信息技术说课稿之《表格的装饰》...
- 【面试题】一个号称BAT算法题
- android 消息循环滚动条,Android 电池电量进度条,上下滚动图片的进度条(battery)...
- 二进制转十六进制的详细步骤
- Kubernetes -K8S安装部署及SpringCloud应用
- 协鑫集成的这款组件,真的很适合农光互补!
- shell程序设计小知识
- 机器学习_评价指标Accuracy(准确率)、Precision(精准度/查准率)、Recall(召回率/查全率)、F1 Scores详解
- Nature重磅:软硬分离、图灵完备,清华首次提出“类脑计算完备性”
- 51 nod 1625 夹克爷发红包【贪心、二进制枚举】
热门文章
- 【MathType】彻底解决公式大小与文章文字大小不统一(含字体的字号与磅(pt)和像素(px)之间的换算关系)
- win10可以上网,但显示小地球的情况(未连接到网络)
- 苹果7计算机在哪里,iPhone7白苹果怎么办 iPhone7白苹果重启解决方法【详细介绍】...
- pycharm中创建包时加入的_init_.py文件及_all_的作用
- 526. 优美的排列
- H5中获取微信头像、昵称
- 算法导论 — 思考题8-6 合并有序列表的下界
- 最新老男孩Linux架构师实战课程14期视频全套1-13天
- torch.distributed.init_process_group(‘gloo’, init_method=‘file://tmp/somefile’, rank=0, world_size=1
- 《股票魔法师》第6-7章读书分享