STM32F1_ WDG看门狗(独立+窗口)

发布者:JoyfulHarmony最新更新时间:2023-06-08 来源: elecfans关键字:STM32F1  WDG  看门狗 手机看文章 扫描二维码
随时随地手机看文章

前言

今天总结“STM32F103 WDG看门狗”,STM32F1有两个看门狗,IWDG独立看门狗和WWDG窗口看门狗,今天将两个看门狗一并总结了。


总结一下二者的区别:

1)、IWDG使用内部低速时钟LSI,WWDG使用系统时钟APB1ENR

2)、IWDG没有中断,WWDG有中断

3)、IWDG是12位递减的。WWDG是7位递减的

4)、IWDG只有下限,WWDG有下限和上限

5)、IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。


看门狗在长期工作的产品中用到比较多,作用很简单,防止死机。看门狗的功能也可用于定时计数等。


提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。

今天的软件工程下载地址(360云盘):

IWDG:https://yunpan.cn/cSQd68LfbPkIH访问密码 d751

WWDG:https://yunpan.cn/cSQdk5CLVWVwW访问密码 fe96

STM32F10x的资料可以在我360云盘下载:

https://yunpan.cn/crBUdUGdYKam2访问密码 ca90

内容讲解

工程概要说明: IWDG工程基于“EXIT中断”工程修改而来,因为使用到按键来喂狗。系统复位,快速闪烁两次LED,接下来间隔1秒串口打印一个计数值(从0 - 8),在8秒的时间内按键喂狗,计数值会归零;如果不喂狗则会复位。

WWDG工程基于“TIM定时”而来,因为使用了定时的功能。我提供的工程喂狗的时间是57ms(刚好最大值),间隔57ms喂狗一次,不会复位(LED快速变化, 快速打印WWDG...); 如果大于57ms(自己可以修改一下)未喂狗则会复位(LED慢速变化, 不断打印Reset...)。

提供的工程简单明了,详细中文注释,方便自己方便大家。

关于“STM32F103 WDG看门狗”我把重要的几点在下面分别讲述:

一、IWDG的配置


该函数位于IWDG工程的main.c文件下面;

提供的框图为见资料。

我想大部分关心的是这个8秒的喂狗时间是怎样计算出来的,其实,看了程序的注释和框图大概就应该能明白了。40K分频256之后就只能在1秒计数156次,

而要计满1250(40000/32)就需要8秒。不明白的朋友请自己分析一下哦。

二、WWDG的配置


该函数位于WWDG工程的main.c文件下面;

提供的框图为见资料。

这里也主要讲一下最大喂狗时间57ms.分频之后只能在1秒计数1099次,要计满63个大概就需要57ms,这个值就是最大值。

这个工程需要自己修改这个时间来测试,建议都自己亲手修改代码测试一下。

三、WWDG主函数


该函数位于WWDG工程的main.c文件下面;

通过串口打印的信息就可以清楚的知道系统复位了没有。

亲手修改来大于57ms的时间试试就知道。

四、今天的重点

A.WWDG计数器的范围为:0x40 --- 0x7F

B.当微控制器进入调试模式时(Cortex-M3核心停止),根据调试模块中的DBG_WWDG_STOP 配置位的状态, WWDG的计数器能够继续工作或停止。

C.没有两个寄存器,编程时请细看寄存器

说明

今天提供的软件工程基于STM32F103大容量芯片,其实只要适当修改工程的部分配置,STM32F1的芯片都适用。


关键字:STM32F1  WDG  看门狗 引用地址:STM32F1_ WDG看门狗(独立+窗口)

上一篇:STM32F1_ 片内FLASH编程
下一篇:CM3(STM32) 内核复位与系统复位区别及应用

推荐阅读最新更新时间:2024-11-12 21:18

stm32f10x独立看门狗
一、IWDG介绍 1.1、独立看门狗简介 STM21F1芯片内部含有两个看门狗外设,独立看门狗(IWDG)与窗口看门狗(WWDG)。 两个看门狗都可以用于检测并解决由软件错误导致的故障。 独立看门狗可以简单的理解为一个12位的递减计数器,当计数器从某个值递减到0时(如果看门狗已激活),那么系统会产生一次复位。 如果在计数器递减到0之前刷新了计数器值,那么系统就不会产生复位。 这个刷新计数器值得过程称为“喂狗”。 独立看门狗功能由VDD电压域供电,在停止模式和待机模式下仍能工作。 1.2、IWDG结构框图 LSI:内部低速时钟,频率约在30~60KHz之间 仅适用于时间精度较低的场合,即便在主时钟发生 故障时仍然保持工作
[单片机]
stm32f10x独立<font color='red'>看门狗</font>
STC12C2052AD单片机看门狗及其溢出时间计算公式
;本程序用于验证 STC12C2052AD 系列 单片机 的看门狗及其溢出时间计算公式 ;看门狗及其溢出时间 = (12 * Pre_scale *32768)/Oscillator Frequency WDTCR EQU 0E1H ;看门狗地址 WDT_TIME_LED EQU P1.5 ;用 P1.5 控制看门狗溢出时间指示灯, ;看门狗溢出时间可由该指示灯亮的时间长度或熄灭的时间长度表示 WDT_FLAG_LED EQU P1.7 ;用 P1.7 控制看门狗溢出复位指示灯, 如点亮表示为看门狗溢出复位 Last_WDT_Time_LED_Status EQU 00H ;位变量,
[单片机]
N76E003配置看门狗watchdog
说明 本例子只做软件异常时重置系统用,不需要用作定时器或唤醒用,所以不用打开watchdog中断。需要注意的是:如果上次启动开启过watchdog reset,想要关闭,下次启动必须清除CONFIG4内的WDT配置,否则watchdog还是启动的。 主要代码只是在CONFIG4寄存器对看门狗定时器WDT做使能关闭的配置( ,0xF0关闭重置只做定时器,0x50和其他任意值开启重置,但0x50在空闲或掉电模式下停止运行),由于是页擦除,所以先保存CONFIG0到CONFIG4的值再写入。 在操作前要执行TA时效访问保护。 参考代码 #include N76E003.h #include SFR_Macro.h #in
[单片机]
N76E003配置<font color='red'>看门狗</font>watchdog
22.核心初始化之看门狗
看门狗定时器,在嵌入式领域,有些设备需要工作一些极端的环境,就是人很少到或者很难到的地方。在长期的运作中,难免会出现故障死机的情况,这时,如果派人去查看情况,耗费耗时等,所以人们就设置了一种机制,就是系统里有一个重启的机制叫看门狗定时器。它工作的方式:就是系统的watchdog在硬件上实现了计时功能,启动计时后,用户(软件)必须在计时结束前重新开始计时,俗称 喂狗 ,如果到了超时的时候,还没有重新开始计时,那么就认为系统死机了,进行自动重启系统。 芯片手册:6410的34章里: 看门狗的工作流程: 由于我们现在使用的日常里的操作系统,没那么容易死机,所以为了避免系统老是重启,因为没喂狗。所以干脆把它给关闭掉。 关闭的操作: 看
[单片机]
22.核心初始化之<font color='red'>看门狗</font>
看门狗的原理和作用
看门狗,又叫watchdog timer,从本质上来说就是一个定时器电路,一般有一个输入和一个输出,其中的输入叫做喂狗,输出一般连接到另外一个部分的复位端,另外一个部分就是所要处理的部分,暂且称之为MCU。 在MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给看门狗电路清零,如果在超过规定的时间不喂狗,WDT定时超时,就会回给一个复位信号到达MCU,使MCU复位,防止MCU死机。总的来说,看门狗电路的作用就是防止程序发生死循环,或者说程序跑飞。 WDT的基本工作原理如下:在整个系统运行以后就启动了看门狗的计数器,此时看门狗就开始自动计时,如果到达了一定的时间还不去给它清零,看门狗计数器就会溢出从而引起
[单片机]
什么是模拟看门狗?模拟看门狗有什么用处?
看门狗大家应该再熟悉不过了,一旦忘记喂狗就会导致单片机复位,而在大部分stm32中都存在两种类型的看门狗,Independent watchdog (IWDG)独立看门狗和Window watchdog (WWDG)窗口看门狗。 独立看门狗也就是常规的一种看门狗,需要定时reload计数值进入downcounter下降计数器中,否则当下降计数到0便会产生IWDG_reset信号,导致芯片复位。 通过下方原理框图可知,其有独立LSI时钟驱动,不会受到主时钟的影响,相对比较独立。 窗口看门狗与独立看门狗有所不同,该看门狗必须在所设置的窗口重载下降计数器才不会导致RESET,过早或者过晚都会导致复位。 然而有时候系统异常
[单片机]
什么是模拟<font color='red'>看门狗</font>?模拟<font color='red'>看门狗</font>有什么用处?
arm看门狗的作用
watchdog一般是一个硬件模块。在嵌入式操作系统中,常见的应用场景是系统长期运行且无人看守,当出现出现系统死机时,watchdog就会自动帮你重启系统。 看门狗的实现原理: watchdog的硬件上有个记录超时功能,然后要求用户需要每隔一段时间(此时间可以根据自己需求而配置)去对其进行一定操作,比如往里面写一些固定的值,俗称“喂狗”,那么我发现超时了,即过了设定时间你还不给偶喂食,那么偶就认为你系统是死机了,出问题了,偶就帮你重启系统。说白了就是弄个看家狗dog,你要定期给其喂食,如果超时不喂食,那么狗就认为你,他的主人,你的系统,死机了,就帮你reset重启系统。 为何在要系统初始
[单片机]
单片机程序跑飞现象及解决--看门狗电路
1、程序跑飞现象 随着单片机在能源领域中的广泛应用,单片机的抗干扰问题越来越突出,煤矿井下环境一般比较恶劣,这便会为单片机控制系统带来各种干扰,以致系统不能正常工作。单片机应用系统的抗干扰性能主要取决于硬件的抗干扰设计,但软件抗干扰设计作为硬件抗干扰的完善和补充,作用也非常重要,因为大量的干扰通常并不能影响系统内硬件的运作,却常会使系统的软件无法正常运行,单片机应用的一个突出问题,便是单片机运行过程中经常出现的程序跑飞现象。 在单片机系统中,因为干扰的原因,在非预期的情况下,使得程序计数器PC 的值发生随机的变化,从而使得程序的流向指向不确定区域,这便是程序的跑飞。程序跑飞后或者会使指令的地址码和操作码发生改变,PC 把操作数当作
[单片机]
单片机程序跑飞现象及解决--<font color='red'>看门狗</font>电路
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved