码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 窗口看门狗


     目录

    1.什么是窗口看门狗?

    2.窗口看门狗工作原理

    3.WWDG框图

    4.控制寄存器(WWDG_CR)

    5.配置寄存器(WWDG_CFR)

    6.状态寄存器(WWDG_SR)

    7.超时时间计算

    8.窗口看门狗实验

    9.独立看门狗和窗口看门狗的异同点


    1.什么是窗口看门狗?

    窗口看门狗用于监测单片机程序运行时效是否精准,主要检测软件异常,一般用于需要精准检测 程序运行时间的场合。

    窗口看门狗的本质是一个能产生系统复位信号和提前唤醒中断的6位计数器。

    产生复位条件:

    • 当递减计数器值从 0x40 减到 0x3F 时复位(即T6位跳变到0)
    • 计数器的值大于 W[6:0] 值时喂狗会复位

    产生中断条件:

    • 当递减计数器等于 0x40 时可产生提前唤醒中断 (EWI)。

    在窗口期内重装载计数器的值,防止复位,也就是所谓的喂狗。

    2.窗口看门狗工作原理

    3.WWDG框图

    4.控制寄存器(WWDG_CR)

    5.配置寄存器(WWDG_CFR)

    6.状态寄存器(WWDG_SR)

    7.超时时间计算

    • Tout是WWDG超时时间(没喂狗)
    • Fwwdg是WWDG的时钟源频率(最大36M)
    • 4096是WWDG固定的预分频系数
    • 2^WDGTB是WWDG_CFR寄存器设置的预分频系数值
    • T[5:0]是WWDG计数器低6位,最多63

    8.窗口看门狗实验

    实验需求:

    开启窗口看门狗,计数器值设置为 0X7F(127) ,窗口值设置为 0X5F(95)预分频系数为 8 ,程序启动时点亮 LED1 ,300ms 后熄灭。在提前唤醒中断服务函数进行喂狗,同时翻转 LED2 状态。

    硬件接线:

    • LED1 -- PB8
    • LED2 -- PB9

    编程实现思路:

    打开cubemax

    配置SYS:

    配置RCC:

    配置时钟:

    配置WWDG:

    打开NVIC:

    生成代码之后打开keil5,加入下部分代码:

    1. //WWDG中断回调函数
    2. void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg)
    3. {
    4. HAL_WWDG_Refresh(hwwdg);
    5. HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);
    6. }
    7. int main()
    8. {
    9. MX_GPIO_Init();
    10. HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
    11. HAL_Delay(300);
    12. MX_WWDG_Init();
    13. while(1)
    14. {
    15. HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
    16. HAL_Delay(40);
    17. }
    18. }

    9.独立看门狗和窗口看门狗的异同点

               对比点                        独立看门狗                      窗口看门狗
    时钟源独立时钟,LSI (40KHz) ,不精确PCLK1或PCLK3,精确
    复位条件递减计数到0窗口期外喂狗或减到0x3F
    中断没有中断计数值减到0x40可产生中断
    递减计数器位数12位(最大计数范围:4096~0)7位(最大计数范围:127~63)
    应用场合防止程序跑飞,死循环,死机检测程序时效,防止软件异常
  • 相关阅读:
    pytorch的backward()的底层实现逻辑
    【机器学习】对比学习(contrastive learning)
    【逗老师的无线电】MOTOTRBO CPS导入DMR ID通信录的骚操作
    第146篇 笔记-智能合约介绍
    开源治理:安全的关键
    LeetCode //C - 142. Linked List Cycle II
    使用XShell、XFTP 连接 win7 虚拟机(windows、Linux无法远程登录问题)
    GBase 8s 产品功能-高可用和ER
    RTT学习笔记12-串口外设和串口驱动框架
    leetcode.864 获取所有钥匙的最短路径 - bfs+状态压缩+最短路+位运算
  • 原文地址:https://blog.csdn.net/m0_74712453/article/details/134429402
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号