STM32学习--看门狗

本文介绍了STM32的两种看门狗:独立看门狗(IWDG)和窗口看门狗(WWDG),用于防止程序跑飞和故障。IWDG由LSI驱动,适合低精度需求,而WWDG基于PCLK,适合精确计时场景。详细讲解了它们的工作原理、相关寄存器和使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 概述

  看门狗用来防止程序跑飞、陷入死循环的,采用定时喂狗的方式来表示程序正在正常运行,一旦没有喂狗则会引起系统重起。
  STM32内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗IWDG和窗口看门狗WWDG)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。

2.两个看门狗区别

  独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。
  IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。

3.独立看门狗

3.1 工作原理

  独立看门狗时钟来源于LSI,RC时钟标称40KHz,但实际有散差,范围为30KHz~60KHz。分频之后作为看门狗计时时钟。
这里写图片描述
  在键值寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。喂狗时只要在键寄存器IWDG_KR中写入0xAAAA, IWDG_RLR中的值就会被重新加载到计数器,从而避免产生看门狗复位。

3.2 相关寄存器

  键值寄存器( IWDG_KR):只写寄存器,写入 0xCCCC,开始启用独立看门狗;喂狗时,写入 0xAAAA。
  状态寄存器(IWDG_SR):只有最低2个位有用,RVU: 看门狗计数器重装载值更新标志,PVU: 看门狗预分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值