关于STC15F2K60S2看门狗的应用

2018-05-14 22:34:27编辑:什么鱼 关键字: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

name

WDT_FLAG

_

EN_WDT

CLR_WDT

IDLE_WDT

PS2

PS1

PS0

WDT_FLAG: 看门狗溢出标志位,当溢出时,该位由硬件置1,可用软件将其清零。

EN_WDT: 看门狗允许位,当设置为“1”时看门狗启动。

CLR_WDT: 看门狗清“0”位,当设为“1”时,看门狗重新计数。硬件将自动清“0”此位。

IDLE_WDT: 看门狗“IDLE”模式位,当设置为“1”时,看门狗定时器在“空闲模式”计数,当清”0”该位时,看门狗定时器在“空闲模式”时不计数。

PS2,PS1,PS0:看门狗定时器分频值,如下表所示

PS2

PS1

PS0

Pre_scale预分频

WDT overflow Time @20MHz

0

0

0

2

39.3ms

0

0

1

4

78.6ms

0

1

0

8

157.3ms

0

1

1

16

314.6ms

1

0

0

32

629.1ms

1

0

1

64

1.25s

1

1

0

128

2.5s

1

1

1

256

5s

看门狗溢出时间 = (12 *Pre—scale*32768)/Oscillatorfrequency

设时钟为12MHz

看门狗溢出时间 = (12 *Pre—scale*32768)/12000000= Pre—scale*393216/12000000

PS2

PS1

PS0

Pre_scale预分频

WDT overflow Time @12MHz

0

0

0

2

65.5ms

0

0

1

4

131.0ms

0

1

0

8

262.1ms

0

1

1

16

524.2ms

1

0

0

32

1.0485s

1

0

1

64

2.0971s

1

1

0

128

4.1943s

1

1

1

256

8.3886s

设时钟为11.0592MHz

看门狗溢出时间 = (12 *Pre—scale*32768)/11059200 = Pre—scale*393216/11059200

PS2

PS1

PS0

Pre_scale预分频

WDT overflow Time @11.0592MHz

0

0

0

2

71.1ms

0

0

1

4

142.2ms

0

1

0

8

284.4ms

0

1

1

16

568.8ms

1

0

0

32

1.1377s

1

0

1

64

2.2755s

1

1

0

128

4.5511s

1

1

1

256

9.1022s

4.程序:

用LED灯的亮表示程从头序运行,用延时函数改变两次喂狗时间间隔。

/****************************测试程序******************************/

#include

sbit led = P0^0;

sfr WDT_CONTR = 0xel;/*定义STC单片机中新加入的看门狗程序*/

void delay(unsigned int x)/*定义延时函数*/

{

while(x--);

}

void main(void)

{

WDT_CONTR = 0x35;/*设置模式计数器值*/

led = 1;

delay(20000);

led = 0;

while(1)

{

WDT_CONTR = 0x35;

delay(50000);

}

 

}

(1)程序开始后,点亮发光二极管后延时一段时间熄灭,延时不能过长,若两次喂狗时间间程序运行时间大于看门狗溢出时间,看门狗将复位单片机,可调节这个时间,让看门狗是否复位。

(2)喂狗时使用和设定看门狗寄存器同样的语句,只要看门狗寄存器中CLR—WDT位置“1”,看门狗定时器重新计数,由硬件自动将其清零。

(3)演示为发光二极管亮后熄灭不会再亮,这说明程序没被复位,while循环中看门狗被正常喂狗,若将WDT_CONTR= 0x35;去掉程序将会不停复位,因为看门狗定时器溢出复位。


关键字:STC15F2K60S2  看门狗

来源: eefocus 引用地址:http://www.eeworld.com.cn/mcu/article_2018051439263.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:stm8s单片机实现多通道转换
下一篇:STM8S精确延时+LED闪烁

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STC15F2K60S2芯片A/D转换器的应用

A/D转换中断,EADC = 0,禁止A/D转换中断。2.6.中断优先级控制寄存器IPIP:中断优先级控制寄存器(可位寻址)SFR nameAdessBitB7B6B5B4B3B2B1B0IPB8HNamePPCAPLVDPADCPSPT1PX1PT0PX0PADC:A/D转换中断优先级控制位。当PADC = 0时,A/D转换中断为最低优先级中断(优先级0)当PADC = 1时,A/D转换中断为最高优先级中断(优先级1)3.A/D转换器的结构 4.程序/****************************************************///利用STC12C5A60S2AD转换,实现温度计//函数名
发表于 2018-06-21 20:07:59
STC15F2K60S2芯片A/D转换器的应用

STC15F2K60S2芯片PWM的应用

1.目的脉宽调制(PWM,Pulse Width Modulation)是一种使用程序来控制波形占空比、周期、相位波形的技术,在三相电机驱动、D/A转换等场合有广泛的应用。STC15系列单片机的PCA模块可以通过设定各自的寄存器PCA_PWMn(n=0,1,2.下同)中的位EBSn_1/PCA_PWMn.7及EBSn_0/PCA_PWMn.6,使其工作于8位PWM或7位PWM或6位PWM模式。2.与CCP/PWM/PCA应用有关的特殊功能寄存器符号描述位地址及其符号复位值地址B7B6B5B4B3B2B1B0CCONPCA Control RegisterD8HCFCR---CCF2
发表于 2018-06-20 22:28:17
STC15F2K60S2芯片PWM的应用

STC15F2K60S2芯片A/D转换器的应用

A/D转换中断,EADC = 0,禁止A/D转换中断。2.6.中断优先级控制寄存器IPIP:中断优先级控制寄存器(可位寻址)SFR nameAdessBitB7B6B5B4B3B2B1B0IPB8HNamePPCAPLVDPADCPSPT1PX1PT0PX0PADC:A/D转换中断优先级控制位。当PADC = 0时,A/D转换中断为最低优先级中断(优先级0)当PADC = 1时,A/D转换中断为最高优先级中断(优先级1)3.A/D转换器的结构 4.程序/****************************************************///利用STC12C5A60S2AD转换,实现温度计//函数名
发表于 2018-06-20 22:27:13
STC15F2K60S2芯片A/D转换器的应用

STC15F2K60S2内E2PROM应用

存储区要分开来,以使程序不会遭到破坏。这样就节省了片外资源,使用起来也更加方便。下面就详细介绍STC 单片机内置EEPROM 及其使用方法2.STC15F2K60S2系列单片机的内部结构图STC15F2K60S2系列单片机的内部结构框图如下图所示,STC15F2K60S2系列单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时器、IO口、高速A/D转换、看门狗、UART高速异步串行通信口1/串行通信口2,CCP/PWM/PCA,一组高速同步串行端口SPI,片内高精度R/C时钟及高可靠复位等模块,STC15F2K60S2系列单片机几乎包含了数据采集和控制中的所有单元模块。  
发表于 2018-06-20 22:25:38
STC15F2K60S2内E2PROM应用

STC15F2K60S2实现A/D转换

1 实现功能以中断方式进行A/D转换,取10位精度,并送P3和P2口LED灯显示(低电平驱动),P3口显示最高2位,P2口显示第8位。2 程序代码#include"STC15F2K60S2.h"unsigned char data adc_datah;         //定义保存AD转换结果的绝对地址unsigned char data adc_datal;void main(){    unsigned int i;    P1ASF=0x10;            
发表于 2018-06-20 22:23:20
STC15F2K60S2实现A/D转换

STC15F2K60S2串口通信程序代码

//**********************************************//STC15F2K60S2串口通信程序,将串口接受到的数据从串口发出去//采用22.1184M晶振,波特率115200//为方便大家调试,特附该程序的项目工程文件下载地址,下载打开即可调试下载到单片机////*********************************************#include <stc15fxxxx.h> //调用stc15f系列头文件,下载地址: http://pan.baidu.com/s/1eRUbjLS/*************常量定义
发表于 2018-06-20 22:18:08
STC15F2K60S2串口通信程序代码

小广播

何立民专栏

单片机及嵌入式宝典

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

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