当前位置: 首页 > ai >正文

stm32 WDG看门狗

目录

  • stm32 WDG看门狗
    • 一、WDG基础知识
      • 1)WDG(Watchdog)看门狗简介
    • 二、IWDG独立看门狗
      • 1)IWDG键寄存器
      • 2)IWDG超时时间
    • 三、WWDG窗口看门狗
      • 1)WWDG框图
      • 2)WWDG工作特性
      • 3)WWDG超时时间
      • 4)IWDG和WWDG对比
    • 四、实验
      • 1)独立看门狗
      • 2)窗口看门狗
    • 附学习参考网址
      • 欢迎大家有问题评论交流 (* ^ ω ^)

stm32 WDG看门狗

一、WDG基础知识

1)WDG(Watchdog)看门狗简介

  • 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性
  • 看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号
  • STM32内置两个看门狗
    1. 独立看门狗(IWDG):独立工作,对时间精度要求较低
    2. 窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用
  • 独立看门狗框图
    在这里插入图片描述
  • 看门狗功能处于VDD供电区,即在停机和待机模式时仍能正常工作

二、IWDG独立看门狗

1)IWDG键寄存器

  • 键寄存器本质上是控制寄存器,用于控制硬件电路的工作
  • 在可能存在干扰的情况下,一般通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能,以降低硬件电路受到干扰的概率
    在这里插入图片描述

2)IWDG超时时间

  • 超时时间:TIWDG = TLSI x PR预分频系数 x (RL + 1)
  • 其中:TLSI = 1 / FLSI
    在这里插入图片描述

三、WWDG窗口看门狗

1)WWDG框图

在这里插入图片描述

2)WWDG工作特性

  • 递减计数器T[6:0]的值小于0x40时,WWDG产生复位
  • 递减计数器T[6:0]在窗口W[6:0]外被重新装载时,WWDG产生复位
  • 递减计数器T[6:0]等于0x40时可以产生早期唤醒中断(EWI)(死前中断),用于重装载计数器以避免WWDG复位
  • 定期写入WWDG_CR寄存器(喂狗)以避免WWDG复位
    在这里插入图片描述

3)WWDG超时时间

  • 超时时间:TIWDG = TPCLK1 x 4096 x WDGTBB预分频系数 x (T[5:0] + 1)
  • 窗口时间:TWIN = TPCLK1 x 4096 x WDGTBB预分频系数 x (T[5:0] - W[5:0])
  • 其中:TPCLK1 = 1 / FPCLK1
    在这里插入图片描述

4)IWDG和WWDG对比

在这里插入图片描述

  • 其他详细信息见STM32Fx手册

四、实验

1)独立看门狗

  • 关键代码:
    	int main(void){OLED_Init();Key_Init();OLED_ShowString(1, 1, "IWDG Test");if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) == SET){OLED_ShowString(2, 1, "IWDGSET");Delay_ms(500);OLED_ShowString(2, 1, "       ");Delay_ms(100);RCC_ClearFlag();}else{OLED_ShowString(3, 1, "RST");Delay_ms(500);OLED_ShowString(3, 1, "   ");Delay_ms(100);}IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);IWDG_SetPrescaler(IWDG_Prescaler_16);IWDG_SetReload(2499); //1000msIWDG_ReloadCounter();IWDG_Enable();while (1){Key_GetNum();IWDG_ReloadCounter();OLED_ShowString(4, 1, "FEED");Delay_ms(200);OLED_ShowString(4, 1, "     ");Delay_ms(600);}
    }
    
    在这里插入图片描述

2)窗口看门狗

  • 关键代码:
    	int main(void){OLED_Init();Key_Init();OLED_ShowString(1, 1, "WWDG Test");if(RCC_GetFlagStatus(RCC_FLAG_WWDGRST) == SET){OLED_ShowString(2, 1, "WWDGSET");Delay_ms(500);OLED_ShowString(2, 1, "       ");Delay_ms(100);RCC_ClearFlag();}else{OLED_ShowString(3, 1, "RST");Delay_ms(500);OLED_ShowString(3, 1, "   ");Delay_ms(100);}RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);WWDG_SetPrescaler(WWDG_Prescaler_8);WWDG_SetWindowValue(0x40 | 21);WWDG_Enable(0x40 | 54);while (1){Key_GetNum();OLED_ShowString(4, 1, "FEED");Delay_ms(20);OLED_ShowString(4, 1, "     ");Delay_ms(20);WWDG_SetCounter(0x40 | 54);}
    }
    
    在这里插入图片描述

附学习参考网址

  1. STM32入门教程-2023版 细致讲解 中文字幕

欢迎大家有问题评论交流 (* ^ ω ^)

http://www.xdnf.cn/news/5458.html

相关文章:

  • MySQL数据库常见面试题之三大范式
  • Python打卡训练营Day22
  • 并发笔记-锁(一)
  • AI 小智代码架构分析
  • 【DNDC模型】双碳目标下DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的应用
  • Java 中 AQS 的实现原理
  • Problem B: 面向对象综合题2
  • [思维模式-27]:《本质思考力》-7- 逆向思考的原理与应用
  • MySQL的锁
  • 软考第五章知识点总结
  • LeetCode 热题 100 98. 验证二叉搜索树
  • NOR Flash与NAND Flash详解
  • 添加文字标签
  • 第六天:Java数组
  • 最长字符串 / STL+BFS
  • JDS-算法开发工程师-第9批
  • 如何通过管理Windows服务加速电脑启动?
  • TikTok 推广干货:AI 加持推广效能
  • java.util.Timer
  • pycharm更改终端为wsl.exe
  • stm32测频率占空比最好的方案
  • 多智体具身人工智能:进展与未来方向(下)
  • 【计算机视觉】基于Python的相机标定项目Camera-Calibration深度解析
  • 【TI MSPM0】CCS工程管理
  • 雷达工程师面试题目
  • 机械物理:水力发电站工作原理是什么?
  • 最大化效率和性能:AKS 中节点池的强大功能
  • 设计模式简述(十八)享元模式
  • 找银子 题解(c++)
  • EdgeOne Pages MCP 入门教程