stm32看门狗
好的,关于 STM32 的看门狗(Watchdog Timer, WDT),以下是中文详解:
核心概念:
看门狗本质上是一个硬件定时器,用于监控微控制器的运行状态。它的主要目的是检测和从软件故障(如程序跑飞、死锁或意外陷入死循环)中自动恢复系统。
工作原理(类似现实中的“看门狗”):
- 启动看门狗: 在程序正常初始化阶段启动看门狗定时器。
- 定时器倒计时: 看门狗定时器开始从初始值(重装载值)向下计数。
- “喂狗”: 程序必须在看门狗定时器计数到 0(超时)之前,通过写入特定寄存器(喂狗)来重置看门狗的计数器,使其重新开始倒计时。这表示“程序还在正常运行”。
- 超时处理: 如果程序由于某种故障(如程序跑飞、陷入死循环、中断服务程序卡死)而未能及时喂狗,定时器会计数到 0(超时)。
- 系统复位: 发生超时后,看门狗硬件会自动触发一个系统复位信号,强制整个 STM32 芯片复位重启,让程序回到起点重新开始执行。这是使系统从“卡死”状态恢复的关键机制。
STM32 提供的两种主要看门狗:
-
独立看门狗:
- 时钟源: 使用独立的内部低速时钟(
LSI,约 32-128 kHz,具体频率请查阅对应芯片数据手册,它不太精确且随温度/电压变化)。 - 优点:
- 完全独立于主时钟系统(
HCLK,PCLK)。即使主时钟失效(如晶体振荡器停振),只要LSI还在运行(它通常由 RC 振荡器提供,可靠性较高),独立看门狗仍然能工作并触发复位。 - 配置简单。
- 完全独立于主时钟系统(
- 缺点:
- 超时时间精度较低(因为
LSI频率不准)。 - 通常只能在 CPU 核心访问其寄存器时才能喂狗(虽然有些型号支持硬件窗口)。
- 用于检测整体程序运行停滞。
- 超时时间精度较低(因为
- 典型应用: 需要高可靠性的场景,防止整个系统由于任何原因(时钟故障、严重软件错误)导致永久挂起。
- 时钟源: 使用独立的内部低速时钟(
-
窗口看门狗:
- 时钟源: 来自于 APB1 总线时钟(
PCLK1),在主时钟正常时,频率更精确。 - 核心特点:
- 引入了一个“喂狗窗口”。
- 该窗口由上限(Window)和下限(0x3F)定义。
- 喂狗操作必须在这个时间窗口内完成才有效:不能太早也不能太晚!
- 太早喂狗(计数器值 > 窗口值)会触发复位。
- 太晚喂狗(计数器值已经递减到 0x3F 以下甚至超时)会触发复位。
- 只有在计数器值处于窗口值和 0x3F 之间时喂狗才成功。
- 优点:
- 检测故障更灵敏。它不仅检测程序完全不运行(不喂狗),还能检测程序运行过快或时序错乱(过早喂狗)。
- 时间精度较高(依赖
PCLK1)。
- 缺点:
- 依赖主时钟系统。如果主时钟失效,窗口看门狗也会失效。
- 配置相对复杂一点。
- 典型应用: 监控关键任务或中断的时序。确保关键代码段(如某个必须在特定时间间隔内完成的中断服务程序)按时执行,既不能跳过也不能执行过快。常用于监控显示刷新、通信时序等。
- 时钟源: 来自于 APB1 总线时钟(
如何使用(核心步骤概述):
- 启用时钟(若需要): 独立看门狗(IWDG)通常使用
LSI,需确保LSI已开启(或配置为自动开启)。窗口看门狗(WWDG)时钟来自PCLK1,通常默认开启。 - 配置参数:
- 独立看门狗: 设置预分频器(
IWDG_PR)和重装载值(IWDG_RLR)。超时时间Timeout = (4 * PR_Prescaler * RLR_Value) / LSI_Frequency。 - 窗口看门狗: 设置预分频器(
WWDG_CFR[7:8] WDGTB)、窗口值(WWDG_CFR[6:0] W[6:0])和计数器初始值(WWDG_CR[6:0] T[6:0])。需要仔细计算窗口上下限对应的计数器值和时间。
- 独立看门狗: 设置预分频器(
- 启用看门狗:
- 独立看门狗: 向键寄存器(
IWDG_KR)写入0xCCCC启动计数器。写入0x5555解锁PR和RLR寄存器以便修改。 - 窗口看门狗: 设置控制寄存器(
WWDG_CR)的WDGA位为 1 来激活看门狗。
- 独立看门狗: 向键寄存器(
- 在程序中喂狗:
- 独立看门狗: 在程序主循环或关键任务点(确保在超时前发生),向键寄存器(
IWDG_KR)写入0xAAAA重置计数器(喂狗)。 - 窗口看门狗: 在程序的关键路径(通常是某个中断服务程序或任务循环中的特定位置),在计数器值处于窗口值和0x3F之间时,写入控制寄存器(
WWDG_CR)的低7位(T[6:0])为新值(通常更新为初始值或接近窗口值的数)来喂狗。注意:必须在窗口内进行!
- 独立看门狗: 在程序主循环或关键任务点(确保在超时前发生),向键寄存器(
重要注意事项 & 最佳实践:
- 喂狗位置: 将喂狗代码放在程序逻辑的关键路径上,确保程序正常运行时一定能定期执行到。避免放在可能阻塞或很少执行的分支中。不要放在中断频率不稳定或可能丢失的中断里。
- 超时时间设定:
- 独立看门狗:时间应显著长于正常程序循环/任务的最大预期执行时间,但要短于用户能容忍的响应延迟时间(比如几百毫秒到几秒)。
- 窗口看门狗:窗口的上下界限需要根据被监控代码段的理论最大和最小执行时间仔细设定。
- 调试模式: 在调试器连接状态下,看门狗复位可能会打断调试。STM32 通常在调试模式下会自动冻结看门狗计数器(通过 DBGMCU 模块的配置寄存器
DBGMCU_APBx_FZ)。调试完成后需确保恢复此设置或在真实环境中测试。 - 低功耗模式: 进入低功耗模式(如 STOP, STANDBY)时,看门狗可能会停止计数(取决于模式)。需查阅芯片参考手册了解具体行为。有时需要用特定的低功耗模式或唤醒方式来配合喂狗。
- 硬件看门狗: STM32 的看门狗是片内硬件实现的,可靠性高。
- 喂狗时机: 对于窗口看门狗,过早喂狗和过晚喂狗同样会导致复位! 这点需要特别注意。
总结:
STM32 的独立看门狗(IWDG)和窗口看门狗(WWDG)是强大的硬件安全机制,是构建高可靠性嵌入式系统的基石。IWDG 用于检测系统完全挂死,依赖低速内部时钟,独立性强。WWDG 用于监控程序执行时序的正确性,依赖主时钟,精度高并能检测时序异常。正确配置和合理放置喂狗点是发挥其作用的关键。务必结合具体芯片型号的参考手册(Reference Manual)和数据手册(Datasheet)进行详细配置。
什么是模拟看门狗?模拟看门狗有什么用处?
看门狗大家应该再熟悉不过了,一旦忘记喂狗就会导致单片机复位,而在大部分stm32中都存在两种类型的看门狗,Independent watchdo
2023-11-22 09:40:29
MCU独立看门狗与窗口看门狗的区别
早期的MCU没有看门狗,就容易引起有些产品死机了不能重启工作。为了避免这个问题,后期的MCU在内部集成了看门狗的功能。为了满足更多使用场景,现在很多MCU都集成了两个
资料下载
刘洋
2021-10-28 20:06:01
STM32 ADC模拟看门狗及其应用
STM32 ADC模拟看门狗及其应用(电源技术期刊是什么级别期刊)-模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高低阈值,用户可以预
资料下载
丁冬芹
2021-08-04 18:12:22
STM32中的独立看门狗和窗口看门狗是什么
在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗
2023-02-20 17:47:07
STM32中的独立看门狗和窗口看门狗
在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门狗
2023-01-30 14:38:17
STM32中的独立看门狗和窗口看门狗
一、前言 在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了避免这种情况的出现,后期的MCU都集成了看门狗的功能。但是目前看门
2022-12-22 16:58:20
STM32芯片如何使用片内参考电压实现模拟看门狗
STM32芯片的ADC模块往往都支持模拟看门狗功能,即可以对单个或多个通道开启模拟转换值的监测。当模拟通道ADC值超出设定的阈值时可以产生模拟看门狗
2020-08-29 16:16:30
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机