一、实验目的
1)了解STM32窗口看门狗;
2)了解STM32窗口看门狗与独立看门狗的异同;
3)会使用窗口看门狗;
4)利用STM32窗口看门狗的中断功能来喂狗。
二、STM32 窗口看门狗简介
窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,看
门狗电路在达到预置的时间周期时,会产生一个MCU复位。在递减计数器达到窗口寄存器数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新, 那么也将产生一个MCU
复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。
简而言之,窗口看门狗有两个门限就上窗口和下窗口;下窗口值是固定的0x40;而上窗口由我们自己设置;当看门狗的计数器在上窗口值之外被刷新,或者低于下窗口值都
会产生复位。
涉及的寄存器有:控制寄存器(WWDG_CR)、配置寄存器(WWDG_CFR)、状态寄存器(WWDG_SR)。
配置步骤:
1) 使能 WWDG 时钟
2) 设置窗口值和分频数
3) 开启 WWDG 中断并分组
4) 设置计数器初始值并使能看门狗
5) 编写中断服务函数
独立看门狗与窗口看门狗的异同:相同的地方就是二者在一定情况下都会产生MCU复位;而IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立
工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。
三、硬件设计
LED灯、窗口看门狗。
四、软件设计
void WWDG_Init(u8 tr,u8 wr,u32 fprer)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG时钟使能
WWDG_CNT=tr&WWDG_CNT; //初始化WWDG_CNT.
WWDG_SetPrescaler(fprer);////设置IWDG预分频值
WWDG_SetWindowValue(wr);//设置窗口值
WWDG_Enable(WWDG_CNT); //使能看门狗 , 设置 counter .
WWDG_ClearFlag();//清除提前唤醒中断标志位
WWDG_NVIC_Init();//初始化窗口看门狗 NVIC
WWDG_EnableIT(); //开启窗口看门狗中断
}
//重设置WWDG计数器的值
void WWDG_Set_Counter(u8 cnt)
{
WWDG_Enable(cnt);//使能看门狗 , 设置 counter .
}
//窗口看门狗中断服务程序
void WWDG_NVIC_Init()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn; //WWDG中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占2,子优先级3,组2
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //抢占2,子优先级3,组2
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);//NVIC初始化
}
void WWDG_IRQHandler(void)
{
WWDG_SetCounter(WWDG_CNT); //当禁掉此句后,窗口看门狗将产生复位
WWDG_ClearFlag(); //清除提前唤醒中断标志位
LED1=!LED1; //LED状态翻转
}
五、实验结果
成功!
上一篇:【实验六】定时器中断实验
下一篇:【实验四】独立看门狗实验
推荐阅读最新更新时间:2024-03-16 15:38
设计资源 培训 开发板 精华推荐
- 告别耗电卡顿,首批支持统一推送标准的手机明年Q1登场
- 库存少 + “抽奖”机制不明确,小米手机 1 英镑抢购活动惹
- iPhone XS Max上的iOS 12.1证实已被越狱
- 微软、腾讯、英特尔“不务正业”种黄瓜,是因为人工智能
- 2018年思立微营收预增54%,光学指纹芯片持续导入大客户
- 苹果Apple Watch 7快充兼容情况:5W以上PD协议即可
- realme真我Q3s曝光:144Hz变速高刷LCD屏,支持HDR10
- OPPO K9s官宣:10月20日发布,搭载骁龙778G、120Hz电竞屏
- iPhone 13 Pro终极跌落测试:20层摔下正常可用
- 魅族Flyme和索尼Xperia达成战略合作宣称共同打造手机本地体验