【单片机】独立看门狗IWDG初始化

news2024/12/23 18:34:37

目录

看门狗简介:

初始化例子:

看门狗使能:

写保护:

看门狗重载:

看门狗复位时间计算:基本上看stm中文手册对照框图就很明确


看门狗简介:

此器件具有两个嵌入式看门狗外设,具有安全性高、定时准确及使用灵活的优点。两个看门狗外设(独立和窗口)均可用于检测并解决由软件错误导致的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。
独立看门狗 (IWDG) 由其专用低速时钟 (LSI) 驱动,因此即便在主时钟发生故障时仍然保持 工作状态。窗口看门狗 (WWDG) 时钟由 APB1 时钟经预分频后提供,通过可配置的时间窗 口来检测应用程序非正常的过迟或过早的操作。
IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作并且对时 间精度要求较低的场合。WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程 序。有关窗口看门狗的详细信息,

初始化例子:

/**

 * @description: 看门狗初始化

 * @detail:

 * @return {*}

 * @author: lkc

 */

void Bsp_IWDGInit(void)

{

    /* 大约4 */

    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //取消寄存器写保护

    IWDG_SetPrescaler(IWDG_Prescaler_32); //设置 IWDG分频系数

    IWDG_SetReload(0x0FFF); //设置 IWDG装载值

    /* 开启看门狗*/

    IWDG_Enable();

    /* 喂狗 */

    IWDG_ReloadCounter();

    return;

}

看门狗使能:

#define KR_KEY_ENABLE    ((uint16_t)0xCCCC)

/**

  * @brief  Enables IWDG (write access to IWDG_PR and IWDG_RLR registers disabled).

  * @param  None

  * @retval None

  */

void IWDG_Enable(void)

{

  IWDG->KR = KR_KEY_ENABLE;

}

写保护:

IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //取消寄存器写保护

#define IWDG_WriteAccess_Enable     ((uint16_t)0x5555)

/**

  * @brief  Enables or disables write access to IWDG_PR and IWDG_RLR registers.

  * @param  IWDG_WriteAccess: new state of write access to IWDG_PR and IWDG_RLR registers.

  *          This parameter can be one of the following values:

  *            @arg IWDG_WriteAccess_Enable: Enable write access to IWDG_PR and IWDG_RLR registers

  *            @arg IWDG_WriteAccess_Disable: Disable write access to IWDG_PR and IWDG_RLR registers

  * @retval None

  */

void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess)

{

  /* Check the parameters */

  assert_param(IS_IWDG_WRITE_ACCESS(IWDG_WriteAccess));

  IWDG->KR = IWDG_WriteAccess;

}

看门狗重载:

#define KR_KEY_RELOAD    ((uint16_t)0xAAAA)

/**

  * @brief  Reloads IWDG counter with value defined in the reload register

  *         (write access to IWDG_PR and IWDG_RLR registers disabled).

  * @param  None

  * @retval None

  */

void IWDG_ReloadCounter(void)

{

  IWDG->KR = KR_KEY_RELOAD;

}

 

看门狗复位时间计算:基本上看stm中文手册对照框图就很明确

总的溢出时间T_{out}(超时时间)=(IWDG_RLR寄存器对应的装载数值) * (看门狗时钟周期) 

 

    IWDG_SetPrescaler(IWDG_Prescaler_32); //设置 IWDG分频系数

    IWDG_SetReload(0x0FFF); //设置 IWDG装载值

 

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

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

相关文章

3-4数据链路层-局域网

文章目录一.基本概念1.网络拓扑2.传输介质3.介质访问控制方法4.局域网的分类5.逻辑链路控制(LLC)子层与媒体接入控制(MAC)子层二.以太网(一)以太网的传输介质与网卡1.传输介质2.网卡(二&#xf…

[附源码]计算机毕业设计JAVA基于JSP学生信息管理系统

[附源码]计算机毕业设计JAVA基于JSP学生信息管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM …

工具及方法 - 编辑二进制文件(使用VSCode和Notepad++的插件Hex Editor)

Visual Studio Code 在VSCode里安装插件,可以实现很多功能。 打开VSCode,在菜单里选择, View->Extensions,就会出现扩展插件的查找页面。 输入想要查找的插件名称,搜索,然后点击安装。 比如要用VSCode…

高性能零售IT系统的建设06-当应对大量HTTP请求时兼顾性能、处理速度的架构设计

前言 这个系列不像我的那些个“保姆式”教程,那些保姆式教程我一周最多可以写8篇,因为太简单了。充其量花的时间就是用“看漫画”的方式去组织我的截图和尽量少文字多Sample。 而高性能系统建设系列这一块不仅仅只有代码,相反它甚至不会多写…

力扣(LeetCode)25. K 个一组翻转链表(C++)

模拟 前置知识 : 反转链表、两两交换链表中的节点 。 LeetCode 有相应题目,可以先做。 设置哑结点 , 便于操作头结点。 翻转至少要 kkk 个结点 , 先检查剩余结点够不够 kkk 个。 不够 kkk 个就翻转完成了。 翻转分为组内翻转和首尾变向两步…

查找xml文件

一 前言 相比xml.dom.minidom,lxml.etree具有高效的查找方法,更方便,直接; 二、知识点:查找感兴趣的元素 举例一:递归遍历其下的所有子树(包括子级,子级的子级,等等 …

nero platinum刻录光盘简要教程(文章末尾有教程链接)

nero platinum suit 介绍 使用nero express可以完成多数情况下的光盘应用。在nero platinum suit中单击nero express,这时可以看到nero express的工作界面,在这里面可以刻录数据光盘,可以刻录音乐光盘,可以刻录视频光盘&#xff…

SpringMVC集成静态资源

集成静态资源 静态资源&jsp是被谁处理的 tomcat是一个servlet容器,servlet容器中通常有servlet来处理各种请求,那么当访问静态资源或者jsp的时候,当然也是有servlet来处理这些请求的,但是并未在web.xml中配置哪个servlet来处…

SpringBoot+Vue项目小区疫苗接种管理系统的设计与实现

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JDK版…

MySQL数据库JDBC编程

目录 前言: 项目中导入驱动包 插入记录 创建数据源 连接数据库 构造sql语句 执行sql语句 释放资源 整体代码展示 查看数据 代码展示 小结: 前言: MySQL为Java提供了驱动包。通过Java程序实现的客户端,可以通过这个驱动…

JavaWeb以Maven整合Mybatis报错java.lang.NoClassDefFoundError(Web项目未能完全加载Maven下的依赖)

问题描述 为完成学校课程一个javaweb的demo,想着对数据库的访问能够更加简洁,所以用了Mybatis。因为之前有过Springboot整合Mybatis经验,所以本以为事情会简单。在Junit的测试类中是能够正常对数据库进行CRUD。在Javaweb的Servlet类中调用数据…

应用层协议之DNS、DHCP

运输层为应用进程提供了端对端的通信服务,但不同的网络应用的应用进程之间,还需要有不同的通信规则。因此在运输层协议之上,还需要有应用层协议。 应用层中有这些常见的协议 域名系统:DNS动态主机配置:DHCP超文本传输…

数据结构之栈

文章目录前言一、栈二、栈应该如何实现1.顺序表or链表2.静态or动态三、栈的实现1.栈的定义2.接口(声明)3.接口的实现初始化栈销毁栈获取栈顶元素获取栈中有效元素个数入栈出栈检测栈是否为空4.主函数(测试)总结前言 今天这篇文章…

云原生系列 二【轻松入门容器基础操作】

✅作者简介: CSDN内容合伙人,全栈领域新星创作者,阿里云专家博主,华为云云 享专家博主,掘金后端评审团成员 💕前言: 最近云原生领域热火朝天,那么云原生是什么?何为云原生…

excel的frequency函数的用法和实例

目录 1.语法和用法 (1)语法:frequency(data_array,bins_array) (2)用法:用于统计指定分组区间的频率,以已裂垂直数组返回一组数据的频率分布。 2.实例 (1)分组统计各…

【WxPusher消息推送平台】js版对接发送消息教程实战案例,JavaScript版调用axios发送消息实例。保姆级教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、WxPusher消息推送平台是什么1、注册自己的WxPusher2、扫码关注应用,获得你的UID二、使用步骤1.封装axios方法2.编写发送消息方法总结前言 WxPus…

Thymeleaf th:insert、th:replace、th:include的使用

参考资料 八、模板布局(Template Layout)Thymeleaf中th:include、th:replace、th:insert、th:fragment用法及区别Thymeleaf参考手册(八):模板布局 目录一. 前期准备二. th:insert三. th:include四. th:replace一. 前期…

【云原生-Docker】常用的 Docker Compose 配置项

🍁博客主页:👉不会压弯的小飞侠 ✨欢迎关注:👉点赞👍收藏⭐留言✒ ✨系列专栏:👉Docker学习专栏 ✨学习社区:👉不会压弯的小飞侠 ✨知足上进,不负…

Animation Rigging 如何让你的Avatar人物更具灵活性

文章目录🎈 简介🎈 基本组件🎈 应用Aim ConstraintTwo Bone IK Constraint🎈 简介 Animation Rigging是Unity官方发布的可以对Avatar人物骨骼进行约束的工具,已经有稳定的经过验证的Vertified包体,可以将其…

认知无线电网络的服务质量——蜻蜓算法的应用(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…