stm32看门狗

看门狗是处理器安全机制,分为IWDG和WWDG。IWDG通过设置分频系数和重装载值来控制复位时间。WWDG引入时间窗口,确保程序按预期路径运行,防止异常刷新。启用WWDG涉及设置窗口值、分频数、中断和计数器初始值,并编写中断服务函数进行喂狗。
摘要由CSDN通过智能技术生成

看门狗简介及其主要函数配置

看门狗的作用是:在一定时间内未接收到喂狗信号,便对处理器自动复位。
stm32内部自带两个看门狗:IWDG(独立看门狗)和WWDG(窗口看门狗)。

IWDG

主要是对三个寄存器操作:IWDG_KR:向计数器写值
IWDG_PR:看门狗的分频系数
IWDG_RLR:重装载值
四个步骤:

1.取消寄存器PR,RLR写保护,即可设置分频系数和重装载值
IWDG_WriteAccessCmd();
2.设置预分频系数和重装载值
void IWDG_SetPrescaler();
void IDWG_SetReload();
喂狗时间公式为:T=((4*2^prep)*rlr)/40.
3.重载计数值喂狗:
IWDG_ReloadCounter();
4.启动看门狗
IWDG_Enable();
//IWDG一旦启动,不能再被关闭,只能通过重启,且之后不能打开IWDG。

WWDG

窗口看门狗即在有限的一段有上下限的时间内写入一个值(下限时间是一个固定值),去重置计数器。其通常用来监测由外部干扰或不可见的逻辑条件造成的应用程序背离正常运行序列而产生的软件故障。
其在下述两种情况会发生看门狗复位:
①当喂狗时计数器的值大于设定数值W[6:0]时,
②当计数器数值从0x40减至0x3f时(T6位跳变至0)
使用窗口看门狗的意义是对于一般的看门狗,程序可以在复位前的任意时刻刷新看门狗,此时,当程序跑乱后,又运行至正常处,或者正好执行了刷新看门狗的操作,这样的情况无法被看门狗检测出。所以设置一个时间窗口,保证不会提前和滞后刷新看门狗,可以检测出程序有没有按照正常的路径运行。
用中断的方式来喂狗启用WWDG的步骤:

 1. 使能WWDG时钟
	 RCC_APB1PeriphClockCmd();
	 
 2. 设置上窗口值和分频数
 	void WWDG_SetWindowvalue();
 	void WWDG_SetPrescaler();
 	
 3. 开启WWDG中断并设置中断分组
	void WWDG_EnableIT();
	NVIC_Init();
	
 4. 设置计数器初始值并使能看门狗(此函数可完成以上两个功能)
	void WWDG_Enable();
	
 5. 编写中断服务函数(通过该函数来喂狗)
 	void WWDG_IRQHandler();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值