STM32 看门狗WDG

2024-05-02 15:36
文章标签 看门狗 stm32 wdg

本文主要是介绍STM32 看门狗WDG,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、看门狗Watchdog

        看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性

        看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号

STM32内置两个看门狗:

                 ​​​​​​​        ​​​​​​​         独立看门狗(IWDG):独立工作,对时间精度要求较低(LSI

                                  窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用(APB1

1.1 独立看门狗IWDG

        在键寄存器(IWDG_KR) 中写入 0xCCCC,开始启用 独立看门狗;此时计数器开始 从其复位值
0xFFF递减计数 。当计数器计数到末尾 0x000 时,会产生一个复位信号 (IWDG_RESET)
        无论何时,只要在键寄存器IWDG_KR 中写入 0xAAAA IWDG_RLR 中的值就会被重新加载到计数器,从而避免产生看门狗复位 。
        如果用户在 选择字节中启用了“硬件看门狗” 功能,在系统上电复位后,看门狗会 自动开始运
;如果在计数器计数结束前,若软件没有向键寄存器写入相应的值,则系统会产生复位

正因为独立看梦狗处于VDD供电区,在任一低功耗模式下,仍能正常运行,所以也是待机模式唤醒条件之一

键寄存器:

                键寄存器本质上是控制寄存器,用于控制硬件电路的工作

                在可能存在干扰的情况下,一般通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能,以降低硬件电路受到干扰的概率

        IWDG_PR和IWDG_RLR寄存器具有写保护功能 。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入 0x5555

IWDG溢出时间:

超时时间:T(IWDG) = T(LSI )× PR预分频系数 × (RL + 1)

其中:T(LSI) = 1 / F(LSI)

1.2 窗口看梦狗 WWDG

当T6位看作计数器的一部分,当减到0x40之后溢出

当T6位看作标志位低6位的值减到0之后溢出

控制寄存器的T6位:为0时表示计数器溢出;为1时表示计数器没溢出

在程序运行时要始终保持T6位为1,这样才能避免复位

WWDG工作特性:

WWDG溢出时间:

1.3 区别

在系统复位后,看门狗总是处于关闭状态, 当开启看 门狗,随后它不能再被关闭,除非发生复位

二、看门狗配置

RCC_GetFlagStatus():可以查看是由看门狗复位还是上电复位

调用之后,需要软件清除标志位

2.1 独立看门狗配置

(1)开启LSI

对于时钟而言:如果独立看门狗已经由硬件选项或软件启动,LSI振荡器将被强制在打开状态,并且不能被关 闭。在LSI振荡器稳定后,时钟供应给IWDG

(2)解除写保护

IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //0x55,解除写保护

(3)配置预分频器和重装寄存器

IWDG_SetPrescaler(IWDG_Prescaler_16);  //LSI的16分频
IWDG_SetReload(2499);  //重装值

(4)喂狗:将重装值送到自减计数器中

IWDG_ReloadCounter();  //喂狗

(5)使能看门狗

IWDG_Enable();

 2.2 窗口看门狗配置

(1)开启PCLK1(APB1)窗口看门狗的时钟

对于时钟而言:如果独立看门狗已经由硬件选项或软件启动,LSI振荡器将被强制在打开状态,并且不能被关 闭。在LSI振荡器稳定后,时钟供应给IWDG

(2)配置预分频器和窗口值

RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);

(3)配置控制寄存器(窗口看门狗使能位、计数器溢出标志位、计数器有效位)

WWDG_SetPrescaler(WWDG_Prescaler_8);  //设置预分频系数
WWDG_SetWindowValue(0x40 | 21);  //设置窗口值:30ms      0x40:W6位为1,与T6位保持一致

(4)使能看门狗:第一次使能顺便将值写入自减计数器中

WWDG_Enable(0x40 | 54);  //0x40:T6位为1    50ms

定时喂狗:

WWDG_SetCounter(0x40 | 54);  //30ms ~ 50ms

使能(第一喂狗)与下一次喂狗要处于设置的时间之内,不能相隔太近

这篇关于STM32 看门狗WDG的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/954584

相关文章

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

STM32内部闪存FLASH(内部ROM)、IAP

1 FLASH简介  1 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 2 通过在程序中编程(IAP)实现程序的自我更新 (OTA) 3在线编程(ICP把整个程序都更新掉) 1 系统的Bootloader写死了,只能用串口下载到指定的位置,启动方式也不方便需要配置BOOT引脚触发启动  4 IAP(自己写的Bootloader,实现程序升级) 1 比如蓝牙转串口,

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

STM32 ADC+DMA导致写FLASH失败

最近用STM32G070系列的ADC+DMA采样时,遇到了一些小坑记录一下; 一、ADC+DMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_Buffer_Size); 的ADC_Bu

基于stm32的河流检测系统-单片机毕业设计

文章目录 前言资料获取设计介绍功能介绍具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机设计精品

STM32的使用方法一

注:我采用的是STM32F103RC芯片、相应的电路图和STM32CubeIDE软件这是在STM32CubeIDE软件定义芯片后,所给的必要的代码逻辑,加上了注释 #include "main.h"/* Private variables ---------------------------------------------------------*//* Private function

STM32 HAL CAN通讯 实操

1、简介 相比于串口通讯,对于刚接触CAN通讯的小白来说,CAN通讯相对复杂,看各种视频、帖子理论,总是一知半解。本次通过傻瓜式操作,先实现CAN通讯的交互,以提高小白的信心,也便于自己复习观看。本次以STM32CubeMX进行初始化配置,通过Keil 5软件进行软件设计,通过CAN盒实现进行数据的交互。该流程实际以STM32F0、F1、F3、F4、F7实测好用(理论上都适用),这三种型号单片机

我在高职教STM32——准备HAL库工程模板(1)

新学期开学在即,又要给学生上 STM32 嵌入式课程了。这课上了多年了,一直用的都是标准库来开发,已经驾轻就熟了。人就是这样,有了自己熟悉的舒适圈,就很难做出改变,老师上课也是如此,排斥新课和不熟悉的内容。显然,STM32 的开发,HAL 库已是主流,自己其实也在使用,只不过更换库就意味着教学内容有很大变化,自己也就迟迟没有迈出调整这一步。现在,是时候做出变化了,笔者计划保持教学项