STM32hal库学习(F1)-WWDG

WWDG简介

全称:

Window watchdog 窗口看门狗

本质:

能产生系统复位信号和提前唤醒中断的计数器

特性:

递减的计数器

当递减计数器值从0x40减到0x3F时复位(T6位跳变到0)

计数器的值大于W[6:0]值时喂狗会复位

提前唤醒中断(EWI):当递减计数器等于0x40时可以产生

喂狗:

在窗口期内重装载计数器的值,防止复位

作用:

用于检测单片机程序运行时效是否精准,主要检测软件异常

应用:

需要精准检测程序运行时间的场合

WWDG工作原理

STM32hal库学习(F1)-WWDG_第1张图片

STM32hal库学习(F1)-WWDG_第2张图片

时钟源:

F103:PCLK1(36MHz)

F407:PCLK1(42MHz)

F429:PCLK1(45MHz)

F767:PCLK1(54MHz)

H743:PCLK3(100MHz)

WWDG寄存器

WWDG_CR(控制寄存器)STM32hal库学习(F1)-WWDG_第3张图片

该寄存器用于使能窗口看门狗工作,以及重装载计数器值(即喂狗)

WWDG_CFR(配置寄存器)

STM32hal库学习(F1)-WWDG_第4张图片

该寄存器用于使能窗口看门狗提前唤醒中断,设置预分频系数,设置窗口上限值

WWDG_SR(状态寄存器)

STM32hal库学习(F1)-WWDG_第5张图片

该寄存器用于判断是否发生了WWDG提前唤醒中断

WWDG相关时间

超时时间计算

STM32hal库学习(F1)-WWDG_第6张图片

最短最长超时时间

STM32hal库学习(F1)-WWDG_第7张图片

WWDG配置步骤

STM32hal库学习(F1)-WWDG_第8张图片

相关库函数介绍

函数

主要寄存器

主要功能

HAL_WWDG_Init

WWDG_CR/WWDG_CFR

使能WWDG,设置预分频系数和窗口值等

HAL_WWDG_Refresh

WWDG_CR

重装载计数器,即喂狗

//相关结构体
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;

IWDG和WWDG的区别

对比点

独立看门狗

窗口看门狗

时钟源

LSI(40KHz32KHz)

PCLK1PCLK3

复位条件

递减计数到0

计数值大于W[6:0]值喂狗或减到0x3F

中断

没有中断

计数值减到0x40可产生中断

递减计数器位数

12位(最大计数范围:4096~0

7位(最大计数范围:127~63

应用场合

防止程序跑飞,死循环,死机

检测程序时效,防止软件异常

你可能感兴趣的:(stm32,学习,嵌入式硬件)