STM32模块:023 WDG看门狗

看门狗简介

独立看门狗,拥有独立的时钟LSI,主时钟故障依旧可以工作。

窗口看门狗,使用APB1时钟。

两种看门狗都是递减计数器,从特定值(独立看门狗为重装载寄存器的值,窗口看门狗无重装载寄存器,直接在CNT里写入的值)减到0时发送复位信号。

看门狗启动后无法关闭,但窗口看门狗发生复位时关闭。

IWDG介绍

1)IWDG结构:

看门狗功能处于VDD供电区,其寄存器处于1.8V供电区。

2)IWDG键寄存器

3)IWDG超时时间

这些时间是按照40kHZ时钟给出,事实上,MCU内部的RC频率会在30kHZ到60kHZ之间变化,因此在计算超时时间时,尽量留有空间。

WWDG介绍

1)WWDG结构:

PCLK1进入WDGTB分频器之前,会先进行4096分频,结构图中未体现。

CFR用于写入窗口值,即最早喂狗时间界限。

计数器最高位T6有两种理解,理解一:T6为溢出标志位,为0时代表溢出,不参与计数。此时代表计数器从111111值计数到000000产生复位信号。理解二:T6参与计数。此时计数器相当于从1111111计数到1000000产生复位信号。

写入CR控制寄存器的值时不仅相当于配置重装载值,也是喂狗操作。

窗口功能:1.CR计数值减到0时输出复位信号。

2.每次喂狗时,CFR都会和CR进行比较,若此时CR的值大于CFR,则意味着喂狗时间过早,输出复位信号。

窗口看门狗的递减计数器处于自由运行状态,即使看门狗被禁止,递减计数器仍继续递减计数,同时当看门狗被启用时,T6位必须被设置,以防止立即产生一个复位。

2)WWDG工作特性

WWDG在超时复位之前会产生一次中断,称为早期唤醒中断(EWI),又称死前中断。

3)WWDG超时时间

IWDG和WWDG对比

硬件看门狗:开机自启动,防止程序在开启看门狗之前失效。需在选项字节里配置。

两种看门狗的计数器的值无法读写。

寄存器描述

1)IWDG

2)WWDG

窗口看门狗的控制寄存器低7位即为计数器,寄存器和计数器放在一起使开启看门狗和重装寄存器同时进行。

实验模块

实验一:独立看门狗

1)接线图
2)函数

1.启动或关闭写保护 2.设置预分频器 3.设置装载值 4.喂狗 5.启动独立看门狗

1.可通过标志位确认复位类型(如独立看门狗复位) 2.查看完需清除标志位。

3)代码

开启独立看门狗时,LSI会强制打开,因此无需手动打开LSI时钟。

原理配置流程:1.开启LSI(自动开启)2.键寄存器解除写保护 3.写入预分频器和重装寄存器 4.写入键寄存器(0XCCCC)启动看门狗 5.在主循环中不断地在键寄存器中写入(0xAAAA)喂狗。

喂狗或使能函数由于在键寄存器中写入了0X5555解除写保护之外的数值,自动开启了写保护,因此无需再手动开启写保护。

4)实验现象

OLED不断显示FEED喂狗,当按键按下超过200ms时,程序复位,OLED显示IWDGRST,此时实验成功。

实验二:窗口看门狗

1)接线图
2)函数

1.恢复缺省配置 2.设置预分频值 3.设置窗口值 4.使能WWDG死前中断 5.设置计数器的值,即喂狗

6.使能窗口看门狗

由于窗口看门狗为自由运行状态,因此使能时可能是任意值,所以在使能函数增加了可设置值的参数,防止刚使能便立即复位的情况。

3)代码

原理配置流程:1.开启APB1时钟 2.配置预分频器和窗口值 3.配置控制寄存器,包括看门狗使能,计数器溢出标志位和计数器有效位。

参数含义:窗口和喂狗参数中21与54为计算50ms超时时间和30ms窗口时间得到的对应参数值,0x40用于确保T[6]溢出位为1。

注:看门狗使能要与看门狗喂狗函数要与窗口距离,否则2次时间间隔过短会导致窗口复位,本函数中延迟函数写在喂狗函数之前就是这个目的。

4)实验现象

超时时间验证:OLED不断显示FEED表示已喂狗,当按下按键时显示WWDGRST表示触发复位。

窗口时间验证:修改延迟函数的值为30ms,则不断显示WWDGRST,说明实验成功。

(知识自学习专题,课程资料来源江协科技)

相关推荐
hazy1k12 分钟前
K230基础-显示画面
stm32·单片机·嵌入式硬件·k230
A9better6 小时前
嵌入式开发学习日志31——stm32之外部中断与定时器中断的差别与选择
stm32·单片机·学习
沐欣工作室_lvyiyi7 小时前
基于物联网的个人健康管理系统(论文+源码)
单片机·物联网·毕业设计·健康管理
蒋楼丶7 小时前
stm32和Zynq的中断抢占机制
stm32·单片机·嵌入式硬件
xyx-3v8 小时前
已知三极管的类型(NPN/PNP)和基极引脚,如何区分集电极(c)和发射极(e)
单片机·嵌入式硬件·学习
随机惯性粒子群9 小时前
STM32控制开发学习笔记【基于STM32 HAL库】
笔记·stm32·嵌入式硬件·学习
来生硬件工程师9 小时前
CH582 GPIO
c语言·开发语言·单片机
liujing1023292911 小时前
Day04_总线驱动
stm32
会编程的果子君11 小时前
面向对象实现LED灯
单片机·嵌入式硬件
阿华学长单片机设计13 小时前
【开源】基于STM32的新疆地区棉花智能种植系统
stm32·嵌入式硬件·开源