关于STC15F2K60S2看门狗的应用

关于STC15F2K60S2看门狗的应用

1.STC15F2K60S2系列单片机的内部结构图

STC15F2K60S2系列单片机的内部结构框图如下图所示,STC15F2K60S2系列单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时器、IO口、高速A/D转换、看门狗、UART高速异步串行通信口1/串行通信口2,CCP/PWM/PCA,一组高速同步串行端口SPI,片内高精度R/C时钟及高可靠复位等模块,STC15F2K60S2系列单片机几乎包含了数据采集和控制中的所有单元模块。


2.目的:

在工业控制/汽车电子/航空航天等需要高可靠行的系统中,为了防止“系统在异常情况下,受到干扰,MCU/CPU程序跑飞,导致系统长时间异常工作”,通常是引进看门狗,如果MCU/CPU不在规定的时间内按要求访问看门狗,就认为MCU/CPU处于异常状态,看门狗就会强迫MCU/CPU复位,使系统重新从头开始按规律执行用户程序。看门狗复位状态结束后,不影响特殊功能寄存器IAP_ONTR中SWBS/IAP_ONTR.6位的值,单片机根据复位前SWBS/IAP_ONTR.6的值选择是从用户应用程序区启动,还是从系统ISP监控程序区启动。如果看门狗复位前SWBS/IAP_ONTR.6的值为0,则看门口复位状态结束后单片机从系统ISP监控程序区启动。看门狗复位是热启动复位中的软复位之一。

工作原理:看门狗实际上是一个定时器或计数器,简称WDT。单片机运行工作中,看门狗会对单片机机器周期脉冲不停计数,当单片机程序陷入死循环时,单片机程序如果不能及时对看门狗的定时器复位,看门狗就会在其定时器计满溢出时产生一个复位信号,从而使系统重启。

看门狗应用时,首先确定看门狗计数器的位数,然后参考计数脉冲周期计算出看门狗计数溢出所需的时间T,喂狗程序 喂狗时间要小于T,这样隔一段时间喂一次狗,只要程序正常运行,看门狗定时器就不会溢出。一旦出现程序死循环故障,喂狗程序失败,不能对看门狗定时器及时清零,就会导致计时器溢出,重启系统。

3.特殊寄存器:

STC15系列单片机内部也引进了此看门狗功能,使单片机系统可靠性设计变得更加方便/简洁。为此功能,我们增加如下特殊功能寄存器WDT_CONTR:

WDT_CONTR:看门狗(Watch—dog—Timer)控制寄存器

SFR name

Address

bit

B7

B6

B5

B4

B3

B2

B1

B0

WDT_CONTR

0C1H

### STC15F2K60S2 单片机看门狗功能及配置 #### 看门狗定时器概述 STC15F2K60S2单片机内置了一个硬件看门狗定时器(WDT),用于监控系统的运行状态。当系统由于某种原因陷入死循环或异常停止工作时,WDT会在超时时触发复位操作,使系统恢复正常工作。 #### WDT寄存器说明 为了实现对WDT的操作,该单片机提供了几个重要的控制寄存器: - **WDTRST** (Watch Dog Timer Reset Register): 当写入特定序列时会重启计数器。 - **RSTSRC** (Reset Source Control/Status Register): 控制和指示复位源的状态。 具体来说,在`RSTSRC`中有两个与WDT有关的位: - `WDTRF`: 表明是否由WDT引起过复位事件。 - `WDEN`: 启用或禁用WDT功能[^1]。 #### 初始化设置 要启用并正确配置WDT, 需要在初始化阶段执行如下代码: ```c #include <reg52.h> void init_watchdog() { RSTSRC |= 0x80; // 设置 WDEN=1 开启看门狗 EA = 1; // 打开总中断允许 } ``` 这段代码通过向`RSTSRC`寄存器发送命令来激活WDT,并开启全局中断支持以便处理可能发生的复位请求。 #### 喂狗机制 为了避免不必要的复位发生,应用程序需要定期重置WDT计数值(即喂狗), 这可以通过调用下面函数完成: ```c void feed_watchdog(void){ WDTRST = 0xA5; WDTRST = 0xF0; // 发送指定序列以清零计数器 } ``` 此过程应该放置在一个安全的地方,比如主循环内部,确保每经过一定时间间隔就刷新一次计数器,防止其溢出引发意外复位。 #### 关闭看门狗 如果不再需要使用WDT,则可通过清除相应的标志位将其关闭: ```c void disable_watchdog(){ RSTSRC &= ~0x80; // 清除 WDEN 来停用看门狗 } ``` 以上就是关于如何在基于Keil C编译环境下的STC15F2K60S2单片机项目中配置和管理看门狗定时器的方法介绍。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值