STM32学习笔记:独立看门狗和窗口看门狗
STM32的独立看门狗是由内部专门的40Khz低速时钟驱动,即使主时钟发生故障,但它仍然有效。
看门狗原理:单片机系统在外界干扰情况下会出现程序跑飞的现象会导致出现死循环,看门狗电路在一定时间内如果没用接收到喂狗信号,则会自动复位重启。
在键值寄存器(IWDG_KR)写入0XCCCC开启独立看门狗,此时计时器开始从复位值0XFFF依次递减到0X000,此时会产生一个复位信号(IWDG_RESET),当键值寄存器IWDG_KR被写入0XAAAA的时候,IWDG_RLR的值的重新加载到计数器从而避免看门狗的复位。
Tout = (4*2^(prer) * rlr)/40
Tout的单位是(ms),prer是看门狗时钟的预分频值(IWDG_PR值)范围0-7,rlr是看门狗重装载值(IWDG_RLR的值)
IWDG_PR和IWDG_RLR寄存器具有写保护功能,要修改这两个寄存器的数值,必须先想IWDG_KR写入0X5555,将其他值写入这个寄存器则会打乱操作顺序,寄存器将会被重新保护,重装载操作(即写入0XAAAA)也会被重新保护起来。
注意:独立看门狗的时钟是一个内部 RC 时钟,所以并不是准确的 40Khz,而是 在 30~60Khz 之间的一个可变化的时钟,所以喂狗的时间不要太迟,以防出现问题。
窗口看门狗
窗口看门狗不同于独立看门狗,它借助的是plck1的时钟,所以在使用前需要使能时钟,窗口看门狗区别于独立看门狗的不同在于,独立看门狗的喂狗时间是个0-x,但是窗口看门狗会更加的灵活,它采用了上下窗口的方式,下窗口是个固定值0X40,当计数器的数值从0X40(64)变为0X3f(63),便会产生中断,而上窗口的数值是由自己决定,但是必须在0X7F(因为使用寄存器WWDG_CR的低七位来存储计数器的数值)和0x40之间。
喂狗时间必须在上下窗口之间进行,否则则会复位。
当产生中断的时候,必须在不大于一个看门狗计数周期内重新写入计数值,否则将复位!!!
WDGTB的预分频系数【0,1,2,3】,借助公式的计算可以算出计数值减少1的最短周期,当T[5:0]全为1的时候,则会由最大超过周期用最小值*64。
void WWDG_Init(u8 tr,u8 wr,u8 fprer)
{ RCC->APB1ENR|=1<<11; //使能wwdg时钟 使用的是plck1时钟WWDG_CNT=tr&WWDG_CNT; //初始化WWDG_CNT. WWDG->CFR|=fprer<<7; //PCLK1/4096再除2^fprer 得到CFR对应的分频数WWDG->CFR&=0XFF80; //后七位为0WWDG->CFR|=wr; //设定窗口值 WWDG->CR|=WWDG_CNT; //设定计数器值 WWDG->CR|=1<<7; //开启看门狗 MY_NVIC_Init(2,3,WWDG_IRQn,2);//抢占2,子优先级3,组2 WWDG->SR=0X00; //清除提前唤醒中断标志位 (若没有进入中断函数,也需要清除,防止进入中断)WWDG->CFR|=1<<9; //使能提前唤醒中断
}
//重设置WWDG计数器的值
void WWDG_Set_Counter(u8 cnt)
{ WWDG->CR =(cnt&0x7F);//重设置7位计数器
}
//窗口看门狗中断服务程序
void WWDG_IRQHandler(void)
{ WWDG_Set_Counter(WWDG_CNT);//重设窗口看门狗的值! WWDG->SR=0X00;//清除提前唤醒中断标志位 LED1=!LED1;
}
STM32学习笔记:独立看门狗和窗口看门狗相关推荐
- 【STM32学习笔记】(15)——窗口看门狗(WWDG)详解
窗口看门狗(WWDG)概述 窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障.除非递减计数器的值在T6位变成0前被刷新,否则看门狗电路在达到预置 ...
- STM32学习笔记—独立看门狗
1.独立看门狗的介绍 2.独立看门狗的使用 3.代码段 1.独立看门狗的介绍 独立看门狗利用系统内部的低速时钟提供机械周期,这个低速时钟与系统的工作时钟不是一个时钟,所以看门狗的运行和系统的运行是互不 ...
- 【STM32学习笔记】(14)——独立看门狗(IWDG)详解
独立看门狗(IWDG)概述 STM32F10xxx系列内置两个看门狗(独立看门狗和窗口看门狗),提供了更高的安全性.时间的精确性和使用的灵活性.两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决 ...
- stm32看门狗_STM32单片机:独立看门狗、窗口看门狗的配置
SATM32单片机的看门狗有独立看门狗和窗口看门狗之分,这两者的工作原理却完全不同,今天来看一下他们的具体区别和配置方法.▍STM32独立看门狗由专门的低速时钟(LSI)驱动,即便是主时钟发生故障它仍 ...
- stm32 定时器_如何计算STM32定时器、独立看门狗和窗口看门狗
点击上方蓝色字体,关注我们 本博文简要阐述STM32L011微控制器定时器的参数配置(其他型号大同小异,本文侧重讲解配置,至于各类定时器的特点后续再述),STM32定时器种类繁多有通用定时器.基本定时 ...
- STM32之独立看门狗与窗口看门狗总结
一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...
- 如何计算STM32定时器、独立看门狗和窗口看门狗
目录 1.基本.通用类型定时器 2.独立看门狗定时器 3.窗口看门狗定时器 之前分享了STM32 GPIO的原理.特性.选型和配置.如何计算RTC时钟异步预分频和同步预分频,这次简要阐述STM32L0 ...
- STM32 学习笔记 -- 基于stm32f4的看门狗配置和实验代码
基于stm32f4的看门狗配置和实验代码 以下本人对stm32f4xx的独立看门狗和窗口看门狗学习.理解和总结,程序的说明和解释均在注释中,仔细阅读不难理解.我已经过验证,有问题或错误请指出. 版权声 ...
- STM32中的独立看门狗和窗口看门狗
STM32中的独立看门狗和窗口看门狗 在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况.为了避免这种情况的出现,后期的MCU都集成了看门狗的功能.但是,目前看门狗发展到今天 ...
最新文章
- 0315互联网新闻 | 小红书测试短视频产品“hey”;华为与故宫共同打造“5G智慧故宫”...
- 中考计算机IE操作题,信息技术中考历年真题集锦(IE操作)
- [C#7] 1.Tuples(元组)
- Rxjava2自我·解惑
- Java笔记-DH密钥交换
- 浅谈OpenCL之Platform API(1)
- ExtJs中Store简介(秘籍)
- mysql如何选择多个表_从两个表mysql中选择多行
- Swiper插件的基本使用方法和案例
- 人脸识别 java_利用Java调用OpenCV进行人脸识别
- 心理学当中一些很有用的定律
- 懒人版黑苹果mbr安装_BIOS+MBR硬盘,一步一步教你怎么用clover装黑苹果
- 9.23 未来的规划 BEC
- java 动态线程池_线程池的参数动态调整
- Linux进程(二):生命周期
- 解决报错:The Module Root specified is not a module according to Intellij
- [Err] 23000 - [SQL Server]不能在具有唯一索引 'IX_student_info_2' 的对象 'dbo.student_info' 中插入重复键的行
- ios 行间距和段落间距_如何在Microsoft Word中控制行间距和段落间距
- 基于winform的GIS离线地图
- vi编辑器上下左右出现ABCD无法正常使用