【嵌入式学习笔记】嵌入式入门5——窗口看门狗WWDG

1.WWDG简介

  • WWDG的全称:Window watchdog,即窗口看门狗
  • WWDG的本质:能产生系统复位信号和提前唤醒中断的计数器
  • WWDG的特性:递减的计数器,当递减计数器值从 0x40减到0x3F时复位(即T6位跳变到0),计数器的值大于W[6:0]值时喂狗会复位,提前唤醒中断 (EWI):当递减计数器等于 0x40 时可产生
  • 喂狗:在窗口期内重装载计数器的值,防止复位

IWDG的所用

  1. 作用:用于监测单片机程序运行时效是否精准,主要检测软件异常
  2. 应用:需要精准检测程序运行时间的场合

2.WWDG工作原理

注意:W[6:0] 必须大于 窗口下限值0x3F,否则无窗口期
在这里插入图片描述

3.WWDG框图

  • 上半部分描述:非窗口期喂狗,产生复位
  • 下半部分描述:T[0:6],虽然有7位,但是6位递减计数器,T6的作用是判断T[6:0]的值是否从0x40到0x3f
  • W[6:0] 必须大于 窗口下限值0x3F,否则无窗口期
    在这里插入图片描述

4.WWDG寄存器

  • 控制寄存器 (WWDG_CR)——用于使能窗口看门狗工作,以及重装载计数器值(即喂狗)
    在这里插入图片描述
  • 配置寄存器 (WWDG_CFR)——用于使能窗口看门狗提前唤醒中断,设置预分频系数,设置窗口上限值
    在这里插入图片描述
  • 状态寄存器 (WWDG_SR)——用于判断是否发生了WWDG提前唤醒中断
    在这里插入图片描述

5.WWDG超时时间计算

在这里插入图片描述
在这里插入图片描述

6.WWDG配置步骤

  • WWDG工作参数初始化:HAL_WWDG_Init()
  • WWDG Msp初始化:HAL_WWDG_MspInit() 配置NVIC、CLOCK等
  • 设置优先级,使能中断:HAL_NVIC_SetPriority()、 HAL_NVIC_EnableIRQ()
  • 编写中断服务函数:WWDG_IRQHandler() ->HAL_WWDG_IRQHandler
  • 重定义提前唤醒回调函数:HAL_WWDG_EarlyWakeupCallback()
  • 在窗口期内喂狗:HAL_WWDG_Refresh()

关键结构体

typedef struct 
{
  WWDG_TypeDef *Instance; /* WWDG 寄存器基地址 */ 
  WWDG_InitTypeDef Init;      /* WWDG 初始化参数 */
}WWDG_HandleTypeDef;
typedef struct 
{
  uint32_t Prescaler; /* 预分频系数 */
  uint32_t Window;    /* 窗口值 */
  uint32_t Counter;    /* 计数器值 */
  uint32_t EWIMode;  /* 提前唤醒中断使能 */ 
}WWDG_InitTypeDef;

在这里插入图片描述

7.编程实战:验证窗口看门狗功能

在这里插入图片描述

8.IWDG和WWDG的主要区别

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值