【STM32笔记】STM32的看门狗详解(独立看门狗和窗口看门狗)

这篇具有很好参考价值的文章主要介绍了【STM32笔记】STM32的看门狗详解(独立看门狗和窗口看门狗)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 看门狗是啥。

  首先,它不是真的狗。看门狗(Watchdog)是一种硬件定时器,用于监测程序执行是否正常,并在系统出现故障或死锁时重启系统。在STM32F10xxx中内置了两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引发的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于串口型看门狗)或产生系统复位。

  IWDG(独立看门狗)
  由专门的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。

  WWDG(窗口看门狗)
  由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

二. IWDG(独立看门狗)

1. 主要性能

  • 自由运行的12位递减计数器
  • 时钟由独立的RC振荡器提供(可在停止和待机模式下工作)
  • 看门狗被激活后,则在计数器计数至0时产生复位,若在未计数到0前进行了喂狗处理(重置计数器),则不会产生复位信号

2. 功能描述

  若在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。无论何时,只要在键寄存器IWDG_KR中写入0xAAAA, IWDG_RLR中的值就会被重新加载到计数器,从而避免产生看门狗复位 。IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555。

3. IWDG框图

watchdog窗口狗,STM32笔记,stm32,笔记,嵌入式硬件

4. 有关寄存器及计算公式

     IWDG_KR(键寄存器)
watchdog窗口狗,STM32笔记,stm32,笔记,嵌入式硬件


     IWDG_PR(预分频寄存器)
watchdog窗口狗,STM32笔记,stm32,笔记,嵌入式硬件
预分频的算法公式是:PSC = 4 * 2 PRER; 其中PRER就是IWDG_PR的值。


     IWDG_RLR(重装载寄存器)
watchdog窗口狗,STM32笔记,stm32,笔记,嵌入式硬件
计算溢出的时间公式: T out = (PSC * RLR)/ LSI
PSC是分频系数,RLR计数器重装载值,LSI一般是40KHz。

预分频系数 最短时间ms(RLR=1) 最长时间ms(RLR=4096)
/4 0.1 409.6
/8 0.2 819.2
/16 0.4 1,638.4
/32 0.8 3,276.8
/64 1.6 6,553.6
/128 3.2 13,107.2
/256 6.4 26,214.4

打开STM32CubeMX,选择STM32F103C8芯片,配置RCC为外部高速时钟,配置时钟源参数,基础配置完之后开始配置IWDG。
watchdog窗口狗,STM32笔记,stm32,笔记,嵌入式硬件
这里选择将 PSC 设置为 32,RLR 设置为1250,LSI为40KHz,可得复位时间间隔为1S。
watchdog窗口狗,STM32笔记,stm32,笔记,嵌入式硬件
配置工程文件路径后,生成工程文件。

关于使用IWDG的有关HAL库函数

独立看门狗初始化函数:

HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg);

独立看门狗喂狗函数:

HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg);

 例如:(这个的展示效果可能没有那么好,可以搭配使用串口通信来体会独立看门狗的效果)

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1){
	  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET);
	  HAL_Delay(200);
	  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET);
	  HAL_Delay(400);
	  HAL_IWDG_Refresh(&hiwdg);
	  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET);
	  HAL_Delay(400);
	  HAL_IWDG_Refresh(&hiwdg);
	  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET);
	  HAL_Delay(600);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

三. WWDG(窗口看门狗)

  窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。

1. 主要性能

  • 可编程的自由运行7位递减计数器
  • 条件复位
     - 当递减计数器的值小于0x40,(若看门狗被启动)则产生复位。
     - 当递减计数器在窗口外被重新装载,(若看门狗被启动)则产生复位。
  • 如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),它可以被用于重装载计数器以避免WWDG复位。

2. 功能描述

  如果看门狗被启动(WWDG_CR寄存器中的WDGA位被置’1’), 并且当7位(T[6:0])递减计数器从0x40翻转到0x3F(T6位清零)时,则产生一个复位。如果软件在计数器值大于窗口寄存器中的数值时重新装载计数器,也将产生一个复位。

3. 中断条件

  当7位递减计数器等于 0x40 时可产生提前唤醒中断。
watchdog窗口狗,STM32笔记,stm32,笔记,嵌入式硬件

4. 有关寄存器及计算公式

     WWDG_CR(控制寄存器)
watchdog窗口狗,STM32笔记,stm32,笔记,嵌入式硬件


     WWDG_CFR(配置寄存器)
watchdog窗口狗,STM32笔记,stm32,笔记,嵌入式硬件


     状态寄存器(WWDG_SR)
watchdog窗口狗,STM32笔记,stm32,笔记,嵌入式硬件

计算超时公式:T-out = [ 4096 * 2 WDGTB * (T[5.0] + 1) ] / Fwwdg;(ms)
其中T-out 是WWDG超时时间;
  T[5:0] 是WWDG计数器低6位,最大为63;
  4096是WWDG固定的预分频系数;
  Fwwdg是WWDG的时钟源频率(最大36M);
  2 WDGTB是WWDG_CFR寄存器设置的预分频系数值。

WDGTB 最小超时时间(T[5:0]为0) 最大超时时间(T[5:0]为63)
0 113us 7.28ms
1 227us 14.56ms
2 455us 29.12ms
3 910us 58.25ms

打开STM32CubeMX,选择STM32F103C8芯片,配置RCC为外部高速时钟,配置时钟源参数,基础配置完之后开始配置IWDG。
开启窗口看门狗,计数器值设置为 0X7F ,窗口值设置为 0X4F ,预分频系数为 4 。程序启动后每0.5秒翻转一次LED灯 。在提前唤醒中断服务函数进行喂狗,同时翻转LED灯的状态。
watchdog窗口狗,STM32笔记,stm32,笔记,嵌入式硬件
watchdog窗口狗,STM32笔记,stm32,笔记,嵌入式硬件

来计算一下配置当前参数可以产生的复位窗口时间。

watchdog窗口狗,STM32笔记,stm32,笔记,嵌入式硬件

关于使用IWDG的有关HAL库函数

窗口看门狗初始化函数:

MX_WWDG_Init();

窗口看门狗喂狗函数:

HAL_WWDG_Refresh(WWDG_HandleTypeDef *hwwdg);

窗口看门狗中断回调函数:

void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg);

 举例:在main.c文件中添加以下代码

void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg){
	HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_4);
	HAL_WWDG_Refresh(hwwdg);
}

两只看门狗的使用范畴文章来源地址https://www.toymoban.com/news/detail-767550.html

独立看门狗 窗口看门狗
出现程序跑飞 软件逻辑出现错误
出现死循环 死机,死循环
睡眠,休眠不合理 软件不按预期代码执行
外部主晶振坏掉 软件复位需要数据恢复

到了这里,关于【STM32笔记】STM32的看门狗详解(独立看门狗和窗口看门狗)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32F4X 独立看门狗 IWDG

    我们都知道,当一个嵌入式在运行过程中发生死机或者程序跑飞的情况的时候,我们一般都是要手动进行开关机或者复位,让程序能够重新运行。但是当一个嵌入式系统被安装到一些特殊位置时,如果发生了死机又不能及时进行手动复位,这时候就需要看门狗了。看门狗的作

    2024年02月11日
    浏览(68)
  • STM32独立看门狗IWDG和休眠(低功耗)共存那些事儿

    1.寄存器写入标志位方法为主要手段 2.看门狗初始化放在标志位判断后方 3.合理利用单片机复位,标志位复位后不会丢失的特点 4.不同系列单片机寄存器不一样 调试进入断点时不管停留多久,都不会触发看门狗 论坛TM32在休眠模式下怎么使用看门狗? 现在你只有2个办法: 1)使

    2024年02月12日
    浏览(49)
  • STM32-窗口看门狗WWDG剖析与实例

            窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位(WWDG-CR 的第六位)变成 0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个 MCU 复位。在递减计数

    2024年01月19日
    浏览(52)
  • 【STM32】基础知识 第十六课 窗口看门狗 WWDG 深入浅出

    在嵌入式开发中, 可靠性和稳定性是至关重要的. 这就是为什么许多单片机, 比如 STM32, 提供了窗口看门狗 (Window Watchdog, WWDF) 的功能. WWDG 是一种硬件定时器, 其目的在于防止软件错误导致的系统故障. WWDG 是通过监控软件运行的正常新, 并在检测到异常情况时自动重启系统, 从而

    2024年02月16日
    浏览(35)
  • 【正点原子STM32连载】第十五章 窗口看门狗实验 摘自【正点原子】APM32F407最小系统板使用指南

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 本章介绍APM32F407窗口看门狗(WWDT)的使用,窗口看门狗与独立看门狗一样能够帮助CPU在进入错误状

    2024年02月12日
    浏览(46)
  • 单片机STM32看门狗详解(嵌入式学习)

    单片机STM32的看门狗(Watchdog)是一种硬件定时器,用于监控系统的运行状态并在出现故障或死锁时采取措施以恢复正常操作。看门狗的主要功能是定期检查系统是否正常运行,并在系统出现问题时触发复位操作。 STM32系列单片机通常配备了内置的看门狗定时器(通常称为独立

    2024年02月13日
    浏览(63)
  • WatchDog看门狗程序设计

    现场程序断电无法重启,做一个看门狗程序进行重启、卡死检查 1.ServerWatchDog软件负责创建共享内存,这样共享内存只在一端软件管理即可 2.ServerWatchDog可以控制多台目标程序的启停,只需要在配置文件中增加exe路径和共享内存的Key,另外目标程序也需要做一些修改,读取Serv

    2024年02月14日
    浏览(65)
  • 【IAR工程】STM8S208RB基于ST标准库独立看门狗(IWDG)

    📍相关篇《【IAR工程】STM8S208RB基于ST标准库下GPIO点灯示例》 🌿《【IAR工程】STM8S208RB基于ST标准库下EXTI外部中断》 🌿《【IAR工程】STM8S208RB基于ST标准库蜂鸣器(BEEP)驱动》 🌿《【IAR工程】STM8S208RB基于ST标准库下自动唤醒(AWU)》 🔖基于ST STM8S/A标准外设库:STSW-STM8069,版本号:

    2023年04月08日
    浏览(51)
  • stm32之看门狗

            STM32 有两个看门狗, 独立看门狗 和 窗口看门狗 ,独立看门狗又称宠物狗,窗 口看门狗又称警犬。可用来检测和解决由软件错误引起的故障。两个看门狗的原理都是 当计数器达到给定的超时值时,产生系统复位,对于窗口型看门狗同时会产生一个中断。 独立看

    2024年02月04日
    浏览(64)
  • STM32开发——看门狗

    目录 1.独立看门狗 1.1需求 1.2CubeMX设置  1.3函数代码 2.窗口看门狗 2.1需求 ​2.2WWDG配置: 2.3函数代码  3.独立看门狗和窗口看门狗的异同点 监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) 。  独立看门狗本质 本质是一个 12 位的递减计数器,当计数器的值从

    2024年02月10日
    浏览(135)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包