STM32HAL库-WWDG窗口看门狗

目录

WWDG简介

WWDG介绍

WWDG有什么作用

WWDG工作原理

WWDG框图

WWDG寄存器

控制寄存器WWDG_  CR

配置寄存器WWDG_CFR

状态寄存器WWDG_SR

​编辑

WWDG超时时间计算

WWDG配置步骤

WWDG配置步骤介绍

相关HAL库函数介绍

IWDG和WWDG的主要区别


WWDG简介

WWDG介绍

Window Watch Dog,窗口看门狗

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

WWDG的特性

递减的计数器

1、当递减计数器的值从0x40减到0x3F时复位(即T6位跳变到0)  0x40=64  0x3f=63

2、计数器的值大于W[6:0]值时喂狗仍会复位  W[6:0]是窗口的上限值

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

4、WWDG防止复位要在窗口期内喂狗

WWDG有什么作用

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

WWDG的时钟是来自于系统总线的时钟,与IWDG的LSI内部低速时钟信号相比更精确,适用于需要精确检测程序运行时间的场合

WWDG工作原理

WWDG其实就是可以设定一个窗口值,

这个窗口值范围在计数器初始值和约定的0x3F(=63)之间,0x3F又被称为窗口下限值

计数值在窗口值和窗口下限值之间喂狗才能防止复位,在窗口值之前喂狗就会导致立即复位

计数值减到0x40时可以产生提前唤醒EWI中断,减到0x3F时可产生复位

WWDG框图

WWDG的时钟源来自PCLK,PCLK全称Peripheral Clock,外设时钟,其实就是指APB时钟,CPLK1就是指APB1,其实也就是低速总线时钟,与HCLK:AHB高速总线时钟相区别

42MHz的总线时钟经过固定为4096的分频系数后,再根据用户设定的预分频器值再次分频,之后信号到达6位递减计数器,WWDG被称为激活位,用来使能WWDG工作。

WWDG位是1经过与门后才能与其他信号输出1

 关于6位递减计数器的解释

0x40是0x0100 0000

0x3F是0x0011 1111

当从0x40减到0x3F时,对应的就是T6位跳变到0,信号取反后输入或门

WWDG寄存器

窗口看门狗WWDG一共有3个寄存器,

控制寄存器WWDG_CR

配置寄存器WWDG_CFR

状态寄存器WWDG_SR

控制寄存器WWDG_  CR

WWDG_CR是16位寄存器,低8位有效,包括 1bit 的看门狗使能位WDGA 和T[6:0]这7位计数器

控制寄存器WWDG_CR用于

使能窗口看门狗,

设置重载计数器值

不管是给计数器初始值还是重装载值,直接对WWDG_CR的T[6:0]进行写操作就行

当计数器值从0x40减到0x3F,也就是T6位从1变到0时会产生复位

配置寄存器WWDG_CFR

配置寄存器WWDG_CFR是16位寄存器,低10位有效

WWDG_CFR配置寄存器用于

使能EWI提前唤醒中断

设置预分频系数

设置窗口上限值

位9是 EWI提前唤醒中断使能位。使能后WWDG计数到0x40就会产生EWI提前唤醒中断

位 8 : 7 是分频系数 对应1、2、4、8倍分频

位 [6:0] 是7位窗口值

注意"此中断只有在复位后才由硬件清零"是指EWI中断标志位只有复位后才能硬件清零,否则只能软件清零

状态寄存器WWDG_SR

WWDG_SR是16位寄存器,1个有效位,就是EWI提前唤醒中断的中断标志位

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

如果发生了EWI提前唤醒中断,WWDG_SR的EWI中断标志位就会置1,除非复位,否则只能软件清零。不清零就不会产生该中断。

WWDG超时时间计算

WWDG溢出时间 = (4096*预分频系数*计数个数)/时钟源频率   

4096*预分频系数/时钟源频率=1/WWDG工作频率 = 一个数的时间

T[5:0]代表一个范围,最大值是0x0011 1111 ,也就是63  ,+1就是64

由于WWDG_CR控制寄存器有7位用于装载计数值,

计数最大值就是0x7F,也就是127

而最小值是0x3F,也就是63

127-63=可用于计数的最大值=64

因此公式中T[5:0]+1其实代表了计数的个数

F4系列WWDG最短/最长超时时间

WWDG配置步骤

WWDG配置步骤介绍

/*******************************WWDG初始化*************************************/

1、工作参数初始化                   HAL_WWDG_Init()

/*******************************WWDG中断函数初始化**************************/

2、WWDG Msp初始化             HAL_WWDG_MspInit()    配置NVIC、CLOCK等

3、设置优先级,使能中断        HAL_NVIC_SetPriority()、HAL_NVIC_EnableIRQ()

4、编写中断服务函数               WWDG_IRQHandler() --- HAL_WWDG_IRQHandler()

5、重写提前唤醒回调函数        HAL_WWDG_EarlyWakeupCallback()

/********************************喂狗***************************************************/

6、在窗口期内喂狗                   HAL_WWDG_Refresh()   

相关HAL库函数介绍

HAL_WWDG_Init()   

主要操作CR来使能WWDG并预设计数值,操作CFG来寄存器使能EWI中断,预设分频系数和窗口值

HAL_WWDG_Refresh()   

主要操作WWDG_CR来重装载计数器

IWDG和WWDG的主要区别

IWDG

键值寄存器IWDG_KR、

重装载寄存器IWDG_RLR、

预分频寄存器IWDG_PR、

状态寄存器IWDG_SR

键值寄存器写入0x5555来使能重装载寄存器RLR和预分频寄存器PR的写权限,写入时要求状态寄存器SR的相应状态位为0;

键值寄存器KR写入0xcccc来使能IWDG;键值寄存器KR写入0xaaaa来执行喂狗操作

WWDG

控制寄存器WWDG_CR

配置寄存器WWDG_CFR

状态寄存器WWDG_SR

控制寄存器CR用来使能WWDG并装载计数值

配置寄存器设定预分频系数和窗口值

状态寄存器只有一位有效作为EWI中断的标志位

WWDG可以在计数到0x3F时触发EWI提前唤醒中断,中断回调函数里面可以写喂狗函数

IWDG就得自己找法子看喂狗函数放哪儿了

  • 27
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MQ-2 is a gas sensor module that can detect various types of gases such as methane, propane, butane, alcohol, smoke, and others. It uses a semiconductor sensor to detect the presence of gases and provides an analog output that can be read by an STM32 microcontroller. To interface the MQ-2 sensor with an STM32 microcontroller using HAL (Hardware Abstraction Layer) drivers, the following steps can be followed: 1. Configure the analog input pin of the STM32 microcontroller that will be used to read the analog output from the MQ-2 sensor. 2. Initialize the ADC (Analog-to-Digital Converter) peripheral of the STM32 microcontroller using the HAL ADC driver. 3. Configure the ADC channel that will be used to read the analog output from the MQ-2 sensor. 4. Use the HAL ADC driver to start the ADC conversion and wait for the conversion to complete. 5. Read the converted value from the ADC data register using the HAL ADC driver. 6. Convert the ADC reading into a gas concentration value using the calibration data provided by the manufacturer of the MQ-2 sensor. 7. Repeat the above steps periodically to continuously monitor the gas concentration value. The specific steps and code for each of the above steps will depend on the specific STM32 microcontroller and the MQ-2 sensor module being used. It is recommended to refer to the datasheets and application notes provided by the manufacturer of the STM32 microcontroller and the MQ-2 sensor module for detailed instructions on how to interface them using HAL drivers.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值