历史上的今天
今天是:2025年04月23日(星期三)
2019年04月23日 | STM32的窗口看门狗(WWDG)
2019-04-23 来源:eefocus
一、窗口看门狗由从APB1时钟分频后得到时钟驱动。
通过可配置的时间窗口来检测应用程序非正常的过迟或过早操作。
窗口看门狗最适合那些要求看门狗在精确计时窗口起作用的程序。
二、什么是窗口看门狗?
窗口就是因为其喂狗时间是一个有上下限的范围内(窗口),你可以通过设定相关寄存器,设定其上限时间(下限固定)。喂狗的时间不能过早也不能过晚。
而独立看门狗限制喂狗时间在0-x内,x由相关寄存器决定。喂狗的时间不能过晚
三、窗口看门狗的好处
对于一般的看门狗,因为是在复位前的任意时刻刷新看门狗,但有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执行了刷新看门狗操作,这样的情况下就检测不出来了;
如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置刷新看门狗的一个时间窗口,保证不会提前也不会滞后刷新看门狗,这样可以检测出程序没有按照正常的路径运行非正常地跳过了某些程序段的情况。
四、窗口看门狗工作示意图及框图
上窗口值W[6:0]必须大于下窗口值0x40。否则就无窗口了

工作示意图

五、产生复位的几种条件
STM32F的窗口看门狗中有一个7位的递减计数器T[6:0],它会在出现下述2种情况之一时产生看门狗复位:
①当喂狗的时候如果计数器的值大于某一设定数值W[6:0]时,此设定数值在WWDG_CFR寄存器定义。
②当计数器的数值从0x40减到0x3F时【T6位跳变到0】。
如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),它可以用于喂狗以避免WWDG复位。
六、窗口看门狗配置过程
①使能看门狗时钟:
RCC_APB1PeriphClockCmd();
② 设置分频系数:
WWDG_SetPrescaler();
③设置上窗口值:
WWDG_SetWindowValue();
④开启提前唤醒中断并分组(可选):
WWDG_EnableIT();
NVIC_Init();
⑤使能看门狗:
WWDG_Enable();
⑥喂狗:
WWDG_SetCounter();
⑦编写中断服务函数
WWDG_IRQHandler();
-------------------------------------------------------------------------------------------------------
代码如下:
void init_wwdg(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
//使能wwdg时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
// WWDG_CNT=0x7F&WWDG_CNT; //初始化WWDG_CNT.
//设置看门狗时钟 1281Hz = (PCLK1 (42MHz)/4096)/8 = 1281 Hz (~780 us)
//指定WWDG预分频器
WWDG_SetPrescaler(WWDG_Prescaler_8);//Prescaler:计数器时钟
//设置窗口值为80; WWDG计数器只有在计数器时才能刷新低于80(大于64),否则会产生复位
WWDG_SetWindowValue(0x60);
//设置重载计数值,也就是喂狗
WWDG_Enable(0x7f);
// 初始化中断
NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn; // EXTI0的中断向量号
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; // 抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; // 响应优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // 使能中断
NVIC_Init(&NVIC_InitStructure);
// 清空提前唤醒中断的标志位
WWDG_ClearFlag();
// 使能提前唤醒中断
WWDG_EnableIT();
}
//当递减计数器递减到0x40时,触发中断函数,进行喂狗
void WWDG_IRQHandler(void)
{
if(WWDG_GetFlagStatus() == SET)
{
// 喂狗
WWDG_SetCounter(127);
//WWDG_SetCounter(WWDG_CNT);
//清空提前唤醒中断的标志位
WWDG_ClearFlag();
}
}
上一篇:STM32的ADC的原理与使用
史海拾趣
|
摘要:任意波形发生器是信号处理领域中必不可少的仪器设备,而很多任意波形发生器不能产生快速、有效、连续而且易于定制的信号波形。本文提出了一种利用缓冲区快速交换数据、基于PCI总线的任意波形发生器的设计构想,依据该构想设计的任意波形发生 ...… 查看全部问答> |
|
大家好,本人今年要参加全国电子设计竞赛,各位大哥哥大姐姐谁有相关的板子卖给小弟!不胜感激!FPGA板要求:板子要精炼,不需要太多花俏的东西例如数码管什么的,只要把线全部引出了即可,支持JTAG下载!芯片最好clylone!! 不是也没关系! ...… 查看全部问答> |
|
Spartan-6 and Virtex-6 FPGA Embedded Kit FAQ 1. Where can I purchase an Embedded kit? 2. How much do the Spartan-6 and Virtex-6 FPGA Embedded Kits cost? 3. When will I get my kit? 4. What are included in the Embedded Kits? 5. What expansion ports are avail ...… 查看全部问答> |
|
是BPB还是FAT或FDT的损坏? 除了硬件损坏,文件系统突然断电会有什么样的写入错误造成存贮设备不可用吗? 一般的文件系统如果是先写数据,再记录FAT和FDT会提高保护的可能性吗。… 查看全部问答> |
|
最近在看一份富士通半导体的产品选型文件中出现的名词ECO不解,在百度上找到的结果是:Engineering Change Order。还有的说是在与环保相关的概念和资料中,ECO 是ECOLOGICAL的缩写,用来表示生态环保的意思。小弟就是想知道ECO到底是个什么技术?还 ...… 查看全部问答> |




