当前位置: 首页 > news >正文

独立看门狗(IWDG)

前言

本文以STM32F10系列的开发板,分享独立看门狗IWDG基础知识点。


文章目录

  • 前言
  • 一、独立看门狗(IWDG)概述
  • 二、相关寄存器介绍
  • 三、相关函数介绍
  • 四、IWDG溢出时间的计算
  • 五、IWDG配置步骤
  • 六、独立看门狗小实验


一、独立看门狗(IWDG)概述

(1)独立看门狗主要作用是用于检测外接电磁干扰,或者硬件异常导致的程序跑飞问题。
(2)IWDG本质上是一个12位的递减计数器。当计数器的值从某个初始值开始递减,并且一直减到0时,系统会产生一个复位信号(IWDG_RESET)。CPU在接收到这个信号之后,会重新启动系统,以确保系统从可能的错误或者死锁状态中恢复。
(3)在计数器值减到之前,如果程序通过特定的喂狗操作(即重置计数器的值)来刷新计数器,那么就不会产生复位信号,系统将继续正常运行。
(4)这种喂狗操作,是由程序在正常运行时,定期执行的,以确保IWDG不会因计数器超时(计数器递减到0)而产生复位信号。
(5)独立看门狗使用专用的低速时钟(LSI)作为时钟源,即使在主时钟发生故障时,IWDG依然能够继续运行。
(6)简化版IWDG框图
在这里插
入图片描述
(7)看门狗处于VDD供电区,在停机以及待机模式下任然能够正常工作。

二、相关寄存器介绍

(1)键寄存器
在这里插入
图片描述

  • 其中写入0xAAAA就是具体的“喂狗”操作
  • 写入0x5555就表示允许访问PR寄存器(预分频寄存器)、RLR寄存器(重装载寄存器),只有这个寄存器被写入了0x5555,后面那两个寄存器才能被配置,否则只读。
  • 写入0XCCCC则开启看门狗,(看门狗一旦开启就无法停止)。

(2)预分频寄存器
在这里插入
图片描述

(3)重装载寄存器
在这里插入图片
描述

三、相关函数介绍

在这里插入
图片描述
其HAL库函数很少,就两个,一个初始化函数(Init),一个喂狗函数(Refresh).

四、IWDG溢出时间的计算

(1)
在这里插入
图片描述
其中psc / f 实际上就是一个时钟周期(“数一个数”)需要多久。(因为 f / psc表示的是,输入时钟频率通过分频后得到,看门狗计时器的实际频率,取了个倒数么。)

(2)

(3)IWDG的预分频设为4时,最短超时(计数器递减到0)时间为0.1毫秒,最长为409.6毫秒
在这里插
入图片描述

五、IWDG配置步骤

在这里插入图
片描述

六、独立看门狗小实验

配置IWDG的溢出时间为1s左右,并验证为即使喂狗,系统将被复位。

/*
mian.c文件
*/#include "sys.h"
#include "delay.h"
#include "led.h"
#include "uart1.h"
#include "iwdg.h"int main(void)
{HAL_Init();                         /* 初始化HAL库 */stm32_clock_init(RCC_PLL_MUL9);     /* 设置时钟, 72Mhz */led_init();                         /* 初始化LED灯 */uart1_init(115200);iwdg_init(16,2500);     //超时时间设置为1sprintf("请喂狗,否则系统复位\r\n");while(1){ delay_ms(500);//IWDG超时设置为了大概1s左右,这里500ms延时,则不会超时复位系统iwdg_feed();printf("已经喂狗,不会复位系统\r\n");/*delay_ms(1500);//IWDG超时设置为了大概1s左右,这里1500ms延时,则超时,复位系统iwdg_feed();printf("已经喂狗,不会复位系统\r\n");
*/}
}/*
iwdg.c文件
*/
#include "iwdg.h"IWDG_HandleTypeDef iwgd_handle={0};void iwdg_init(uint8_t pr,uint16_t rlr)
{iwgd_handle.Instance=IWDG;iwgd_handle.Init.Prescaler = pr;iwgd_handle.Init.Reload = rlr;HAL_IWDG_Init(&iwgd_handle);__HAL_IWDG_START(&iwgd_handle);
}void iwdg_feed(void)
{HAL_IWDG_Refresh(&iwgd_handle);
}
http://www.dtcms.com/a/615781.html

相关文章:

  • 男生做污污的网站超炫网站页面
  • 一般做网站需要多少钱私人定制哪个网站做的比较好
  • 永登网站设计与建设网站建设业务活动
  • 网站架构设计师找做网站找那个平台做
  • 网站建设技术总结遵义网站建设优化公司
  • 面向服务的关系建设网站企业建设网站 入账
  • 专业专题网站建设嘉兴网站平台建设
  • 建设项目备案网站管理系统建筑装修设计网站大全
  • 成都商城网站开发设计苏州本地网站
  • 厦门网站推广¥做下拉去118cr建设网站一般多钱
  • 蒙阴网站建设cms网站制作
  • 营销网站如何建设wordpress教程 初学者
  • 网站效果图怎么做移动端网页
  • C语言编程实验编译器 | 提高编程效率与调试能力的实践工具
  • 网站重做凡科做商品网站的教学视频
  • 湖南外贸网站建设甘肃建筑工程网
  • 解释型和编译型编程语言 | 理解两种编程语言的基本区别和应用场景
  • 免费一键搭建网站wordpress更改字体
  • C语言刚入门选择编译器的重要性 | 如何选择合适的编译器提升编程效率
  • 一个网站开发的权限网站建设培训哪里好
  • 个人可以做行业网站吗it运维管理系统
  • 佛山网站制作淘宝页面设计模板
  • 杨浦建设机械网站小程序自己免费制作
  • 做网站找谁好网站怎么做电脑系统下载文件
  • 新乡手机网站建设网站开发的文献
  • 外国做ppt的网站网站备案期间如何
  • 做网站编辑需要会什么百度联系电话
  • 汕头珠宝网站建设怎么样做英文网站
  • 福州住房建设厅网站课程设计代做网站推荐
  • 专门做中式装修的网站南宁seo管理