STM32自学☞WDG(看门狗)及其案例

 

 一、WDG简介

e2c0dfb3c3ce497e992e6dc3ba9b3fb4.jpg

由于看门狗的代码很少所以就直接在main主函数中写了,没单独建文件

 二、独立看门狗

涉及的按键可参考之前的key.c和key.h文件

独立看门狗配置流程:

1.开启时钟(LSI)

2.解除IWDG_PR和IWDG_RLR的写保护

3.写入预分频和重装值

4.启用独立看门狗

5.喂狗

相关函数:

IWDG_WriteAccessCmd() //写使能控制

IWDG_SetPrescaler() //写预分频器

IWDG_SetReload() //写重装值

IWDG_ReloadCounter() //重新装载寄存器(喂狗)

IWDG_Enable() //启动独立看门狗

IWDG_GetFlagStatus() //获取标志位状态

main.c文件

#include "stm32f10x.h"

#include "stm32f10x_iwdg.h"

#include "delay.h"

#include "OLED.h"

#include "key.h"

int main (void)

 //初始化

 OLED_Init();

 key_Init();

 OLED_ShowString(1,1,"IWDG TEST:");

 //如果查看独立看门狗复位标志位==SET说明本次复位是独立看门狗导致的

 //否则是正常复位导致的

 if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST)==SET)

 {

  OLED_ShowString(2,1,"IWDGRST");

  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);

 }

//开启时钟

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

//解除写保护

 IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

//写预分频器

  IWDG_SetPrescaler(IWDG_Prescaler_16);

//写重装值

 IWDG_SetReload(2499);

//喂狗

 IWDG_ReloadCounter();

//启动独立看门狗

 IWDG_Enable();

 while(1)

 {

  key_Getnum();

  IWDG_ReloadCounter();

  OLED_ShowString(4,1,"FEED");

  delay_ms(200);

  OLED_ShowString(4,1," ");

  delay_ms(600);

 }

}

三、窗口看门狗

 

 相关函数:

 WWDG_DeInit(); //恢复缺省配置

 WWDG_SetPrescaler( ); //写入预分频器

 WWDG_SetWindowValue( ); //写入窗口值

 WWDG_EnableIT(); //使能中断

 WWDG_SetCounter(); //写入计数器

 WWDG_Enable( ); //使能窗口看门狗

 FlagStatus WWDG_GetFlagStatus(); 

 WWDG_ClearFlag(); 

涉及的按键可参考之前的key.c和key.h文件

main.c文件

#include "stm32f10x.h"

#include "stm32f10x_wwdg.h"

#include "delay.h"

#include "OLED.h"

#include "key.h"

int main (void)

 //初始化

 OLED_Init();

 key_Init();

 OLED_ShowString(1,1,"WWDG TEST:");

 //如果查看独立看门狗复位标志位==SET说明本次复位是独立看门狗导致的

 //否则是正常复位导致的

 if(RCC_GetFlagStatus(RCC_FLAG_WWDGRST)==SET)

 {

  OLED_ShowString(2,1,"WWDGRST");

  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);

 }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/731752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】什么是类与对象?

🦄个人主页:修修修也 🎏所属专栏:C ⚙️操作环境:Visual Studio 2022 目录 面向对象概述 封装 继承 多态 类 类是什么? C中类的引入 C中类的定义 类的两种定义方式: 1.声明和定义全部放在类体中 2.类声明与成员函数定义分别放在不同的工程文件中…

Qt开发QHostInfo主机地址查询组件

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QHostInfo组件实现对主机地址查询功能…

三井住友保险中国区信息技术部负责人陈婧,将出席“ISIG-RPA超级自动化产业发展峰会”

3月16日,第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导,企智未来科技(RPA中国、AIGC开放社区、LowCode低码时代)主办。大会旨在聚合每一位产业成员的力量,深入探索R…

用一个 Python 脚本实现依次运行其他多个带 argparse 命令行参数的 .py 文件

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 问题描述:在 Windows 环境中,您希望通过一个 Python 脚本来实现特定的自动化任务,该任务需要依次运行其他多个带 argparse 命令行参数的 .py 文件。您希望找到一种简…

手写分布式配置中心(六)整合springboot(自动刷新)

对于springboot配置自动刷新,原理也很简单,就是在启动过程中用一个BeanPostProcessor去收集需要自动刷新的字段,然后在springboot启动后开启轮询任务即可。 不过需要对之前的代码再次做修改,因为springboot的配置注入value("…

C++命名空间详解

目录 C的由来: C语言的命名缺陷: 什么是命名空间? 命名空间的访问方式: 1、指定访问 2、展开命名空间(慎用) 相关知识: C的由来: C原来本质上是在C的基础上补充的语法&#x…

ARM单片机中程序在ROM空间和RAM空间的分布(分散加载文件,Scatter-Loading Description File)

对于 K e i l u V i s i o n I D E Keil\quad uVision\quad IDE KeiluVisionIDE,程序编译好之后,代码的下载位置( R O M ROM ROM空间)以及代码运行的时候使用的 R A M RAM RAM空间( R A M RAM RAM空间)默认…

下载一些ROS的包的方式

ROS Index 我们可以去ROS Index网站下载一些我们需要的包。打开浏览器在网址框输入index.ros.org。或者点击此处链接ROS Index 在这个网站中我们可以浏览并找到我们需要的包,也可以下载它的源代码或者仅安装到我们的系统中来使用。(安装过程在终端中进行…

植物病虫害:YOLO水稻虫害识别数据集(6类,五千余张图像,标注完整)

YOLO水稻虫害识别数据集,包含褐飞虱,绿叶蝉,正常叶片,稻虫,二化螟,蝇蛆6个类别,共五千余张图像,yolo标注完整。 适用于CV项目,毕设,科研,实验等 …

零、自然语言处理开篇

目录 0、NLP任务的基础——符号向量化 0.0 词袋模型 0.1 查表/One-hot编码 0.2 词嵌入模型/预训练模型 0.2.0 Word2Vec (0)CBOW (1)Skip-gram 0.2.1 GloVe 0.2.2 WordPiece 0.2.3 BERT 0.2.4 ERNIE NLP自然语言处理&am…

Java 的 System 类常用方法介绍

Java 中的 System 类是一个final类,它提供了与系统相关的属性和方法。它是一个内置的类,可以直接使用,不需要实例化。System 类提供了标准输入、标准输出和错误输出流,以及对外部定义的属性和系统环境的访问。下面是 System 类的一…

LCR 132. 砍竹子 II

解题思路&#xff1a; 由于数量级较大&#xff0c;需要使用long以及快速幂求余 下图便于理解快速幂求余 class Solution {public int cuttingBamboo(int bamboo_len) {if(bamboo_len < 3) return bamboo_len - 1;int b bamboo_len % 3, p 1000000007;long rem 1, x 3;f…

【PHP+代码审计】PHP基础——数据类型

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

012集——显示高考天数倒计时——vba实现

以下代码实现高考倒计时&#xff1a; Sub 高考倒计时() 高考日期 CDate("06,07," & Year(Date)) If Date > 高考日期 Then高考日期 CDate("06-07-" & Year(Date) 1) End If 年月日 Year(Date) & "年" & Month(Date) &am…

Springboot+vue的项目申报管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的项目申报管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09…

低密度奇偶校验码LDPC(九)——QC-LDPC译码器FPGA全并行设计

往期博文 低密度奇偶校验码LDPC&#xff08;一&#xff09;——概述_什么是gallager构造-CSDN博客 低密度奇偶校验码LDPC&#xff08;二&#xff09;——LDPC编码方法-CSDN博客 低密度奇偶校验码LDPC&#xff08;三&#xff09;——QC-LDPC码概述-CSDN博客 低密度奇偶校验码…

蓝牙系列七:开源蓝牙协议栈BTStack数据处理

继续蓝牙系列的研究。 在上篇博客,通过阅读BTStack的源码,大体了解了其框架,对于任何一个BTStack的应用程序都有一个main函数,这个main函数是统一的。这个main函数做了某些初始化之后,最终会调用到应用程序提供的btstack_main,在btstack_main里面首先做一些初始化,然后…

C语言指针——常量字符串和 变量字符串

常量字符串和 变量字符串 常量字符串和变量字符串是在编程中常见的两种字符串类型&#xff0c;它们有以下区别&#xff1a; 值的不可变性&#xff1a;常量字符串的值是不可变的&#xff0c;一旦被定义&#xff0c;就不能修改。而变量字符串的值是可变的&#xff0c;可以随时修…

重建大师6.2版本的建模效果出现下图中模糊的情况,是什么原因?

可能是因为坐标原点设置的不对&#xff0c;图例中的三角网都出现了精度损失的问题。 坐标原点设置的具体操作&#xff1a;提交产品后&#xff0c;在弹出的界面&#xff0c;可以设定坐标原点。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件&#xff0…

C语言之练手题

题目1&#xff1a; 思路&#xff1a;我们定义两个变量left和right分别为数组的左端下标和右端下标。 左端下标的元素为奇数时&#xff0c;left继续往前走&#xff0c;为偶数时就停下 右端下标的元素为偶数时&#xff0c;right- -往回走&#xff0c;为奇数时停下 停下后对应的元…