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

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版 细致讲解 中文字幕

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

相关文章:

  • 【人工智能】全面掌控:使用Python进行深度学习模型监控与调优
  • 深入浅出:Spring Boot 中 RestTemplate 的完整使用指南
  • 虚拟内存笔记(三)虚拟内存替换策略与机制
  • 小智AI机器人 - 代码框架梳理2
  • 论文解读:MP-SfM: Monocular Surface Priors for Robust Structure-from-Motion
  • C语言速成之08循环语句全解析:从基础用法到高效实践
  • HTTP3详解
  • C++类和对象--初阶
  • C++ string初始化、string赋值操作、string拼接操作
  • 嵌入式硬件篇---超声波|PID
  • 三维空间中的组织行为映射:MATLAB 数据插值可视化技术
  • 实战项目6(09)
  • 企业内训|智能调控系统算法与优化——某汽车厂商
  • JVM内存结构有哪些?HashMap和HashTable的区别?
  • NX989NY104美光科技芯片NY109NY113
  • mem0跟Memgraph交互
  • 当 Manus AI 遇上 OpenAI Operator,谁能更胜一筹?
  • 大模型应用中常说的Rerank是什么技术?
  • 大模型核心基础简介
  • GIF图像技术介绍
  • 中国巴西民间推动建立经第三方验证的“森林友好型”牛肉供应链
  • 警方通报:某博主遭勒索后自杀系自导自演,已立案调查
  • 中共中央、国务院印发《生态环境保护督察工作条例》
  • 《AI×SCIENCE十大前沿观察》9:合成数据和数据基础设施
  • 10名“鬼火少年”凌晨结队在城区飙车,警方:涉非法改装,正处理
  • 人民日报刊文:加快解放和发展新质战斗力