STM32F407ZGT6学习之看门狗

工程代码:https://pan.baidu.com/s/1Qlfg1_br0tN6yy0fcDwCjg,密码:fhh2

(一)概述

    看门狗功能: 看门狗用于检测和解决由软件错误引起的故障,发生软件错误时,看门狗产生复位,重启启动软件。

    看门狗工作原理:看门狗带计数器功能,当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。所以在程序运行中,需要及时给看门狗重新设定计数器(这个行为也称“喂狗”),看发生软件错误时,不能及时喂狗,看门狗就会产生复位。

    STM32有两个看门狗。两个看门狗介绍如下:

①独立看门狗。由专用的低速时钟(LSI)驱动,即使主时钟发生故障时仍能工作,用于看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。

②窗口看门狗。由APB1时钟分频后得到时钟驱动,用于看门狗在精确计时窗口起作用的应用程序。

(二)独立看门狗介绍

    翻阅STM32手册关于独立看门狗的部分,独立看门狗有四个主要性能:

①自由运行的递减计数器(从设定值往下递减置0,喂狗就是重设设定值)
②时钟由独立的RC振荡器提供(可在停止和待机模式下工作)
③看门狗被激活后,则在计数器计数至0x000时产生复位(软件发生错误无法及时喂狗)
④独立看门狗没有中断服务函数,只能在主函数中进行喂狗

(三)独立看门狗寄存器

①IWDG_KR寄存器用于控制独立看门狗状态,通过往IWDG_KR寄存器写入不同的值,控制独立看门狗的状态。

写入0x5555表示允许访问IWDG_PR和IWDG_RLR寄存器(往IWDG_KR写入0x5555值之后才能操作IWDG_PR和IWDG_RLR寄存器)

写入0xAAAA表示用IWDG_RLR寄存器中的值设置看门狗计数器(这个就是喂狗,防止计数器递减为0产生复位)

写入0xCCCC表示使能独立看门狗,看门狗开始工作(使能之后看门狗不能关闭,直到下一个软件重启)

②IWDG_PR寄存器是预分配寄存器,用于把输入的时钟分频后输出给计数器

③IWDG_PLR寄存器,每次喂狗时把IWDG_PLR寄存器的值赋给计数器

④IWDG_SR寄存器用于标志IWDG_PR和IWDG_RLR寄存器的值是否发生改变(一般不用)

(四)窗口看门狗介绍

    窗口看门狗的功能与独立看门狗的功能相识,也是用于监控软件错误,并产生复位。窗口看门狗具有以下几个特性:

①可编程的自由运行递减计数器(与独立看门狗一样都是递减计数器)
② 条件复位
─ 当递减计数器的值小于0x40, 则产生复位(独立看门狗是计数值为0时才产生复位)。
─ 当递减计数器在窗口外被重新装载, (若看门狗被启动)则产生复位。
注:当窗口看门狗的计数值大于窗口值的范围内时,赋值也会产生复位,这就是串口看门狗名字的由来吧
举例:假如窗口看门狗的窗口值为0x40~0x6E,如果你在计数器大于0x6E时就喂狗,产生复位,如果你在计数器递减小于0x40时还没有喂狗,产生复位。
③如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),它可以被用于重装载计数器以避免WWDG复位(所以看门狗可以在中断服务函数中进行喂狗)。

(五)窗口看门狗寄存器

①WWDG_CR寄存器,WDGA位用于开启关闭看门狗;T[6:0]用于设置喂狗时的值。

②WWDG_CFR寄存器,EWI用于软件触发看门狗产生中断;WDGTB[1:0]设置时钟的预分频值;W[6:0]窗口值,当计数器的值大于窗口值时,进行喂狗会产生复位。

③EWIF寄存器,EWIF时看门狗产生复位的标志位。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值