STM32窗口看门狗WWDG详解

目录

WWDG介绍

工作原理

WWDG主要寄存器及功能

控制寄存器(WWDG_CR)

配置寄存器(WWDG_CFR)

状态寄存器(WWDG_SR)

wwdg库函数概述

相关库函数

初始化与配置函数

HAL_WWDG_Init

HAL_WWDG_MspInit

计数器操作函数

HAL_WWDG_Refresh刷新WWDG计数器,防止看门狗复位。需在窗口期内调用。

HAL_WWDG_SetCounter直接设置计数器值,需确保值在窗口范围内(0x40~0x7F)。

中断处理函数

回调函数HAL_WWDG_IRQHandler处理WWDG早期唤醒中断,调用回数。

HAL_WWDG_EarlyWakeupCallback用户实现的回调函数,用于处理早期唤醒事件(如保存数据)。

状态与错误处理

HAL_WWDG_GetState获取WWDG当前状态(如就绪、忙碌等)。

HAL_WWDG_GetError检查WWDG操作中的错误标志。

使用示例

注意事项

WWIG溢出时间计算

WWIG配置步骤


WWDG介绍

窗口看门狗用于监测单片机程序运行时效是否精准,主要检测软件异常,一般用于需要精准检测程序运行时间的场合。
窗口看门狗的本质是一个能产生 系统复位信号提前唤醒中断 的 6 位计数器。
产生复位条件:
当递减计数器值从 0x40 减到 0x3F 时复位(即 T6 位跳变到 0 )
计数器的值 大于 W6:0 值 时喂狗会复位。
产生中断条件:
当 递减计数器等于 0x40 时可产生提前唤醒中断 (EWI)。
在窗口期内重装载计数器的值,防止复位,也就是所谓的喂狗。

工作原理

WWDG主要寄存器及功能

控制寄存器(WWDG_CR)

  • 包含使能位(WDGA)和7位递减计数器(T6:0)。
  • 写入0x7F初始化计数器,使能后计数器从设定值递减,达到0x40时触发复位。
  • 示例代码(STM32):
c 复制代码
WWDG->CR = WWDG_CR_WDGA | 0x7F; // 使能并设置初始值

配置寄存器(WWDG_CFR)

  • 设置窗口值(W6:0)和预分频器(WDGTB)。
  • 窗口机制:仅当计数器值在窗口值(W6:0)和0x3F之间时允许刷新,否则触发复位。
  • 示例配置:
c 复制代码
WWDG->CFR = WWDG_CFR_WDGTB_1 | 0x5F; // 预分频4,窗口值0x5F

状态寄存器(WWDG_SR)

  • 仅含提前唤醒中断标志位(EWIF)。
  • 当计数器减至0x40时置位,需软件清零。

wwdg库函数概述

WWDG(Window Watchdog,窗口看门狗)是STM32微控制器中的一种硬件看门狗,用于监测软件运行状态。通过库函数可以配置WWDG的超时窗口、计数器值等参数。以下是常用WWDG库函数及其功能说明。

相关库函数

初始化与配置函数

HAL_WWDG_Init

初始化WWDG,配置预分频器、窗口值、计数器值及是否启用早期唤醒中断。

参数:

  • hwwdg:WWDG句柄指针
  • WWDG_InitTypeDef:包含预分频器、窗口值等配置的结构体

HAL_WWDG_MspInit

用户实现的底层初始化函数,用于配置NVIC、时钟等硬件相关设置。

计数器操作函数

HAL_WWDG_Refresh

刷新WWDG计数器,防止看门狗复位。需在窗口期内调用。

HAL_WWDG_SetCounter

直接设置计数器值,需确保值在窗口范围内(0x40~0x7F)。

中断处理函数

HAL_WWDG_IRQHandler

处理WWDG早期唤醒中断,调用回数。

HAL_WWDG_EarlyWakeupCallback

用户实现的回调函数,用于处理早期唤醒事件(如保存数据)。

状态与错误处理

HAL_WWDG_GetState

获取WWDG当前状态(如就绪、忙碌等)。

HAL_WWDG_GetError

检查WWDG操作中的错误标志。

使用示例

c 复制代码
WWDG_HandleTypeDef hwwdg;
hwwdg.Instance = WWDG;
hwwdg.Init.Prescaler = WWDG_PRESCALER_8;
hwwdg.Init.Window = 0x5F;
hwwdg.Init.Counter = 0x7F;
hwwdg.Init.EWIMode = WWDG_EWI_ENABLE;

HAL_WWDG_Init(&hwwdg);

// 主循环中定期刷新计数器
while (1) {
    HAL_WWDG_Refresh(&hwwdg);
}

注意事项

  • 计数器必须在窗口期内刷新,过早或过晚均会触发复位。
  • 窗口值需大于0x40且小于计数器初始值。
  • 早期唤醒中断可用于紧急处理,但需快速完成操作。

WWIG溢出时间计算

WWIG配置步骤

相关推荐
wuyk5554 小时前
4.树:一对多的层次数据结构
开发语言·数据结构·stm32·单片机
天空'之城6 小时前
单片机基础核心知识点汇总(五)
单片机·嵌入式硬件
恒锐丰-罗生11 小时前
SS8103 芯片解析:45V 同步整流降压半桥恒流驱动控制器 大功率光源国产优选 告别低灰闪烁!
驱动开发·嵌入式硬件·硬件工程
FakeOccupational12 小时前
【电路笔记 STM32】stm32f103 实现HAL_UART_Transmit_DMA + 普通模式/连续模式的 UART DMA 收发
笔记·stm32·嵌入式硬件
wuyk55512 小时前
第 6 章 FOC 完整系统整合:从算法到真机跑起来
c语言·开发语言·stm32·单片机·嵌入式硬件
恒锐丰科技韩生12 小时前
率能 SS6810H|10‑32V 双通道 H 桥步进电机驱动 ETSSOP20 打印机安防舞台灯光专用
嵌入式硬件·硬件工程
1560820721913 小时前
直流耦合采集卡前端电路调试
嵌入式硬件·fpga开发
恒锐丰科技林技术员14 小时前
SS6841T 双通道 H 桥驱动芯片:大电流集成电机驱动优选方案
单片机·嵌入式硬件
打工陈14 小时前
器件知识——(1)磁珠与电感
嵌入式硬件·智能硬件·设计规范
LCG元14 小时前
STM32 HAL 库串口 DMA + 空闲中断接收不定长数据:从原理到排查“上电误进 IDLE“
stm32·单片机·嵌入式硬件