| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 7、【STM32】独立看门狗和窗口看门狗(IWDG、WWDG)实验 -> 正文阅读 |
|
[嵌入式]7、【STM32】独立看门狗和窗口看门狗(IWDG、WWDG)实验 |
前言使用的是正点原子的探索者开发板进行学习,芯片:STM32F407ZGTx 学习说明此文档为本人的学习笔记,注重实践,关于理论部分会给出相应的学习链接。 注:本文档添加了对代码的在线调试功能,有助于大家更好理解相关寄存器和重要变量值的变化 理论学习一、看门狗(WDG)简介????????在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) 。 在启动正常运行的时候,系统不能复位,可以通过看门狗来复位单片机。 在系统跑飞(程序异常执行)的情况,系统复位,程序重新执行。 具有两个嵌入式看门狗外设,具有安全性高、定时准确及使用灵活的优点。两个看门狗外设(独立和窗口)均可用于检测并解决由软件错误导致的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。 二、独立看门狗(IWDG)2.1 IWDG简介
????????独立看门狗 (IWDG)
由其专用低速时钟
(LSI)
驱动,因此即便在主时钟发生故障时仍然保持
工作状态。
IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。
2.2? IWDG特征
2.3 IWDG功能在键值寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗。此时计数器开始从其复位值0xFFF递减,当计数器值计数到尾值0x000时会产生一个复位信号(IWDG_RESET)。 无论何时,只要在键值寄存器IWDG_KR中写入0xAAAA(通常说的喂狗), 自动重装载寄存器IWDG_RLR的值就会重新加载到计数器,从而避免看门狗复位。 如果程序异常,就无法正常喂狗,从而系统复位。
????????如果通过器件选项位使能“硬件看门狗”功能,上电时将自动使能看门狗;如果在计数器计
数结束前,若软件没有
向关键字寄存器写入相应的值(喂狗)
,则系统会产生复位。
????????IWDG_PR 和
IWDG_RLR
寄存器具有写访问保护。
若要修改寄存器,必须首先对 IWDG_KR
寄存器写入代码 0x5555
。而写入其他值则会破坏该序列,从而使寄存器访问保护再次生效。这意味着重装载操作(即写入
0xAAAA
)也会启动写保护功能。
状态寄存器指示预分频值和递减计数器是否正在被更新。
注意: 看门狗功能由
V
DD
电压域供电,在停止模式和待机模式下仍能工作。
2.4 IWDG相关寄存器
必须每隔一段时间通过软件对这些位写入键值AAAAh,否则当计数器计数到0时,看门狗产生复位。写入键值 5555h 可使能对 IWDG_PR 和 IWDG_RLR 寄存器的访问;写入键值 CCCCh 可启动看门狗(选中硬件看门狗选项的情况除外)
受写保护,每次对 IWDR_KR 寄存器写入值 AAAAh 时,这个值就会重装载到看门狗计数器中。之后,看门狗计数器便从该装载的值开始递减计数。超时周期由该值和时钟预分频器共同决定。
若要更改重载值,
IWDG_SR
中的
RVU
位必须为
0
。
RVU:看门狗计数器重载值更新。可通过硬件将该位置 1 以指示重载值正在更新。当在 VDD 电压域下完成重载值更新操作后 (需要多达 5 个 RC 40 kHz 周期),会通过硬件将该位复位。 重载值只有在 RVU 位为 0 时才可更新。 PVU:看门狗预分频器值更新。可通过硬件将该位置 1 以指示预分频器值正在更新。当在 VDD 电压域下完成预分频器值更新操作后(需要多达 5 个 RC 40 kHz 周期),会通过硬件将该位复位。
预分频器值只有在
PVU
位为
0
时才可更新。
三、窗口看门狗(WWDG)3.1 WWDG简介
????????
窗口看门狗 (WWDG)
时钟由
APB1
时钟经预分频后提供,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。
WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序。
????????
之所以称为窗口就是因为其喂狗时间是一个有上下限的范围内(窗口),你可以通过设定相关寄存器,设定其上限时间(下限固定)。喂狗的时间不能过早也不能过晚。
????????窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的 运行序列而产生的软件故障。除非递减计数器的值在
T6
位变成
0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个
MCU 复位。如果在递减计数器达到窗口寄存器值之前刷新控制寄存器中的
7
位递减计数器值,也会产生
MCU 复位。这意味着必须在限定的时间窗口内刷新计数器
???????
?而独立看门狗限制喂狗时间在0-x内,x由相关寄存器决定。喂狗的时间不能过晚。
????????对于一般的看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但这有一个隐患,有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执行了刷新看门狗操作,这样的情况下一般的看门狗就检测不出来了; ? ? ? ?如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置刷新看门狗的一个时间窗口,保证不会提前刷新看门狗也不会滞后刷新看门狗,这样可以检测出程序没有按照正常的路径运行非正常地跳过了某些程序段的情况。
3.2? WWDG特征
? ? ? ? -?当递减计数器值小于 0x40 时复位(如果看门狗已激活) ? ? ? ? -?在窗口之外重载递减计数器时复位(如果看门狗已激活)
3.3 WWDG功能
T[6:0]
就是
WWDG_CR
的低七位,
W[6:0]
即是
WWDG->CFR
的低七位。
T[6:0]就是窗口看门狗的计数器,而
W[6:0](由用户定义)
则是窗口看门狗的上窗口,下窗口值是固定的(
0X40
)。 当窗口看门狗的计数器在上窗口值之外被刷新,或者低于下窗口值都会产生复位。
?STM32F的窗口看门狗中有一个7位的递减计数器T[6:0],它会在出现下述2种情况之一时产生看门狗复位:
如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),它可以用于喂狗以避免WWDG复位。 实战演练??一、独立看门狗1.1 设计规划
在配置在配置看门狗后,DS0 将常亮,如果 KEY_UP 按键按下,就喂狗(重新状态计数器),只要 KEY_UP 不停的 按,看门狗就一直不会产生复位,保持 DS0 的常亮,一旦超过看门狗定溢出时间(Tout)还没 按,那么将会导致程序重启,这将导致 DS0 熄灭一次。
独立看门狗实验的核心是在
STM32F4 内部进行,并不需要外部电路,但是为了外部观察使用了:
1
) 指示灯
DS0? ? ? ? ? ? 2)
KEY_UP
按键? ? ? ? ? ? ?3) 独立看门狗
1.2 程序设计
iwdg.h
iwdg.c
1.3 在线调试查看IWDG定时器,可以看到KE无论向里面写什么数,读出都是0。而PR和RLR里面也有相关值 1.4 上板验证编译后无错误下载到开发板中,会发现DS0没隔1s进行闪烁(不复位常亮,复位灭),如果按击WK_UP按键,则不会复位,DS0就会一直亮。 二、窗口看门狗1.1 设计规划
通过
DS0
来指示
STM32F4
是否被复位了,如果被复位了就会点亮
300ms
。
DS1
用来指
示中断喂狗,每次中断喂狗翻转一次。
窗口看门狗实验的核心是在
STM32F4 内部进行,并不需要外部电路,但是为了外部观察使用了:
1
) 指示灯
DS0 、DS1? ? ? ? ? ?2)
KEY_UP
按键? ? ? ? ? ? ?3) 独立看门狗
1.2 程序设计
wwdg.h
wwdg.c
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 7:42:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |