7.看门狗实验.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统七. IWDG和WWDG实验本章内容1. 看门狗简介2. IWDG简介3. 独立看门狗案例4. WWDG简介5. 窗口看门狗案例1. 看门狗简介1.1 看门狗的定义 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) 。1.2 STM32看门狗概述 STM32内置两个看门狗,提供了更高的安全性,时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗/窗口看门狗)可以用来检测和解决由软件错误引起的故障。当计数器达到给定的超时值时,触发一个中断(仅适用窗口看门狗)或者产生系统复位。 独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。 IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 窗口看门狗由从APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。2. IWDG简介2.1 IWDG主要性能自由运行的递减计数器时钟由独立的RC振荡器提供(可在停止和待机模式下工作)看门狗被激活后,则在计数器计数至0x000时产生复位2.2 IWDG功能描述(STM32参考手册 P317) 在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。无论何时,只要在键寄存器IWDG_KR中写入0xAAAA, IWDG_RLR中的值就会被重新加载到计数器,从而避免产生看门狗复位 。2.3 IWDG相关寄存器键寄存器IWDG_KR: 0~15位有效预分频寄存器IWDG_PR:0~2位有效。具有写保护功能,要操作先取消写保护重装寄存器IWDG_RLR:0~11位有效。具有写保护功能,要操作先取消写保护。状态寄存器IWDG_SR:0~1位有效2.4 键寄存器IWDG_KR(STM32参考手册 P317)2.5 预分频寄存器IWDG_PR(STM32参考手册 P318)2.6 重装寄存器IWDG_RLR(STM32参考手册 P318)2.7 独立看门狗超时时间溢出时间计算:Tout=((4×2^prer) ×rlr) /40 时钟频率LSI=40K, 一个看门狗时钟周期就是最短超时时间。最长超时时间= (IWDG_RLR寄存器最大值)X看门狗时钟周期2.8 状态寄存器IWDG_SR(STM32参考手册 P319)2.9 独立看门狗配置的一般步骤:1. 取消寄存器写保护:IWDG_WriteAccessCmd();2. 设置独立看门狗的预分频系数,确定时钟:IWDG_SetPrescaler();3. 设置看门狗重装载值,确定溢出时间:IWDG_SetReload();4.使能看门狗IWDG_Enable();5.应用程序喂狗:IWDG_ReloadCounter();3. 独立看门狗案例 3.1 独立看门狗头文件 按新建按钮新建一个文件,然后保存在 HARDWARE-WDG 文件夹下面,保存为 wdg.h。在该文件中输入如下代码:#ifndef __WGD_H#define __WGD_H#include sys.hvoid IWDG_Init(u8 prer,u16 rlr);#endif 按新建按钮新建一个文件,然后保存在 HARDWARE-WDG 文件夹下面,保存为 wdg.c。在该文件中输入如下代码:#include wdg.hvoid IWDG_Init(u8 prer,u16 rlr){ IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); IWDG_SetPrescaler(prer); IWDG_SetReload(rlr); IWDG_ReloadCounter(); IWDG_Enable();}3.2 独立看门狗源文件3.3 独立看门狗主程序 回到主界面,在 main.c 文件里面编写如下代码:#include led.h#include delay.h#include sys.h#include wdg.h int main(void) { u16 times;3.3 独立看门狗主程序 delay_init(); LED_Init()

您可能关注的文档

文档评论(0)

tt435678 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档