您的位置 首页 测评

STM32单片机的独立看门狗和窗口看门狗的特色及用法解析

STM32单片机的独立看门狗和窗口看门狗的特点及用法解析-IWDG是一个独立看门狗,具有独立于系统的时钟,与片外看门狗更为相似,使用片内独立的阻容时钟发生电路计时,记录时间为=(时钟频率(40KHz)/ 分频数)*IWDG_SetReload(t),t《0xFFF.也就是说记录的最大设定的复位时间为 (1/40K)*256*0xFFF = 26.2 S。由于IWDG使用的时钟本身不准确,会因为漂移产生一定变化,喂狗时应该给出一定的裕量。

1.看门狗介绍

看门狗这东西尽管简略,但我信任绝大多程序员没有满意注重它。运用看门狗确保体系正常地运转对错常有必要的。咱们在规划产品时,代码以及硬件规划缺点或是外界电磁搅扰都有可能使体系死机,假如不能正常对其进行复位,体系的可靠性将大打折扣。看门狗分为软件看门狗和硬件看门狗两类,其原理都是运用一个独立守时器来计时,超出时刻就会产生复位信号,首要差异看是否具有独立的硬件结构,假如有,便是硬件看门狗,假如是一个一般守时器完成的那么便是软件看门狗。STM32F407片内有两个看门狗:独立看门狗IWDG以及窗口看门狗WWDG,下面来评论各自的特色和用法。

2.IWDG的特色以及运用

IWDG是一个独立看门狗,具有独立于体系的时钟,与片外看门狗更为类似,运用片内独立的阻容时钟产生电路计时,记载时刻为=(时钟频率(40KHz)/ 分频数)*IWDG_SetReload(t),t《0xFFF.也便是说记载的最大设定的复位时刻为 (1/40K)*256*0xFFF = 26.2 S。由于IWDG运用的时钟自身不精确,会由于漂移产生必定改变,喂狗时应该给出必定的裕量。别的,这个时钟与体系时钟并无相关,一切也不能与体系进行同步产生中止,一旦守时时刻到后就会产生复位信号,体系来不及存储当时运转状况就会重启,能够在要求不高的场合运用。

3.WWDG的特色以及运用

WWDG具有一个独立的7位守时器,运用体系时钟,能够产生体系中止。其守时最时刻为(1/PCLK1)* 4096) * 分频系数(最大为8)*(0x7F – 0x3F)= 58ms.其复位的条件是:

(1)当计数器的数值从0x40减到0x3F

(2)当改写看门狗时计数器的数值大于窗口上限值时

满意任何一条都能够产生复位信号。通常情况下设置窗口上限值为0x7F,下限值默以为0x40,计数器向下数到0x40就会产生中止,下个910us后变为0x3F就会复位体系。

细心想想能够发现三个问题。

榜首、咱们能够发现即便设定了最大值,WWDG最大计时仅仅有58ms,咱们在比较大的程序中也没必要运转一小段就增加一个喂狗程序,想使其守时5S或10S的时刻再复位体系应该怎样处理呢?

经过试验我找到一种办法,便是在中止函数中再做一个额定计数器,假如计数器没有到达设定值,就从头加载喂狗守时器初值,一起使设定值加1,当计数器到达设定值时,就不加载喂狗守时器初值,这时看门狗守时器就会从从0x40减到0x3F产生体系复位。运用这个办法能够将守时时刻拓宽到 58ms*额定计数器设定值,定个几十秒都不是问题。

第二,当额定计数器到达设定值时,此刻阐明程序没有及时复位这个额定计数器,软件或硬件产生了过错,将时体系复位,咱们需求存储一些运转过程中的变量,仅仅有不到1ms的时刻(从0x40减到0x3F最长大约为910us)怎样够用呢?

这样就先写Wwdg_Feed(0x7F)从头加守时器初值,再对咱们的存储函数进行改造,多增加一些Wwdg_Feed(0x7F)函数,使其不至于再减到0x40,存储作业都做好之后,不再喂狗,那么再次产生中止后不再喂狗就会复位体系了。

第三,假如产生复位,怎么区别是上电复位仍是看门狗复位呢?

在初始化WWDG时分,有一个RCC_GetFlagStatus(RCC_FLAG_WWDGRST)能够用于判别是否产生看门狗复位,假如是从头上电引起的复位这个值当然是体系默认值,假如是看门狗复位的话这个值就会产生改变,这样就能够针对这两种不同状况进行状况康复。

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部