【STM32】基础知识 第十六课 窗口看门狗 WWDG 深入浅出

这篇具有很好参考价值的文章主要介绍了【STM32】基础知识 第十六课 窗口看门狗 WWDG 深入浅出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

在嵌入式开发中, 可靠性和稳定性是至关重要的. 这就是为什么许多单片机, 比如 STM32, 提供了窗口看门狗 (Window Watchdog, WWDF) 的功能. WWDG 是一种硬件定时器, 其目的在于防止软件错误导致的系统故障. WWDG 是通过监控软件运行的正常新, 并在检测到异常情况时自动重启系统, 从而防止系统长时间处于错误状态. 虽然 STM32 同时提供了独立看门狗 (Independent Watchdog, IWDG) 和 WWDG, 但 WWDG 具有更高精度和更灵活的配置选项, 使其在一些需要精确定时或特殊需求的应用中具有优势.

stm32 wwdg,stm32,单片机,嵌入式硬件,原力计划

窗口看门狗 (WWDG)

WWDG 的核心是一个 7 位的定时器 (取值范围 0-127). 用户可以设定一个窗口值和一个计数重载值. 当定时器计数值在重载值到窗口值之间倒数时, 称为窗口期. 窗口期是唯一可以刷新 WWDG 的时机. 也就是说, 只有在 “窗口” 打开期间, 才可以 “喂狗”.

如果在窗口未打开前就重载了 WWDG, 或者在窗口打开后没有及时重载 WWDG, 那么 WWDG 都会产生系统复位.

这样的设计能够使系统检测到两种软件错误:

  • 执行过快: 窗口未打开前就重载了 WWDG
  • 执行过慢: 窗口打开后没有及时重载 WWDG

WWDG_SR 状态寄存器

在 STM32 中, WWDG_SR 是窗口看门狗状态寄存器 (Windows Watchdog Status Register). WWDG_SR 只有一个比特位, 即比特 0 (EWIF), 又称为早早期唤醒中断标志 (Early Wakeup Interrupt Flag). 这个标志位用来表示窗口看门狗定时器已达到了 63 (也就是 127-64), 即将达到重载值. 这个功能可以用来唤醒 CPU, 让它有足够的时间去刷新窗口看门狗, 防止系统复位.

注: 虽热 EWIF 位可以通过软件清零, 但是在窗口看门狗启动后, 这个标志位会自动置位, 所以在大多数情况下, 我们需要手动清零这个标志位.

WWDG 配置与使用

在 STM32 中, 使用 WWDG 首先需要启动 WWDG 时钟, 并设置预分频器和窗口值. 通过访问 WWDG 的控制寄存器 (WWDG_CR) 和配置寄存器 (WWDG_CFR) 来实现.

具体步骤如下:

  1. 启动 WWDG 时钟: 通过访问复位和时钟控制 (RCC) 的 APB1 使能寄存器 (RCC_APB1ENR), 能使 WWDG 时钟
  2. 设置 WWDG 的预分频器和窗口值:通过访问 WWDG 的配置寄存器 (WWFG_CRF), 设置预分频器 (WDGTB) 和窗口值 (W). 同时, 可以使能窗口看门狗早期中断 (EWI)
  3. 设置 WWDG 的计数器重载值: 通过访问 WWDG 的控制寄存器 (WWDG_CR), 设置计数器的重载值, 并使能 WWDG

使用 WWDG 进行故障检测

WWDG 能够检测出软件中心过快和执行过慢两种类型的错误. 当主程序在窗口打开后没有及时重载 WWDG, 说明团建执行过慢, 这两种情况都会引发 WWDG 产生系统复位.

因为在实际应用中, 软件执行的速度往往与任务的完成密切相关. 如果软件执行过快, 可能意味着某些任务被跳过或者未被正确处理. 如果软件执行过慢, 可能意味着系统的性能无法满足需求, 或者某些任务执行时间过长. 通过 WWDG, 我们可以确保软件在预定的时间范围内正确的运行.文章来源地址https://www.toymoban.com/news/detail-562513.html

案例

#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/LED/led.h"
#include "./BSP/WDG/wdg.h"


int main(void)
{
    HAL_Init();                             /* 初始化HAL库 */
    sys_stm32_clock_init(RCC_PLL_MUL9);     /* 设置时钟, 72Mhz */
    delay_init(72);                         /* 延时初始化 */
    usart_init(115200);                     /* 串口初始化为115200 */
    led_init();                             /* 初始化LED */
    LED0(0);                                /* 点亮LED0 红灯 */
    delay_ms(300);                          /* 延时300ms再初始化看门狗,LED0的变化"可见" */
    wwdg_init(0X7F, 0X5F, WWDG_PRESCALER_8);/* 计数器值为7f,窗口寄存器为5f,分频数为8 */

    while (1)
    {
        LED0(1);                            /* 关闭红灯 */
    }
}

到了这里,关于【STM32】基础知识 第十六课 窗口看门狗 WWDG 深入浅出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【STM32】基础知识 第十五课 看门狗 IWDG 深入理解与应用

    STM32 系列单片机具有强大的内置功能, 其中之一就是独立看门口 (IWDG). 看门狗定时器是一种重要的硬件设备, 用于防止系统软件故障. 在许多应用中, 看门狗定时器的使用是至关重要的, 它可以检测和解决软件错误, 提高系统的可靠性. 今天小白将带领大家深入探讨 STM32 独立看门

    2024年02月11日
    浏览(36)
  • stm32串口自定义协议接收一串十六进制数据(将其中两个字节转化为十进制数据)+部分串口基础知识

    位(bit): 二进制数中的一个数位,可以是0或者1,是计算机中数据的最小单位。 字节(Byte): 计算机中数据的基本单位,每8位组成一个字节。各种信息在计算机中存储、处理至少需要一个字节。 例如,一个ASCII码用一个字节表示,一个汉字用两个字节表示。 字(Word):

    2023年04月08日
    浏览(49)
  • STM32-02-STM32基础知识

    STM32F103 STM32F103是ST公司基于ARM授权Cortex M3内核而设计的一款芯片,而 Cortex M内核 使用的是 ARM v7-M架构 ,是为了替代老旧的单片机而量身定做的一个内核,具有低成本、低功耗、实时性好、中断响应快、处理效率高等特点。 架构 、 内核 、 芯片 的关系: 架构 : (ARMv7-M)

    2024年02月03日
    浏览(28)
  • 【STM32】基础知识 第二课 初识 STM32

    ARM 公司: 只做内核设计和 IP 授权, 不参与芯片设计. 对比项 Cortex-A (Application) Cortex-R (Real-time) Cortex-M (Microcontroller) 特点 高时钟频率, 长流水线, 高性能 较高时钟频率, 较长的流水线, 实时性强 时钟频率较低, 通常较短的流水线, 超低功耗 应用场景 移动计算, 智能手机, 平板电脑

    2024年02月02日
    浏览(32)
  • 【STM32】基础知识 第五课 C 语言基础知识

    stdint.h 是从 C99 中引进的一个标准 C 库的文件. 路径: “D:MDK5.34ARMARMCCinclude” 运算符 含义 运算符 含义 按位与 ~ 按位取反 | 按位或 左移 ^ 按位异或 右移 按位与: num1 运算符 num2 结果 0 0 0 1 0 0 0 1 0 1 1 1 按位或: num1 运算符 num2 结果 0 | 0 0 1 | 0 1 0 | 1 1 1 | 1 1 按位异或: num1 运算符

    2024年02月13日
    浏览(57)
  • STM32 串口基础知识学习

    串行通信:数据逐位按顺序依次传输。 并行通信:数据各位通过多条线同时传输。 对比 传输速率:串行通信较低,并行通信较高。 抗干扰能力:串行通信较强,并行通信较弱。 通信距离:串行通信较长,并行通信较短。 IO资源占用:串行通信较少,并行通信较多。 成本:

    2024年02月15日
    浏览(37)
  • stm32中断的基础知识

    某些事件可能需要CPU暂停目前的程序优先处理 实现CPU暂停当前的程序并优先处理某一事件的机制称作中断 处理这一事件的程序叫做中断服务程序(Interrupt Handler) 中断的硬件实现 内部或外部信号产生中断 —程序跳转到某一特定地址(中断向量) —程序从中断向量跳转到对

    2023年04月24日
    浏览(42)
  • 1024常玩到的漏洞(第十六课)

    1024渗透OpenVas扫描工具使用(第十四课)-CSDN博客 MS12-020漏洞是一种远程桌面协议(RDP)漏洞。在攻击者利用该漏洞之前,它需要将攻击者的计算机连接到受害者的计算机上。攻击者可以通过向受害者计算机发送特制的RDP请求,来触发该漏洞。利用该漏洞,攻击者可以获取受害者

    2024年02月07日
    浏览(26)
  • STM32 ADC基础知识讲解

    在正式的学习如何编写ADC代码时我们先来学习一下ADC的基础知识部分,只有掌握好了这些基础知识才能顺利的进行后面的代码编写。 ADC 指的是模数转换器(Analog-to-Digital Converter),它是一种用于将模拟信号转换为数字信号的电子设备或电路。 模拟信号是连续变化的信号,可

    2024年02月09日
    浏览(31)
  • STM32 基础知识入门 (C语言基础巩固)

    1、在不改变其他位的值的状况下,对某几个位进行设值 这个场景在单片机开发中经常使用,方法就是先对需要设置的位用操作符进行清零操作, 然后用|操作符设值。 比如我要改变 GPIOA 的 CRL 寄存器 bit6(第 6 位)的值为 1,可以先对寄 存器的值进行清零操作:  然后再与需

    2024年02月01日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包