介绍:
用于检测和解决软件错误引起的故障。当计数器达到设定的超时值时,系统将复位。其特点是:1. 使用的时钟由独立的 RC 振荡器产生,因此可以在待机和停止模式下运行。2. 激活看门狗后,如果向下计数器的值达到 0X000,系统将复位。
功能说明:
通过写入关键字()来启动独立看门狗,计数器会从复位值0XFFF开始倒计数,当计数器值达到0X000时,产生复位信号。当计数值还未达到0X000时,写入寄存器,寄存器值会重新加载到定时器中,从而避免复位(俗称喂狗)。由此可见,当软件运行出现问题,在一定时间内无法喂狗看门狗功能时,就会产生系统复位,以检测和解决软件故障。
相关寄存器:
1.关键字注册:
关键字寄存器的有效位为位 0 至 15,位 16 至 31 为保留位。如上文所述,通过写入此寄存器,可以将寄存器中的值重新加载到计数器中,从而避免系统复位。由于(预分频器寄存器)和(重加载寄存器)是写保护寄存器,因此在此寄存器中写入关键值可以启用对和的访问。
2.预分频器寄存器:
该寄存器的有效位为位0至位2,其余位保留,通过设置PR[2:0]的值来设置相应的分频系数。
3.重新加载寄存器:
上面说过了,这个寄存器里的值会重新加载到计数器里,计数器从这个值开始向下计数,可以看出这个寄存器里的值和预分频寄存器里的值共同决定了超时时间。
4.状态寄存器:
该寄存器只有位0和位1为有效位。位0(RVU)为预分频器寄存器的值更新标志,位1(PVU)为计数器重载值更新标志。
相关代码分析:
独立看门狗的配置比较简单,通过相关库函数即可,初始化流程如下:
(ble); //允许写入IWDG->PR IWDG->RLR
(prer); //设置IWDG划分系数
(rlr); //设置IWDG负载值
(); // (喂狗)
(); //启用看门狗
窗口看门狗 (WWDG) 1
介绍:
相对于独立看门狗,所谓窗口看门狗就是设置一个窗口值(上下限),当减计数器的值小于0X40(窗口下限)时,就会发生复位,在设置的窗口之外重新加载减计数器也会执行复位。窗口看门狗可以设置提前唤醒中断,当减计数器等于0X40时,会触发该中断看门狗2启动错误,可以在该中断中进行喂狗等相关操作。
框图:
窗口看门狗的框图如下: 对照框图看下面相关介绍!
工作过程:
通过设置寄存器的WDGA位可以开启看门狗。向下计数器是控制寄存器的低7位,当第7位(即T6)由1变为0(即由0X40变为0X3F)时会复位。看门狗的上限值存放在配置寄存器的低7位中,计数器中的值与上限值进行比较,如果高于上限值,则喂狗,并执行复位。这也是窗口看门狗与独立看门狗的区别,可以看出喂狗时间只能在上下限之间,否则会执行复位操作。
相关寄存器:
1.控制寄存器():
如之前所述,有效位为位0至位7,位7(WDGA)为看门狗激活位,位0至位6用作计数器。
2.配置寄存器():
该寄存器的有效位为bit0~bit9,如上文所述,bit0~bit6存储计数器的上限值,bit7和bit8用于设置定时器的时间基数,从而选择相应的时钟分频器,bit9即为上文介绍的早期唤醒中断(EWI)。
3.状态寄存器():
该寄存器中唯一有效的位是位0,其用作早期唤醒中断(EWIF)的标志位。
标题:独立看门狗(iwdg)的特点、功能简述及使用方法
链接:https://www.gbbxw.com/news/xydt/13836.html
版权:文章转载自网络,如有侵权,请联系删除!