STM32F10xxx——看门狗

一、介绍

        狗,在生活中我们非常熟悉,常见的有,在田园里的土狗,生活中的累成狗;技术中的菜狗,爱情中的舔狗......那么在STM32中用来检测和解决由软件错误引起的故障的狗叫什么呢,是的叫看门狗。STM32F10xxx内置两个看门狗,独立看门狗和窗户看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看 门狗设备可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。

        独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门 狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟 或过早的操作。

        IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精 度要求较低的场合。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。

二、看门狗的主要性能

        1、独立看门狗(IWDG)

        (1)自由运行的递减计数器。
        (2)时钟由独立的RC振荡器提供 ( 可在停止和待机模式下工作 )。
        (3)看门狗被激活后,则在计数器计数至0x000 时产生复位。
        
        2、窗口看门狗(WWDG)
                
        (1) 可编程的自由运行递减计数器
        (2) 条件复位
                ─ 当递减计数器的值小于0x40 ( 若看门狗被启动 ) 则产生复位。
                ─ 当递减计数器在窗口外被重新装载,( 若看门狗被启动 ) 则产生复位。
        (3) 如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断
                   (EWI),它可以被用于重装载计数器以避免WWDG复位。

三、看门狗的功能框图解说

1、独立看门狗(IWDG)

1)独立看门狗时钟

        独立看门狗的时钟由独立的 RC 振荡器 LSI 提供,即使主时钟发生故障它仍然有效,非常独立。LSI 的频率一般在 30~60KHZ 之间,根据温度和工作场合会有一定的误差,所以一般取 40KHZ, 所以独立看门狗的定时时间并不一定非常精确,只适用于对时间精度要求比较低的场合。

2)递减计数器的时钟

        递减计数器的时钟由 LSI 经过一个 8 位的预分频器得到,可以操作预分频器寄存器 IWDG_PR 来设置分频因子,分频因子可以是:[4,8,16,32,64,128,256,256],计数器时钟 CK_CNT= 40/ 4*2^PRV,一个计数器时钟计数器就减一。

3)计数器

        独立看门狗的计数器是一个 12 位的递减计数器,最大值为 0XFFF,当计数器减到 0 时,会产生 一个复位信号:IWDG_RESET,让程序重新启动运行,如果在计数器减到 0 之前刷新了计数器的值的话,就不会产生复位信号,重新刷新计数器值的这个动作我们俗称喂狗。

4) 重装载寄存器

        重装载寄存器是一个 12 位的寄存器,里面装着要刷新到计数器的值,这个值的大小决定着独立 看门狗的溢出时间。超时时间 Tout = (4*2^prv) / 40 * rlv (s) prv 是预分频器寄存器的值,rlv 是重装载寄存器的值。

5)键寄存器

         软件必须以一定的间隔写入0xAAAA,否则,当计数器为0时,看门狗会产生复位。 写入0x5555表示允许访问IWDG_PRIWDG_RLR寄存器。写入0xCCCC,启动看门狗工作(若选择了硬件看门狗则不受此命令字限制)

6)状态寄存器

       状态寄存器 SR 只有位 0PVU 和位 1RVU 有效,这两位只能由硬件操作,软件操作不了。RVU: 看门狗计数器重装载值更新,硬件置 1 表示重装载值的更新正在进行中,更新完毕之后由硬件清 零。PVU: 看门狗预分频值更新,硬件置’1’指示预分频值的更新正在进行中,当更新完成后,由 硬件清零。所以只有当 RVU/PVU 等于 0 的时候才可以更新重装载寄存器/预分频寄存器。

2、窗口看门狗(WWDG)

        

1)窗户看门狗时钟

        窗口看门狗时钟来自 PCLK1RCC 时钟控制器开启,PCLK1 最大是 36M。   

2)计数器的时钟

         计数器时钟由 CK 计时器时钟经过预分频器分频得到,分频系数由配置寄存器 CFR 的位 8:7 WDGTB[1:0] 配置,可以是 [0,1,2,3],其中 CK 计时器时钟 =PCLK1/4096。由计数器的时钟 CNT_CK=PCLK1/4096/(2^WDGTB),得T= 1/CNT_CK = Tpclk1 * 4096 * (2^WDGTB)。       

3)计数器

       窗口看门狗的计数器是一个递减计数器,共有 7 位,其值存在控制寄存器 CR 的位 6:0,即 T[6:0], 当 7 个位全部为 1 时是 0X7F,这个是最大值,当递减到 T6 位变成 0 时,即从 0X40 变为 0X3F时候,会产生看门狗复位。

 4)计算窗户看门狗的超时时间

四、总结

        通过以上的描述,原来狗也是让人有点头疼的。希望通过在一篇文章可以让你对看门狗更加的熟悉。需要更详细的解释,请查找权威资料,谢谢大家的阅读!

   

  • 31
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值