第十七章:STM32独立看门狗(IWDG)的使用

本文详细介绍了STM32独立看门狗(IWDG)的功能、工作原理及初始化步骤,包括开启看门狗、喂狗、修改预分频因子和重装载寄存器值等操作。IWDG使用LSI时钟并具有独立的计数器,用于在程序跑飞时自动复位系统。通过设置不同的预分频因子和重装载值,可以调整看门狗的超时时间。
摘要由CSDN通过智能技术生成

单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示 MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号) 。

感觉是是自动复位功能,就是在一定时间内你应该去喂它而如果程序中途进入了死循环(就是喂不了了)这个MCU就挂了。。但如果没开IWDG ,你不知道它挂没挂(虽然个人认为也是可以手动按复位键的嘛。。)

----------------------------------------------------------------------------------------------------------------------------(上面那段话抄自某论坛)

按照STM32参考手册的说法:“独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。”

IWDG初始化步骤:

1)取消寄存器写保护(向IWDG_KR写入 0X5555

2)设置独立看门狗的预分频系数和重装载值

3)重载计数值喂狗(向IWDG_KR 写入0XAAAA

4)启动看门狗(IWDG_KR 写入0XCCCC)


1.      IWDG的特点以及使用

         IWDG是一个独立看门狗,具有独立于系统的时钟,与片外看门狗更为相似,使用片内独立的阻容时钟发生电路计时,记录时间为=(时钟频率(40KHz)/ 分频数)*IWDG_SetReload(t),t<0xFFF.也就是说记录的最大设定的复位时间为 (1/40K)*256*0xFFF  = 26.2 S。由于IWDG使用的时钟本身不准确,会因为漂移产生一定变化,喂狗时应该给出一定的裕量。另外,这个时钟与系统时钟并无关联,所有也不能与系统进行同步产生中断,一旦定时时间到后就会产生复位信号,系统来不及存储当前运行状态就会重启,可以在要求不高的场合使用。


简单的说,STM32 中的IWDG 其核心就是一个12bits的向下递减的计数器,当计数器计数到零时就会触发系统复位。因此,要在每次计数到零之前将其复位到一个初始值。这个初始值就在重装载寄存器(IWDG_RLR)中存放,其默认值为0xFFF,我们也可以将其改为其他值。

计数器的时钟由LSI时钟经过分频后提供,预分频因子由预分频寄存器(IWDG_PR)的值来确定。具体的说IWDG_PR 寄存器只有最低的3位是有效的,其他高位永远都为0,这最低的3位就决定了预分频因子,这3位的值与预分频因子的关系如下。

[plain]  view plain  copy
  1. 000: 预分频因子=4   
  2. 100: 预分频因子=64   
  3. 001: 预分频因子=8   
  4. 101: 预分频因子=128  
  5. 010: 预分频因子=16   
  6. 110: 预分频因子=256   
  7. 011: 预分频因子=32   
  8. 111: 预分频因子=256   


除了上面介绍的两个寄存器,IWDG还有另外两个寄存器,合起来共四个寄存器,分别是:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值