12.STM32窗口看门狗

1.窗口看门狗概念

独立看门狗是可以早,但是不可以晚。
窗口看门口是不能过早,也不能过早。
示意图
请添加图片描述
意思:初值下降到W[6:0]前不能喂狗
小于3FH就会产生复位

2.窗口看门狗框图

请添加图片描述
首先时钟来源PCLK,经过预分频后作为窗口看门狗时钟
1.在WWDG_CR >WWDG_CFR的时候去喂狗的话,就会输出1,如果这时候启动位WDGA为1启动了,就会输出1,产生复位。
2.当减到0了,T6位为0了,经过取反,输出了1,又与启动位同时为1,就会产生复位
就是喂狗过早过晚都不行。
请添加图片描述
在这里插入图片描述
这是用于提前提醒窗口看门狗要喂狗了

2.窗口看门狗超时时间请添加图片描述

注意事项
上窗口值必须大于下窗口值0x40,要不然连窗口都没有了。

2.窗口看门狗寄存器

1.WWDG_CR
请添加图片描述
第七位就是使能位
0到6位是当计数器,当从40h变成3fh时(T6变成0),就会产生看门狗复位
2.WWDG_CFR
请添加图片描述
位0-位6存上窗口值
位8-位7,确定分频系数
位9,是否提前唤醒中断
2.WWDG_SR
请添加图片描述
提前唤醒中断标志位
不管有没有中断,到达40h,都会置位

3.窗口看门狗HAl库函数请添加图片描述

1.HAL_WWDG_Init(WWDG_HandleTypeDef *hwwdg)
初始化函数,分频系数,上窗口,转载值
2. HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg);
时钟使能,中断分组
3.HAL_WWDG_Start(WWDG_HandleTypeDef *hwwdg);
启动看门狗
3. HAL_WWDG_Start_IT(WWDG_HandleTypeDef *hwwdg);
启动看门狗和中断
4.HAL_WWDG_Refresh(WWDG_HandleTypeDef *hwwdg, uint32_t Counter);
喂狗
5.HAL_WWDG_IRQHandler(WWDG_HandleTypeDef hwwdg);
中断处理函数,不说了,通用处理函数,还有一个回调函数
6.HAL_WWDG_WakeupCallback(WWDG_HandleTypeDef
hwwdg);
中断的回调函数

4.窗口看门狗配置过程

请添加图片描述

5.窗口看门狗代码

喂狗时候会打印

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
WWDG_HandleTypeDef hwwdg;
void HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg)    //回调函数
{
	__HAL_RCC_WWDG_CLK_ENABLE();          //使能时钟
	HAL_NVIC_SetPriority(WWDG_IRQn,2,3);
	HAL_NVIC_EnableIRQ(WWDG_IRQn);
	
}
void WWDG_IRQHandler(void)
{
	HAL_WWDG_IRQHandler(&hwwdg);
}
void HAL_WWDG_WakeupCallback(WWDG_HandleTypeDef *hwwdg)
{
	printf("123\r\n");
	HAL_WWDG_Refresh(hwwdg,0x7f);
}
	
int main(void)
{

    HAL_Init();                     //初始化HAL库   
    Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz
    delay_init(180);                //初始化延时函数
    uart_init(115200);              //初始化USART
    LED_Init();                     //初始化LED 
    KEY_Init();                     //初始化按键
		hwwdg.Instance = WWDG;
		
		hwwdg.Init.Prescaler = WWDG_PRESCALER_1; //预分频系数(45M/4096=1373*8hz)
		hwwdg.Init.Window =  0x5f;    //上窗口值
		hwwdg.Init.Counter =  0x7f;   //计数值(0x7f-0x40+1=64)个时钟0.0466*8=0.37s
		HAL_WWDG_Init(&hwwdg);        //初始化
	  HAL_WWDG_Start_IT(&hwwdg);      //使能窗口看门狗与提前唤醒中断
	
    while(1)
    {
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值