WWDG喂狗

2024-01-26 09:28
文章标签 喂狗 wwdg

本文主要是介绍WWDG喂狗,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3F 是0111111

40 是1000000

0X7F 127

0X5F 95     127-95=32

注意:中断是在0x40,在0x40喂狗则程序不会复位

在0x5F之前喂狗会复位,减小到63以下也会复位

在0x5F与0x3F之间喂狗会继续执行,不会复位

WWDG_HandleTypeDef WWDG_Handler;     //窗口看门狗句柄//初始化窗口看门狗 	
//tr   :T[6:0],计数器值 
//wr   :W[6:0],窗口值 
//fprer:分频系数(WDGTB),仅最低2位有效 
//Fwwdg=PCLK1/(4096*2^fprer). 一般PCLK1=42Mhz
void WWDG_Init(u8 tr,u8 wr,u32 fprer)
{WWDG_Handler.Instance=WWDG;WWDG_Handler.Init.Prescaler=fprer; 			//设置分频系数WWDG_Handler.Init.Window=wr;       			//设置窗口值WWDG_Handler.Init.Counter=tr;     			//设置计数器值WWDG_Handler.Init.EWIMode=WWDG_EWI_ENABLE;	//使能提前唤醒中断HAL_WWDG_Init(&WWDG_Handler);      			//初始化WWDG
}//WWDG底层驱动,时钟配置,中断配置
//此函数会被HAL_WWDG_Init()调用
//hwwdg:窗口看门狗句柄
void HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg)
{   __HAL_RCC_WWDG_CLK_ENABLE();    //使能窗口看门狗时钟HAL_NVIC_SetPriority(WWDG_IRQn,2,3);    //抢占优先级2,子优先级为3HAL_NVIC_EnableIRQ(WWDG_IRQn);          //使能窗口看门狗中断
}//窗口看门狗中断服务函数
void WWDG_IRQHandler(void)
{HAL_WWDG_IRQHandler(&WWDG_Handler);//调用WWDG共用中断处理函数
}//中断服务函数处理过程,中断在0x40
//此函数会被HAL_WWDG_IRQHandler()调用
void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef* hwwdg) //数到0x40 喂狗,就不会复位了
{HAL_WWDG_Refresh(&WWDG_Handler);//更新窗口看门狗值LED1=!LED1; 
}

//中断服务函数处理过程
//此函数会被HAL_WWDG_IRQHandler()调用
void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef* hwwdg)
{
    delay_ms(2);
    HAL_WWDG_Refresh(&WWDG_Handler);//更新窗口看门狗值
    LED1=!LED1; 

}

注意:延时2ms时,标红代码不会执行,因为已经复位喂狗

同时,while里面函数也正常运行

这篇关于WWDG喂狗的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/646349

相关文章

WWDG—窗口看门狗

WWDG—窗口看门狗 窗口看门狗跟独立看门狗一样,也是一个递减计数器不断的往下递减计数,当减到一个固定值 0X40时还不喂狗的话,产生复位,这个值叫窗口的下限,是固定的值,不能改变。这个是跟独立看门狗类似的地方,不同的地方是窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生复位,这个值叫窗口的上限,上限值由用户独立设置。窗口看门狗计数器的值必须在上窗口和下窗口之间才可以喂狗,这就是窗口看门

奉加微PHY6233开门狗;超时时间对不上;好像应用不需要喂狗只需要开启定时器就行;底层是通过空闲任务喂狗的

超时时间对不上 这里设置看门狗超时时间为WDG_16S: hal_watchdog_config(WDG_16S); 但是我测试到复位时间却是34秒: 然后我设置时间为WDG_2S的话实际间隔是6秒: 我很无语,被逼无奈只能够认了,最小设置是WDG_2S也就是说时间为6秒,这时候2秒喂狗一次: #define

奉加微PHY6233开门狗;超时时间对不上;好像应用不需要喂狗只需要开启定时器就行

超时时间对不上 这里设置看门狗超时时间为WDG_16S: hal_watchdog_config(WDG_16S); 但是我测试到复位时间却是34秒: 然后我设置时间为WDG_2S的话实际间隔是6秒: 我很无语,被逼无奈只能够认了,最小设置是WDG_2S也就是说时间为6秒,这时候2秒喂狗一次: #define

19. 窗口看门狗-WWDG

窗口看门狗概述             常用寄存器和库函数配置     窗口看门狗实验 #ifndef __WWDG_H#define __WWDG_H#include "sys.h"void WWDG_Init(u8 tr,u8 wr,u32 fprer);#endif #include "stm32f4xx.h"#include "delay.h"

9.独立看门狗IWDG窗口看门狗WWDG编码思路

前言:         看门狗是维护系统稳定性的一向技术,可以让代码跑飞及时复位,在产品中非常常用,俗话说,重启能解决90%的问题,作为产品来说,你总不能因为一次bug就让程序卡死不动了,肯定要试着重启一下的。看门狗的原理简单的说就是它是一个倒数的计数器,倒数到某个数,它就重启,我们正常的程序当然不能莫名其妙重启,所以在它倒数的期间,往它的计数器写一个新的倒数的值,这样它就不会重启了。更简明地说

IWDG和WWDG HAL库+cubeMX

一.IWDG 1.原理 启用IWDG后,LSI时钟会自动开启 2.IWDG溢出时间计算  3.IWDG配置步骤 4.HAL库相关函数介绍 HAL_IWDG_Init //使能IWDG,设置预分频系数和重装载值等HAL_IWDG_Refresh //把重装载寄存器的值重载到计数器中,喂狗typedef struct { IWDG_TypeDef *Instance; /

看门狗溢出实验(按键不停喂狗)

/*-----------------------------------------------   内容:通过按键喂狗防止溢出复位 看门狗演示程序           在16383个机器周期内必须至少喂狗一次         标准AT89s52单片机试验通过。 ------------------------------------------------*/ #include <reg52

[autosar] TLF35584 (SBC)的喂狗设计和实现(一)

目录 关键词平台说明背景技术难点(关注点)WDG简述1.Window Watchdog2. Functional Watchdog 实现过程一、配置相关1. TOM配置,选择由其他驱动配置,映射到GPT配置。2.分频配置3.触发时间,持续时间及翻转计数(重点) 二、窗口狗调度1.触发WDI2.最大持续时间设置和重新赋值3. Gpt触发 小结 关键词 嵌入式、C语言、autosa

STM32CubeIDE开发(十三), stm32窗口看门狗WWDG的CubeMX配置及HAL库底层实现分析

目录 一、stm32的WWDG说明        1.1  WWDG特点:         1.2 WWDG的cubeMX配置及说明         1.3 WWDG喂狗时间计算 二、WWDG工程创建及源码分析        2.1 cubeMX界面配置WWDG          2.2 WWDG超时时间实例计算        2.3 工程高级配置 三、WWDG源码分析及应用

WWDG—窗口看门狗

原创出自秉火老师:https://www.cnblogs.com/firege/p/5805947.html     本章参考资料:《STM32F4xx中文参考手册》WWDG章节。 学习本章时,配合《STM32F4xx中文参考手册》WWDG章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。 35.1 WWDG简介 STM32有两个看门狗,一个是独立看门狗,一个是