第35章 WWDG—窗口看门狗—零死角玩转STM32-F429系列

STM32—窗口看门狗(WWDG) STM32 有两个看门狗,一个是独立看门狗,一个是窗口看门狗。我们知道独立看门狗的工作原理就是一个递减计数器不断的往下递减计数,当减到 0 之前如果没有喂狗的话,产生复位。窗口看门狗跟独立看门狗一样,也是一个递减计数器不断的往下递减计数,当减到一个固定值 0X40 时还不喂狗的话,产生复位,这个值叫窗口的下限,是固定的值,不能改变。这个是跟独立看门狗类似的地方,不同的地方是窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生 复位,这个值叫窗口的上限,上限值由用户独立设置。 阅读详情
 

第35章     WWDG—窗口看门狗

全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn

野火视频教程优酷观看网址:http://i.youku.com/firege

 

 

 

本章参考资料:《STM32F4xx中文参考手册》WWDG章节。

学习本章时,配合《STM32F4xx中文参考手册》WWDG章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。

35.1 WWDG简介

STM32有两个看门狗,一个是独立看门狗,一个是窗口看门狗。我们知道独立看门狗的工作原理就是一个递减计数器不断的往下递减计数,当减到0之前如果没有喂狗的话,产生复位。窗口看门狗跟独立看门狗一样,也是一个递减计数器不断的往下递减计数,当减到一个固定值0X40时还不喂狗的话,产生复位,这个值叫窗口的下限,是固定的值,不能改变。这个是跟独立看门狗类似的地方,不同的地方是窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生复位,这个值叫窗口的上限,上限值由用户独立设置。窗口看门狗计数器的值必须在上窗口和下窗口之间才可以喂狗,这就是窗口看门狗中窗口两个字的含义

图 351 IWDG与WWDG区别

RLR是重装载寄存器,用来设置独立看门狗的计数器的值。TR是窗口看门狗的计数器的值,由用户独立设置,WR是窗口看门狗的上窗口值,由用户独立设置。

35.2 WWDG功能框图剖析

图 352 窗口看门狗功能框图

1.    ①窗口看门狗时钟

窗口看门狗时钟来自PCLK1,PCLK1最大是45M,由RCC时钟控制器开启。

2.    ②计数器时钟

计数器时钟由CK计时器时钟经过预分频器分频得到,分频系数由配置寄存器CFR的位8:7  WDGTB[1:0]配置,可以是[0,1,2,3],其中CK计时器时钟=PCLK1/4096,除以4096是手册规定的,没有为什么。所以计数器的时钟CNT_CK=PCLK1/4096/(2^WDGTB),
这就可以算出计数器减一个数的时间T= 1/CNT_CK = Tpclk1 * 4096 * (2^WDGTB)。

3.    ③计数器

窗口看门狗的计数器是一个递减计数器,共有7位,其值存在控制寄存器CR的位6:0,即T[6:0],当7个位全部为1时是0X7F,这个是最大值,当递减到T6位变成0时,即从0X40变为0X3F时候,会产生看门狗复位。这个值0X40是看门狗能够递减到的最小值,所以计数器的值只能是:0X40~0X7F之间,实际上用来计数的是T[5:0]。当递减计数器递减到0X40的时候,还不会马上产生复位,如果使能了提前唤醒中断:CFR位9 EWI 置1,则产生提前唤醒中断,如果真进入了这个中断的话,就说明程序肯定是出问题了,
那么在中断服务程序里面我们就需要做最重要的工作,比如保存重要数据,或者报警等,这个中断我们也叫它死前中断。

4.    ④窗口值

我们知道窗口看门狗必须在计数器的值在一个范围内才可以喂狗,其中下窗口的值是固定的0X40,上窗口的值可以改变,具体的由配置寄存器CFR的位6:0 W[6:0]设置。其值必须大于0X40,如果小鱼或者等于0X40就是失去了窗口的价值,而且也不能大于计数器的值,所以必须得小于0X7F。那窗口值具体要设置成多大?这个得根据我们需要监控的程序的运行时间来决定。如果我们要监控的程序段A运行的时间为Ta,当执行完这段程序之后就要进行喂狗,如果在窗口时间内没有喂狗的话,那程序就肯定是出问题了。一般计数器的值TR设置成最大0X7F,窗口值为WR,计数器减一个数的时间为T,那么时间:(TR-WR)*T应该稍微大于Ta即可,这样就能做到刚执行完程序段A之后喂狗,起到监控的作用,这样也就可以算出WR的值是多少。

5.    ⑤计算看门狗超时时间

图 353 窗口看门狗时序图

这个图来自数据手册,从图我们知道看门狗超时时间:Twwdg = Tpclk1 x 4096 x 2^wdgtb x (T[5:0] + 1) ms,当PCLK1 = 30MHZ时,WDGTB取不同的值时有最小和最大的超时时间,那这个最小和最大的超时时间该怎么理解,又是怎么算出来的? 讲起来有点绕,这里我稍微讲解下WDGTB=0时是怎么算的。递减计数器有7位T[6:0] ,当位6变为0的时候就会产生复位,实际上有效的计数位是T[5:0],而且T6必须先设置为1。如果T[5:0]=0时,递减计数器再减一次,就产生复位了,那这减一的时间就等于计数器的周期=1/CNT_CK = Tpclk1 * 4096 * (2^WDGTB) = 1/30 * 4096 *2^0 = 136.53us,这个就是最短的超时时间。如果T[5:0]全部装满为1,即63,当他减到0X40变成0X3F时,所需的时间就是最大的超时时间=113.7*2^5=136.53*64=8.74ms。同理,当WDGTB等于1/2/3时,代入公式即可。

35.3 怎么用WWDG

WWDG一般被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。比如一个程序段正常运行的时间是50ms,在运行完这个段程序之后紧接着进行喂狗,如果在规定的时间窗口内还没有喂狗,那就说明我们监控的程序出故障了,跑飞了,那么就会产生系统复位,让程序重新运行。

35.4 WWDG喂狗实验

35.4.1 硬件设计

4、WWDG一个

5、LED两个

WWDG属于单片机内部资源,不需要外部电路,需要两个LED来指示程序的运行状态。

35.4.2 软件设计

我们编写两个 WWDG驱动文件,bsp_wwdg.h 和bsp_wwdg.c,用来存放WWDG的初始化配置函数。

1.    代码分析

这里只讲解核心的部分代码,有些变量的设置,头文件的包含等并没有涉及到,完整的代码请参考本章配套的工程。

WWDG配置函数

代码 351 WWDG配置函数

 1 /* WWDG 配置函数
			
 2  * tr :递减计时器的值,取值范围为:0x7f~0x40
				
 3  * wr :窗口值,取值范围为:0x7f~0x40
				
 4  * prv:预分频器值,取值可以是
			
 5  *      @arg WWDG_Prescaler_1: WWDG counter clock = (PCLK1/4096)/1
				
 6  *      @arg WWDG_Prescaler_2: WWDG counter clock = (PCLK1/4096)/2
				
 7  *      @arg WWDG_Prescaler_4: WWDG counter clock = (PCLK1/4096)/4
				
 8  *      @arg WWDG_Prescaler_8: WWDG counter clock = (PCLK1/4096)/8
				
 9  */
				
10 void WWDG_Config(uint8_t tr, uint8_t wr, uint32_t prv)
				
11 {
				
12 
								// 开启 WWDG 时钟
				
13     RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
				
14 
			
15 
							// 设置递减计数器的值
			
16     WWDG_SetCounter( tr );
				
17 
			
18 
							// 设置预分频器的值
			
19     WWDG_SetPrescaler( prv );
				
20 
			
21 
							// 设置上窗口值
			
22     WWDG_SetWindowValue( wr );
				
23 
			
24 
								// 设置计数器的值,使能WWDG
				
25     WWDG_Enable(WWDG_CNT);
				
26 
			
27 
							// 清除提前唤醒中断标志位
			
28     WWDG_ClearFlag();
				
29 
								// 配置WWDG中断优先级
				
30     WWDG_NVIC_Config();
				
31 
								// 开WWDG 中断
				
32     WWDG_EnableIT();
				
33 }
				
			

WWDG配置函数有三个形参,tr是计数器的值,一般我们设置成最大0X7F,wr是上窗口的值,这个我们要根据监控的程序的运行时间来设置,但是值必须在0X40和计数器的值之间,prv用来设置预分频的值,取值可以是:

代码 352 形参 prv 取值

1 /*

 2 *     @arg WWDG_Prescaler_1: WWDG counter clock = (PCLK1/4096)/1
				
 3 *     @arg WWDG_Prescaler_2: WWDG counter clock = (PCLK1/4096)/2
				
 4 *     @arg WWDG_Prescaler_4: WWDG counter clock = (PCLK1/4096)/4
				
 5 *     @arg WWDG_Prescaler_8: WWDG counter clock = (PCLK1/4096)/8
				
 6 */
				
			

这些宏在stm32f10x_wwdg.h中定义,宏展开是32位的16进制数,具体作用是设置配置寄存器CFR的位8:7  WDGTB[1:0],获得各种分频系数。

WWDG中断优先级函数
 1 // WWDG 中断优先级初始化
			
 2 static void WWDG_NVIC_Config(void)
				
 3 {
				
 4     NVIC_InitTypeDef NVIC_InitStructure;
				
 5 
			
 6     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
				
 7     NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn;
				
 8     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
				
 9     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
				
10     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
				
11     NVIC_Init(&NVIC_InitStructure);
				
12 }
				
			

在递减计数器减到0X40的时候,我们开启了提前唤醒中断,这个中断我们称它为死前中断或者叫遗嘱中断,在中断函数里面我们应该出来最重要的事情,而且必须得快,因为递减计数器再减一次,就会产生系统复位。

提前唤醒中断复位程序

代码 353 提前唤醒中断服务程序

1 // WWDG 中断复服务程序,如果发生了此中断,表示程序已经出现了故障,

 2 // 这是一个死前中断。在此中断服务程序中应该干最重要的事,
			
 3 // 比如保存重要的数据等,这个时间具体有多长,要
			
 4 // 由WDGTB的值决定:
				
 5 // WDGTB:0   113us
				
 6 // WDGTB:1   227us
				
 7 // WDGTB:2   455us
				
 8 // WDGTB:3   910us
				
 9 void WWDG_IRQHandler(void)
				
10 {
				
11 
							// 清除中断标志位
			
12     WWDG_ClearFlag();
				
13 
			
14 
								//LED2亮,点亮LED只是示意性的操作,
				
15 
							//真正使用的时候,这里应该是做最重要的事情
			
16     LED2(ON);
				
17 }
				
			
喂狗函数

代码 354 喂狗函数

 1 // 喂狗
			
 2 void WWDG_Feed(void)
				
 3 {
				
 4 
								// 喂狗,刷新递减计数器的值,设置成最大WDG_CNT=0X7F
				
 5     WWDG_SetCounter( WWDG_CNT );
				
 6 }

喂狗就是重新刷新递减计数器的值防止系统复位,喂狗一般是在主函数中喂。

主函数

代码 355 主函数

1 int main(void)

2 {

3 uint8_t wwdg_tr, wwdg_wr;

4

5 /* LED 端口初始化 */

6 LED_GPIO_Config();

7

8 // BLUE 蓝色灯亮

9 LED3(ON);

10 Delay(0XFFFFFF);

11

12 // WWDG配置

13

14 /* WWDG 配置函数

15 * tr :递减计时器的值,取值范围为:0x7f~0x40,超出范围会直接复位

16 * wr :窗口值,取值范围为:0x7f~0x40

17 * prv:预分频器值,取值可以是

18 * @arg WWDG_Prescaler_1: WWDG counter clock = (PCLK1(45MHz)/4096)/1

19 约10968Hz 91us

20 * @arg WWDG_Prescaler_2: WWDG counter clock = (PCLK1(45MHz)/4096)/2

21 约5484Hz 182us

22 * @arg WWDG_Prescaler_4: WWDG counter clock = (PCLK1(45MHz)/4096)/4

23 约2742Hz 364us

24 * @arg WWDG_Prescaler_8: WWDG counter clock = (PCLK1(45MHz)/4096)/8

25 约1371Hz 728us

26 *

27 * 例:tr = 127(0x7f,tr的最大值)

28 * wr = 80(0x50, 0x40为最小wr最小值)

29 * prv = WWDG_Prescaler_8

30 * 窗口时间为728 * (127-80) = 34.2ms < 刷新窗口 < ~728 * 64 = 46.6ms

31 * 也就是说调用WWDG_Config进行这样的配置,若在之后的34.2ms前喂狗,

32 * 系统会复位,在46.6ms后没有喂狗,系统也会复位。

33 * 需要在刷新窗口的时间内喂狗,系统才不会复位。

34 */

35 // 初始化WWDG:配置计数器初始值,配置上窗口值,启动WWDG,使能提前唤醒中断

36 WWDG_Config(127,80,WWDG_Prescaler_8);

37

38 // 窗口值我们在初始化的时候设置成0X5F,这个值不会改变

39 wwdg_wr = WWDG->CFR & 0X7F;

40

41 while (1)

42 {

43 // BLUE 蓝色灯

44 LED3(OFF);

45 //-----------------------------------------------------

46 // 这部分应该写需要被WWDG监控的程序,这段程序运行的时间

47 // 决定了窗口值应该设置成多大。

48 //-----------------------------------------------------

49

50 // 计时器值,初始化成最大0X7F,当开启WWDG时候,这个值会不断减小

51 // 当计数器的值大于窗口值时喂狗的话,会复位,当计数器减少到0X40

52 // 还没有喂狗的话就非常非常危险了,计数器再减一次到了0X3F时就复位

53 // 所以要当计数器的值在窗口值和0X40之间的时候喂狗,其中0X40是固定的。

54 wwdg_tr = WWDG->CR & 0X7F;

55

56 if ( wwdg_tr < wwdg_wr )

57 {

58 // 喂狗,重新设置计数器的值为最大0X7F

59 WWDG_Feed();

60 }

61 }

62 }

主函数中我们把WWDG的计数器的值设置 为0X7F,上窗口值设置为0X5F,分频系数为8分频,则计数器减1的时间约为728us。在while死循环中,我们不断读取计数器的值,当计数器的值减小到小于上窗口值的时候,我们喂狗,让计数器重新计数。

在while死循环中,一般是我们需要监控的程序,这部分代码的运行时间,决定了上窗口值应该设置为多少,当监控的程序运行完毕之后,我们需要执行喂狗程序,比起独立看门狗,这个喂狗的窗口时间是非常短的,对时间要求很精确。如果没有在这个窗口时间内喂狗的话,那就说明程序出故障了,会产生提前唤醒中断,最后系统复位。

35.4.3 下载验证

把编译好的程序下载到开发板,LED3被点亮,一段时间之后熄灭,之后LED3一直就没有被点亮过,说明系统没有产生复位,如果产生复位的话LED3会再被点亮一次。中断服务程序中的LED也没被点亮过,说明喂狗正常。

 

STM32——看门狗(独立看门狗,窗口看门狗,附代码) 看门狗(独立看门狗、窗口看门狗)的原理及代码实现。 阅读详情

相关推荐

STM32入门--看门狗

STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

weixin_57604904的博客 6710

STM32——窗口看门狗

窗口看门狗用于监测单片机程序运行时效是否精准,

m0_49830036的博客 1012

STM32——WWDG(窗口看门狗)

本质:能产生系统复位信号和提前唤醒中断的计数器。特性:递减的计数器;当递减计数器值从 0x40减到0x3F时复位(即T6位跳变到0);计数器的值大于W[6:0]值时喂狗会复位;提前唤醒中断 (EWI):当递减计数器等于 0x40 时可产生;喂狗:在窗口期内重装载计数器的值,防止复位。作用:软件异常,精准时间把控。

weixin_52706451的博客 1144

小白学STM32---窗口看门狗

窗口看门狗(WWDG)简介之所以称为窗口就是因为其喂狗时间是一个有上下限的范围内(窗口),你可以通过设定相关寄存器,设定其上限时间 (下限固定)。喂狗的时间不能过早也不能过晚。而独立看门狗限制喂狗时间在0-x内,x由相关寄存器决定。喂狗的时间不能过晚窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位(WWDG->CR 的第六位)

weixin_62802580的博客 1685

DINOv3 网络结构解析:从 ViT 到 ConvNeXt 的双路线设计

本文深入解析了DINOv3网络结构的双路线设计,包括ViT和ConvNeXt两种主干架构。ViT路线通过轴向旋转位置编码解决了传统ViT对固定分辨率的依赖,而ConvNeXt路线则优化了卷积设计,提升了实时处理能力。文章还探讨了Gram Anchoring、混合自监督目标等关键技术,展示了DINOv3在多任务和多模态应用中的强大潜力。

weixin_29214199的博客 563

Scrum中敏捷项目经理(Scrum Master)扮演什么角色?

Scrum Master是Scrum团队中的“服务员”,负责确保所有人都能理解Scrum的理论、实践和规则,以及帮助团队最大化Scrum的利益。Scrum Master服务于Product Owner,帮助Product Owner理解如何使团队的工作最有效地满足产品目标。Scrum Master服务于Development Team,移除开发团队工作上的障碍,保证团队按照Scrum的方式运作。Scrum Master不是团队领导。Scrum团队是自组织的,意味着团队具有做出决策的能力。

huaqianzkh的专栏 2516

STM32的窗口看门狗详解及案例(基于HAL库)

STM32 窗口看门狗是一种非常有效的保障系统稳定性和可靠性的手段。通过合理配置窗口看门狗,可以在系统出现故障时及时复位系统,避免系统出现严重故障。在实际应用中,需要根据系统的实际情况合理设置时间窗口和喂狗操作的时机,以确保窗口看门狗能够正常工作。同时,还需要注意早期唤醒中断的处理,以避免影响系统的正常运行。

千千道的博客 3001

RouterOS v7.6实战:5分钟搞定IPv6双栈配置(含光猫桥接避坑指南)

本文详细解析了在RouterOS v7.6系统中配置IPv6双栈网络的实战步骤,特别针对家庭网络光猫桥接模式下的常见问题提供了避坑指南。文章涵盖了从基础配置到企业级部署的进阶内容,包括IPv6前缀获取、DHCPv6客户端设置、路由通告以及安全优化,帮助用户充分利用v7.6版本在IPv6支持上的改进与优势。

embedding5hiker的博客 1280

STM32单片机——看门狗(独立看门狗&窗口看门狗)

窗口看门狗用于监测单片机程序运行时效是否精准,主要检测。

weixin_46216674的博客 3378

48V电动车电池包拆解:硬核入门BMS硬件设计与故障排查

BMS(电池管理系统)是锂电应用的核心安全与性能保障模块,其本质是融合电化学、模拟电路、嵌入式控制与热管理的交叉系统。理解BMS不能止步于SOC算法或通信协议,而需回归硬件本体——从电压采样精度、MOSFET驱动时序、被动均衡散热设计到NTC热耦合布局,每一处物理实现都直接决定系统可靠性。48V平台因兼具安全性(<60V ELV)、复杂度(13–14串)与产业普及性,成为BMS工程实践的理想标本。本文聚焦真实电池包中的PCB级设计缺陷识别、关键参数现场验证(如±5mV采样误差、5mΩ导通内阻)、UART协议

weixin_29191081的博客 234

Matlab R2024a硬件支持包安装避坑指南:以Arduino为例(附离线包下载)

本文详细介绍了Matlab R2024a硬件支持包(Support Package)的安装流程,特别是针对Arduino平台的避坑指南和高效部署方法。从环境准备、离线安装方案到Arduino支持包的专项优化,提供了全面的技术细节和解决方案,帮助开发者避免常见错误,实现快速部署。

weixin_33737134的博客 447

STM32F4_窗口看门狗精讲(WWDG)

是在0~重载值之间任何时间段都可以喂狗,如果在这个时间段程序死循环结束,或者说程序跑飞之后又跑回正常,这时候恰好又刷新了看门狗,这种情况下独立看门狗是检测不到复位芯片的;但是窗口看门狗不同,严格限时了喂狗的时间,即使程序跑飞又跑回正常,只要不在限定的时间窗口内,MCU都会产生复位。之所以这么讲,是因为在计数器值为0x40时使用EWI中断,不仅仅可以用来管理软件系统检查/或系统恢复/功能退化,也可以使用相应的中断服务程序ISR来重载WWDG计数器以避免WWDG复位。:在系统复位后,看门狗总是处于关闭状态。

light_2025的博客 3039

波束管理 Beam Management

Beam Management in 5G NR   波束管理,是5G NR中基于信道质量来动态选择每个UE和gNB之间以什么方向和频率的波束beam来进行通信。   背景   5G NR(New Radio)支持非常高的数据速率和更低的延迟。5G NR支持FR1和FR2频段,FR1为亚6 GHz(450至6000 MHz);FR2为毫米波段(24.25 GHz至52.6 GHz)。   由于毫米波频带使用非常高的频率,因此会导致传播损耗和其他损耗。为了补偿损失,在这种频率下定向通信是必不可少的。

最忆是江南的博客 5826

STM32实战总结:HAL之看门狗

STM32实战总结:HAL之看门狗

qq_28576837的博客 3781

NVMe-MI --- Message Servicing Model(消息服务模型)

本文主要介绍NVMe-MI消息服务模型,两个主要类别是请求消息和响应消息。并介绍带外机制消息服务状态机。

智小星的博客 2014

PCL点云库入门(第6讲)——PCL库中Eigen数学工具库的基本使用(持续更新)

Eigen库是一个高性能的C++模板库,专注于线性代数、矩阵和向量运算,以及相关的数值分析和算法。在Eigen库中,所有的矩阵和向量均被视为矩阵模板类的实例。向量可以被看作是特殊形式的矩阵,具体表现为只包含1行或1列。

qq_36812406的博客 1752

手把手教你开发stm32——看门狗(基于hal库)

看门狗定时器(WDT,Watch Dog Timer)是单片机的组成部分,它实际上是一个计数器,一般给看门狗一个数值,程序开始运行后看门狗开始倒计时。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始计数,也就是所谓的“喂狗”。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。独立看门狗由专用低速时钟(LSI)驱动,计时主时钟发生故障它也仍然有效。看门狗主要是用于在发生系统软件故障时,将系统复位。也可以用于将系统从休眠或空闲模式唤醒。

nbbskk的博客 5244

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

STM32实现看门狗(HAL库)

单片机在日常工作中常常会因为用户配置代码出现BUG,而导致芯片无法正常工作;或者会受到来自外界电磁场的干扰,造成程序跑飞 ,或陷入死循环。如果无法系统复位,那么整个系统都会卡死,这对产品的使用是灾难性的后果。出于对单片机运行状态进行实时监测的考虑,产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称看门狗(WatchDog) 。

冬瓜的博客 6055

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

STM32—看门狗详解入门(独立看门狗、窗口看门狗)

什么是看门狗?看门狗又分为独立看门狗、窗口看门狗,看门狗的原理是什么?本质是什么? 怎么配置和使用看门狗?本文对这些问题进行详解。

Ai1101224的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

STM32 看门狗

STM32 的独立看门狗与窗口看门狗,分别从 "独立稳定" 和 "精准实时" 两个维度,为嵌入式系统提供了可靠的故障自救机制。掌握两种看门狗的原理、参数计算和编程配置,能有效提升系统在复杂环境下的稳定性和容错能力。无论是简单的硬件监控,还是复杂的实时任务管理,合理选用看门狗功能,都能让你的嵌入式系统拥有一位全天候的 "硬件保镖",从容应对各类突发故障。

2501_92368462的博客 1051

【STM32笔记】STM32的看门狗详解(独立看门狗和窗口看门狗)

首先,它不是真的狗。看门狗(Watchdog)是一种硬件定时器,用于监测程序执行是否正常,并在系统出现故障或死锁时重启系统。

Macy~的博客 1万+

stm32之看门狗

STM32 有两个看门狗,和,独立看门狗又称宠物狗,窗口看门狗又称警犬。可用来检测和解决由软件错误引起的故障。两个看门狗的原理都是当计数器达到给定的超时值时,产生系统复位,对于窗口型看门狗同时会产生一个中断。独立看门狗(IWDG)由专用的内部低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动。

TSC1235的专栏 3463

【STM32开发之寄存器版】(五)-窗口看门狗WWDG

窗口看门狗的时序图如下所示:T[6:0]:控制寄存器(WWDG_CR)的低7位。W[6:0]:配置寄存器(WWDG_CFR)的低7位,为窗口看门狗的上窗口。3Fh:下窗口0X40的边界。当窗口看门狗的计数器在上窗口值之外被刷新,或者低于下窗口值都会产生复位。窗口看门狗的超时公式如下:Twwdg:WWDG超时时间(单位ms)Fpclk1:APB1的时钟频率(单位KHz)WDGTB:WWDG的预分频系数T[5:0]:窗口看门狗的计数器低6位WDGTB最小超时值最大超时值0。

Daemon.Chen的博客 2059

单片机STM32看门狗详解(嵌入式学习)

单片机STM32的看门狗(Watchdog)是一种硬件定时器,用于监控系统的运行状态并在出现故障或死锁时采取措施以恢复正常操作。看门狗的主要功能是定期检查系统是否正常运行,并在系统出现问题时触发复位操作。STM32系列单片机通常配备了内置的看门狗定时器(通常称为独立看门狗,IWDG)和窗口看门狗定时器(WWDG),以提供更可靠的系统保护。独立看门狗(IWDG)是STM32中常用的看门狗,它是一个独立的硬件模块,可以在系统内部独立运行。通过配置IWDG定时器的计数器和预分频器,可以设置看门狗的定时时间。

1万+

STM32 HAL库窗口看门狗

STM32 窗口看门狗介绍及使用,涉及相关寄存器说明、cubemx配置、验证程序代码段。

优快云_joker_的博客 1895
上一篇: 第33章 TIM—电容按键检测—零死角玩转STM32-F429系列
下一篇: 第36章 SDIO—SD卡读写测试—零死角玩转STM32-F429系列
0木木0
博客等级 码龄17年 458粉丝 58原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值