您的位置 首页 制造

STM32F4——独立看门狗与窗口看门狗

一、简介:其用于检测和解决由软件错误导致的故障,当计数器达到设定的超时时间值时会产生系统复位。其特点为:1、其运用的时钟是由独立…

一、简介:

其用于检测和处理由软件过错导致的毛病,当计数器到达设定的超时时刻值时会发生体系复位。其特色为:1、其运用的时钟是由独立的RC振荡器发生的,因而能够在待机和中止形式下运转。2、在看门狗激活后,假如递减计数器的值到达0X000时会发生体系复位。

二、功用简述:

经过向关键字寄存器(IWDG_KR)写入0XCCCC发动独立看门狗,计数器会从复位值0XFFF,递减计数,当计数器的值到达0X000时,发生复位信号。在计数值还未到达0X000时,向IWDG_KR寄存器写入0XAAAA,IWDG_RLR寄存器的值就会重装载到计时器,然后能够防止发生复位(俗称喂狗)。然后能够看出,当软件运转出问题时,在必定的时刻内无法做到喂狗的功用时,就会发生体系复位,完成其对软件毛病的检测和处理。

三、相关寄存器:

1、关键字寄存器:

关键字寄存器的有用位为位0到位15,位16到位31保存,前边现已介绍过经过向该寄存器中写入0XAAAA,能够使IWDG_RLR寄存器中的值重装载到计数器,防止体系复位。我们IWDG_PR(预分频器寄存器)和IWDG_RLR(重载寄存器)是具有写保护的寄存器,在该寄存器中写入键值0X5555可使能对IWDG_PR和IWDG_RLR的拜访。

2、预分频器寄存器:

该寄存器的有用位为位0到位2,其他位保存,经过设置PR[2:0]的值,设定相应的分频系数。

3、重载寄存器:

上面现已说到该寄存器中的值会重装载到计数器中,计数器将会从该值递减计数,由此可见:该寄存器中的值和预分频器寄存器中的值一起决议超时周期。

4、状况寄存器:

该寄存器只要位0和位1为有用位,位0(RVU)为预分频器寄存器的值更新标志位,位1(PVU)为计数器重载值更新标志。

四、相关代码剖析:

经过相关库函数对独立看门狗的装备仍是相对简略的,其间初始化的进程如下:

IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能对IWDG->PR IWDG->RLR的写IWDG_SetPrescaler(prer); //设置IWDG分频系数IWDG_SetReload(rlr);   //设置IWDG装载值IWDG_ReloadCounter(); //reload(喂狗)IWDG_Enable();       //使能看门狗

窗口看门狗

一、简介:

比照独立看门狗来看,所谓的窗口看门狗便是设定了一个窗口值(上限和下限值)。当递减计数器值小于0X40(窗口下限值)时发生复位。在设置的窗口外重载递减计数器也会碑文复位。窗口看门狗能够设置提早唤醒中止,当递减计数器等于0X40时会触发该中止,能够在该中止中做喂狗等相关操作。

二、框图

窗口看门狗的框图如下:比照的框图来看下边的相关介绍!

三、作业进程:

经过设置WWDG_CR寄存器的WDGA位能够使能看门狗,递减计数器为操控寄存器的低7位,其间当第7位(即T6)由1变为0(即由0X40递减为0X3F)时就会复位,在装备寄存器低7位寄存看门狗上限值,计数器中的值与上限值比较,假如在上限值之上喂狗也会碑文复位,这也是窗口看门狗与独立看门狗的不同之处。由此可见,喂狗的时刻只能在上限和下限值之间,不然就会碑文复位操作。

四、相关寄存器:

1、操控寄存器(WWDG_CR):

前面现已介绍过了,其间有用位为位0到位7,位7(WDGA)为看门狗激活位,位0到位6做计数器。

2、装备寄存器(WWDG_CFR):

该寄存器的有用位为位0到位9,位0到位6前面现已介绍过寄存的是计数器的上限值,位7和位8用来设置定时器时基,然后选定相应的时钟分频器。其间位9便是上边介绍到的提早唤醒中止(EWI)。

3、状况寄存器(WWDG_SR):

该寄存器中的有用位只要位0,用来做提早唤醒中止的标志位(EWIF)。

五、相关代码剖析:

阐明:我们窗口看门狗运用的时钟为PCLK1,因而要先使能相关时钟。在代码中是以舱位了提早唤醒中止为例的,试着将相关的库函数操作和其操作的寄存器对应上。

NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE); //使能窗口看门狗时钟WWDG_CNT=tr&WWDG_CNT;   //初始化WWDG_CNT. WWDG_SetPrescaler(fprer); //设置分频值WWDG_SetWindowValue(wr); //设置窗口值WWDG_Enable(WWDG_CNT);  //舱位看门狗NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn;  //窗口看门狗中止NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02;  //抢占优先级为2NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03;	    //子优先级为3NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;  //使能窗口看门狗NVIC_Init(&NVIC_InitStructure);WWDG_ClearFlag();//铲除提早唤醒中止标志位WWDG_EnableIT();//舱位提早唤醒中止

有关独立看门狗和窗口看门狗的介绍就到这儿,它们仍是相对简略的,使用起来也非常的便利和简略,期望对我们有所启示和协助吧!!

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/zhizao/265109.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部