4、时钟与看门狗介绍
看门狗

1.在WDTC寄存器中设置看门狗定时器的固定装载值; 2.在WDMOD寄存器中设置模式,并使能看门狗; 3.通过向WDFEED寄存器顺序写入0xAA和0x55,启动 看门狗; 4.在看门狗向下溢出之前应当再次喂狗以防止复位 或中断。
• 若看门狗设置为溢出复位模式,那么当看 门狗计数器向下溢出时,会引发内部复位, 程序计数器将从0x0000 0000开始,与外部 复位一样。通过检查看门狗超时标志 (WDTOF)可以判断系统复位是否由看门 狗引发。WDTOF标志必须由软件清零。
4.16.2 看门狗寄存器描述
• 看门狗包含4个寄存器,见下表
看门狗寄存器映射
看门狗寄存器描述
•
1.看门狗模式寄存器(WDMOD,0xE000 0000)
操作示例: WDMOD=0x02;//看门狗溢出时,产生复位
看门狗寄存器描述 • 看门狗的操作是通过WDEN位和WDRESET位来控制的。 一旦WDEN、WDRESET位置位,就无法使用软件将其清 零。这两个标志由外部复位或看门狗定时器溢出清零。
2.看门狗定时器常数寄存器 (WDTC,0xE000 0004)
• WDTC寄存器决定看门超时值,见表 。当喂狗时序产生 时,WDTC的内容重新装入看门狗定时器。它是一个32位 寄存器,最小值为0xFF,如写入一个小于0xFF的值,会 使0xFF装入WDTC。因此,WDT的最小时间间隔为 tPCLK×256×4,最大时间间隔为tPCLK×232×4。WDTC寄 存器描述见表。WDT初始化,如下程序所示 • WDTC=0x10000;//设置WDT定时值 • WDMOD=0x03; //设置WDT工作模式,使能WDT
看门狗
PPT制作:忻淑怡 演讲: 陈恺霖 收集资料:周焕强 赵一锋
看门狗开关定值计算公式

看门狗开关定值计算公式一、独立看门狗用途独立看门狗通常用于防止软件意外卡死,在软件故障之后能够重启程序;二、独立看门狗时钟源独立看门狗使用的是专用的低速时钟,以GD32为例,其独立看门狗使用的是IRC40K时钟,以STM32为例,其独立看门狗使用的是LSI(40KHz);三、独立看门狗寄存器分析看门狗可以理解为是一个定时器,知道其时钟源,再根据想要的触发周期,计算出分频系数和重装载值就可以了。
与定时器不同的是独立看门狗是独立于主程序运行的,即使在系统时钟异常,程序无法运行的情况下,独立看门狗仍然能够完全独立工作;以STM32F10x系列为例:3.1 预分频寄存器(IWDG_PR):该寄存器用于存储独立看门狗时钟的分频系数,如期望对独立看门狗时钟40KHz进行64分频,则该寄存器应写入4,有人可能要问了,为啥不写入64呢?no,dear,不是这样的。
这里我们就要看寄存器的描述:在上图中可以看出,32位寄存器IWDG_PR中,只有低3位是可以读写的,由框中的对应关系可知,分频系数为64时,其实际写入寄存器的值为0x04,其余分频系数以此类推;3.2 重装载寄存器(IWDG_RLR)该寄存器用于存储递减计数器的重装载值,顾名思义,“重装载值”意思就是预先设置一个值,计数启动后,递减计数器从该值开始递减,当递减至0的时候就将该值赋给递减计数器,继续开始下一轮递减,周而复始,直至计时结束;如期望计数器计数达到500,则该寄存器应写入0x1F4。
有同学可能要问了,如果我要计数达到5000呢?那我告诉你,是不行的。
我们仍然来看该寄存器的描述:由上图分析得知,该32位寄存器只有低12位支持读写操作,即最大支持的计数值等于2的12次方等于4096。
那么这里就要注意了,如果你选则的分频系数比较大,即计数时钟频率较低,受最大计数值的限制,就有可能达不到你所期望的计数周期;上图是手册中帮大家计算出来了各种分频系数下最大支持的计数周期。
看门狗

看门狗
在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位,所以在使用有看门狗的芯片时要注意清看门狗。
F28335看门狗电路具有一个8位的增计数器。
当计数达到最大值后,看门狗模块将产生一个具有512个OSCCLK周期长度的低电平信号,为防止这种情况的发生,需要周期的复位计数器。
OSCCLK:晶振是外部加入的时钟,系统内部有个锁相环可以倍频晶振频率。
倍数由SYNR和REFDV寄存器的值来控制
(一)相关寄存器描述
WDCNTR寄存器的各位信息及描述
WDKEY寄存器各位信息及描述
WDCR寄存器各位信息及描述
(SCSR)看门狗控制状态寄存器省略
(二)Device.c中的看门狗程序及解析
void ServiceDog(void)
{
EALLOW;
SysCtrlRegs.WDKEY = 0x0055;
SysCtrlRegs.WDKEY = 0x00AA;
EDIS;
//复位寄存器此寄存器采用EALLOW保护,先向其写入0x55,紧跟着写入0xAA,会将WDCNTR计数器复位到0;读WDKEY返回WDCR寄存器的当前值
}
void DisableDog(void)
{
EALLOW;
SysCtrlRegs.WDCR= 0x0068; // 0000 0000 0110 1000 关闭WD WDDIS位为1.表示禁止看门狗工作
EDIS; }。
看门狗

看门狗(WatchDog)1.看门狗的作用•监测单片机程序的运行状态的芯片•看门狗(WatchDog)是计算机引入的一种专门的复位监控电路。
•一旦MCU运行出现故障,就强制对MCU进行硬件复位,确保MCU安全可靠运行。
复位嵌入式系统在无人值守的时候出现异常导致‘死机’现象看门狗的工作原理•MCU完成一次喂狗操作•在看门狗“饥饿”前等待下次操作•程序异常,喂狗超时,复位单片机•程序正常,狗被喂饱,等待再次喂狗•看门狗芯片和单片机的一个I/O口连接,该I/O口通过程序的控制定时的向看门狗送入高电平(低电平),这一程序分散的放在其他单片机控制程序之间,一旦单片机因为干扰跑飞进入死循环,写看门狗的程序就不能被执行,看门狗就会发出一个复位信号,复位单片机。
喂狗•看门狗就是一个计数器,由于位数有限计数器能够装的数值是有限的(比如8位的最多装256个数,16位的最多装65536个数),从开启看门狗那刻起,他就不停的数机器周期(12个时钟周期),输一个机器周期加1,加到计数器盛不下了(溢出)就产生一个复位信号,重启系统。
•我们在设计程序时,先根据看门狗计数器的位数和系统的时钟周期算一下计满数需要的时间,就是说在这个时间内看门狗计数器是不会装满的,然后在这个时间内告诉他重新开始计数,就是把计数器清零,这就是喂狗。
例子:•8051单片机选用12MHz晶振,一个机器周期为1us,如果看门狗是十六位的,最大计数65536个,那么从0开始计到65535需要65ms,所以我们可以在程序的50ms左右清零一次计数器(喂狗),让他从新从零开始计,再过50ms,再清,---,这样下去只要程序正常运行,计数器永远不会计满,也就永远不会被看门狗复位。
•看门狗都是启动之后就不能被关闭,只能系统复位(重新断电再上电)才能关闭。
看门狗的两个种类一般,看门狗主要是针对在实际应用环境中出现强烈干扰而导致程序意外跑飞的现象将看门狗的使用看为解决程序本身存在BUG导致跑飞的问题是一种误区AT89S52的看门狗定时器(WDT)•WDT由14位计数器和特殊功能寄存器中的看门狗复位存储器(WDTRST)构成。
看门狗定时器的使用介绍

看门狗溢出时间
时钟来源
看门狗溢出周期
12kHz(WDTCLK) 32kHz(RTC)
System Frequency/4 注:System Frequency 为 480kHz
2.73066s 1.00000s 0.27306s
总共有三种方法会产生系统复位,如下所示: ·正常操作时由 RES引脚发生复位 ·在暂停模式由 RES引脚发生复位 ·正常操作时由看门狗定时器超时发生复位
但也有可能进入死循环状态。有了 CLR WDT1 和 CLR WDT2 交换使用的功能,就可以避免这种情
况的出现。当程序进入循环后,例如:
LOOP: ……
CLR ……
WDT1
;在 loop 中执行第一句清零 WDT 语句
SZ
……
HT47R20A-1 看门狗定时器(WDT)使用介绍
JMP LOOP
CLR WDT2
;在 loop 后执行第二句清零 WDT 语句
……
第一次执行 CLR WDT1 指令能够清除 WDT,若发生死循环,则循环过程中再次执行 CLR WDT1
指令都不能清除看门狗定时器,因此还是能够产生 WDT 溢出,实现系统复位,从而跳出死循环状
态。
……
wdt_ov:
……
说明
1.CLR WDT 指令和 CLR WDT1 指令的机器码是相同的,即这两条指令是等效的。 2.CLR WDT1 和 CLR WDT2 必须交互使用才能清除看门狗定时器,如果重复使用,则不能清除看
门狗定时器。如:
…… CLR WDT1
;可以清除看门狗定时器的内容
……
CLR WDT2
u
u
0
1
1
什么是看门狗电路

什么是看门狗(watchdog)看门狗,又叫watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗,一个输出到MCU的RST端,MC U正常工作的时候,每隔一端时间输出一个信号到喂狗端,给WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就回给出一个复位信号到MCU,是MCU复位. 防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。
工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。
所以在使用有看门狗的芯片时要注意清看门狗。
硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。
那么定时时间到后就会使单片机复位。
常用的WDT芯片如MAX813 ,5045, IMP 8 13等,价格4~10元不等.软件看门狗技术的原理和这差不多,只不过是用软件的方法实现,我们还是以51系列来讲,我们知道在5 1单片机中有两个定时器,我们就可以用这两个定时器来对主程序的运行进行监控。
我们可以对T0设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。
对于T1我们用来监控主程序的运行,我们给T1设定一定的定时时间,在主程序中对其进行复位,如果不能在一定的时间里对其进行复位,T1 的定时中断就会使单片机复位。
在这里T1的定时时间要设的大于主程序的运行时间,给主程序留有一定的的裕量。
而T1的中断正常与否我们再由T0定时中断子程序来监视。
watch dog timer技术原理

watchdogtimer技术原理在嵌入式系统中,实时时钟(RTC)与看门狗(WatchDog)是两个非常重要的组成部分。
RTC用于提供时间基准和定时功能,而WatchDog则用于系统出现异常情况时的一种保护机制。
今天,我们主要来谈谈看门狗定时器(WatchDogTimer)的基本原理及其在嵌入式系统中的应用。
一、看门狗定时器的基本原理看门狗定时器是一种被动设备,它有一个计数器,当计数溢出时,它会自动复位CPU或者向CPU发送一个中断信号。
如果复位信号没有到达CPU或者CPU没有响应溢出信号,那么这个看门狗定时器就会不断地产生复位信号,导致系统崩溃。
因此,为了防止系统崩溃,我们通常会在程序中设置一个手动复位看门狗定时器的指令,以使系统恢复正常运行。
看门狗定时器可以分为软件看门狗和硬件看门狗两种类型。
软件看门狗通过修改CPU的系统时钟信号来实现其计数功能,硬件看门狗则通过一个独立的定时器芯片来实现其计数功能。
在实际应用中,硬件看门狗更为常见,因为它具有更高的可靠性和稳定性。
二、嵌入式系统中的看门狗定时器嵌入式系统中的看门狗定时器通常被用来保护系统的正常运行。
当系统出现异常情况时,看门狗定时器会自动复位CPU或者向CPU发送一个中断信号,从而避免系统崩溃。
具体来说,嵌入式系统中的看门狗定时器通常有以下几种应用方式:1.嵌入式系统的时钟基准:嵌入式系统的时钟基准通常由RTC和看门狗定时器共同完成。
首先,RTC提供时间基准和定时功能;其次,看门狗定时器用来检测系统是否正常运行。
如果系统出现异常情况,看门狗定时器会自动复位CPU或者向CPU发送一个中断信号,从而保证系统的时钟基准不会出现偏差。
2.嵌入式系统的安全保护:嵌入式系统中的安全保护通常由看门狗定时器和其他的保护机制共同完成。
当系统出现异常情况时,看门狗定时器会自动复位CPU或者向CPU发送一个中断信号,从而避免系统崩溃;同时,其他的保护机制可以用来检测系统的其他异常情况,如电源异常、通信异常等。
看门狗实验

看门狗实验1. 为什么要看门狗?看门狗的原理是什么?外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)它的基本原理为,给看门狗设置一个时间周期,如果在这个周期内程序不能正常运行结束,定时器会自动益处,则系统会自动复位,使系统重新运行进而得到监控系统的作用。
假设程序运行的时间为Tp,定时器时间为Ti,Ti>Tp,在Ti时间内程序正常结束则不会发生益处的现象,如果受干扰等原因系统不能在Tp时刻内修改计数器的值,则在Ti时刻时系统会自动复位,引发系统重新运行。
一般情况下都是应用程序在运行结束后去喂狗,当应用程序出现异常而不能去喂狗时,在超过看门狗定时器的时间范围后,cpu会复位,起始喂狗的过程就是给看门狗的寄存器置位,当程序开始运行时,看门狗的计数器开始递减,在减到零之前必须喂狗,否则系统会复位,当减到零时还没有喂狗则系统复位。
2. 看门狗的功能1)作为常规功能可以产生中断,通用的中断用16bit定时器2)作为看门狗使用,当时钟计数器减为0时(超时),他将产生一个128个时(PCLK)钟的的复位信号我们常见的时钟有3个,FCLK,HCLK,PCLK,他们的工作频率分别是400MHz,400/3MHz,和400/6MHz,看门狗使用的是PCLK时钟。
下图为看门狗的电路示意图PCLK经过两次降频,prescaler的值从0到256-1,Division_factor的值为16,32,64,128。
看门狗定时器记数值的计算公式如下:t_watchdog的值是寄存计数器(WDTCNT)多长时间自减一次,他的单位是时间,一旦看门狗定时器被允许,看门狗定时器数据寄存器(WTDAT)的值不能被自动的装载到看门狗计数器(WTCNT)中,因此,看门狗启动前要将一个初始值写入看门狗计数器(WTCNT)中。
第12章 看门狗

WD具有如下特征: (1) 8位WD计数器,作用是在上溢时产生一个系统复位 信号。 (2) 6位的自行计数器,用于WD预定标,共6种选择。 (3) 一个WD复位密钥(WDKEY)寄存器。当一个55h值后 紧随着一个AAh值写入WDKEY时,则WD计数器清零,当 不正确的值写入时,则产生一个复位信号。
wd预定标选择8位wd计数器55aa探测器探测器判断逻辑逻辑wdclk系统复位请求wd复位关键字寄存器寄存器wd检验位101wd模块结构框图122wd操作1221wd的时钟看门狗wd定时器的时钟wdclk是一个低频时钟wdclk由cpu的输出时钟clkout提供
第12章 看门狗(WD)定时器
看门狗(WD)定时器外设监视软件和硬件的运行的可靠性。 12.1 看门狗定时器概述
0 0 0 1 1
0 1 1 0 0
X 0 1 0 1
1 2 4 8 16
3.28 6.6 13.1 26.2 52.4
1 1
1 1
0 1
32 64
104.9 209.7
注:CLKOUT默认为 40MHz
位7:WDFLAG,看门狗标志位。该位标识WD定时器是否产生了一
个系统复位。
0:表明自上次清除该位后,WD定时器还没有产生复位。 1:表明自上次清除该位后,WD定时器已经产生了复位。 位6:WDDIS,看门狗禁止位。仅当SCSR2寄存器的WD OVERRIDE位 为1时,该位才能被写。
0:看门狗被使能。
数器写无效。向WD复位关键字寄存器写入正确的序列会清除
WDCNTR并且可阻止系统复位,但是并不会清除自行计数器。 (2) WD复位关键字寄存器(WDKEY)—当一个55h值后紧随写入一 个AAh值,则清除WDCNTR。任何其他值都会引起系统复位。 位7-0:数据值。这些只写数据位包含了8位复位关键字值, (3) WD定时器控制寄存器(WDCR) —包含用于看门狗配置的如 下控制位:WD禁止位;WD标志位;WD检验位(3个);WD预定 标选择位(3个)。
51单片机的看门狗

“看门狗〞概念及其应用在由单片机构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进展实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗〞(watch dog)。
参加看门狗电路的目的是使单片机可以在无人状态下实现连续工作,其工作过程如下:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过单片机的程序控制,使它定时地往看门狗芯片的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,给看门狗引脚送电平的程序便不能被执行到,这时,看门狗电路就会由于得不到单片机送来的信号,便将它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,从而单片机将从程序存储器的起始位置重新开场执行程序,这样便实现了单片机的自动复位。
通常看门狗电路需要一个专门的看门狗芯片连接单片机来实现,不过这样会给电路设计带来复杂,STC单片机内部自带有看门狗,通过对相应特殊功能存放器的设置就可实现看门狗的应用,STC89系列单片机内部有一个专门的看门狗定时器存放器,Watch Dog Timer 存放器,其相应功能见下个知识点。
看门狗定时器存放器(WDT_CONTR)STC单片机看门狗定时器存放器在特殊功能存放器中的字节地址为E1H,不能位寻址,该存放器用来管理STC单片机的看门狗控制局部,包括启停看门狗、设置看门狗溢出时间等。
单片机复位时该存放器不一定全部被清0,在STC下载程序软件界面上可设置复位关看门狗或只有停电关看门狗的选择,大家根据需要可做出适合自己设计系统的选择。
其各位的定义如表4.2.1所示。
表1看门狗定时器存放器(WDT_CONTR)EN_WDT:看门狗允许位,当设置为“1〞时,启动看门狗。
嵌入式系统之WATCHDOG(看门狗)概述

1。
概述:WATCHDOG对于没有底层开发经验的开发人员来说,可能比较陌生,但是它在系统起到非常重要的作用,相当于系统警察,当系统发生严重错误(如程序进入死循环等)不能恢复的时候,W ATCHDOG能够让系统重启。
WATCHDOG的应用主要是在嵌入式操作系统中,避免了系统在无人干预时长时间挂起的情况。
2。
W ATCHDOG模块在比较高档的嵌入式硬件芯片中,都有一个W ATCHDOG模块,如果在MCU/MPU中没有集成W ATCHDOG,一般会在此嵌入式系统中加一个专门的W ATCHDOG芯片来实现WATCHDOG机制。
此模块主要的功能包括:1 提供WATCHDOG控制寄存器和配置寄存器,供软件开发人员根据系统需要进行灵活配置。
2 提供一接口,使应用软件能够定时给W ATCHDOG“喂狗”。
3 提供W ATCHDOG机制,当系统进入不可恢复错误时,能产生一个不可屏蔽中断来通知系统自动重启(一般这样,也有改变为其他处理方式的),只有相应的复位信号才能清除它。
3。
WA TCHDOG的实现方式:对于W ATCHDOG模块的实现,不同的硬件芯片有不同的方式,这里介绍2中工作方式:1。
利用系统操作系统时钟来实现WA TCHDOG在Intel XScale系列中,利用了操作系统时钟的比较寄存器3(OSMR3)做为WA TCHDOG 的运行主体,当系统的W A TCHDOG激活后,软件就必须在一定时间内从OSMR3读出当前的计数,然后加上一定的计数值(下一次到期的计数值),再写回到OSMR3中,软件一直周期性的重复这个过程,如果软件没有重新写入新的计数使定时器到期,此OSMR3会利用一个GPIO触发系统复位。
2。
芯片的专门W ATCHDOG模块对于现在的很多芯片,已经集成了专门的WATCHDOG模块,比如ARM11的芯片,WATCHDOG模块中,提供了比较灵活的配置和控制机制:A。
宽范围设置过期时间间隔,从0。
窗口看门狗的作用是什么?窗口看门狗复位分析

窗口看门狗的作用是什么?窗口看门狗复位分析
一,窗口看门狗介绍独立看门狗的喂狗范围0-X(X由预分频器和重装载值决定,最大值为0xFFF)
独立看门狗相关介绍:传送门:独立看门狗
相比于独立看门狗,窗口看门狗限定了喂狗时间段(由喂狗上限和喂狗下限值限定的喂狗范围)
所以形象的称作窗口看门狗
二,为什么需要窗口看门狗独立看门狗:在0-重载值之间任意时间都可以喂狗
如果程序跑飞后又跑回正常
或者跑乱的程序正好执行了刷新看门狗
这样独立看门狗是不能检查到并复位芯片的
窗口看门狗:限制了喂狗时间
如果程序跑飞并且在限制的时间段喂狗是很困难的
从而保证了程序的正常运行
1234567891011
三,独立看门狗和窗口看门狗比较独立看门狗:
驱动:由LSI驱动,即使主时钟发生故障它仍有效
适用场景:
作为主程序之外能够完全独立工作
对时间精度要求较低
123456
窗口看门狗:
驱动:由APB1时钟分频后得到时钟驱动
适用场景:
在精确计时窗口起作用的程序。
看门狗的计算公式

看门狗的计算公式
摘要:
1.看门狗定时器的概念和作用
2.看门狗定时器的计算公式
3.计算公式的实际应用
正文:
1.看门狗定时器的概念和作用
看门狗定时器,又称为监视定时器,是一种电子定时器,主要用于检测系统的运行状态。
当系统出现异常时,看门狗定时器可以自动进行干预,以防止系统进一步损坏或发生故障。
因此,看门狗定时器在电子设备中具有非常重要的作用,可以提高系统的可靠性和稳定性。
2.看门狗定时器的计算公式
看门狗定时器的计算公式为:
看门狗定时时间= 系统时钟周期×(1 + 设定阈值)
其中,系统时钟周期是指系统时钟发生一次跳变的时间间隔;设定阈值是指看门狗定时器允许系统时钟周期的最大偏差。
当系统时钟周期超过设定阈值时,看门狗定时器将产生中断信号,触发系统复位。
3.计算公式的实际应用
看门狗定时器的计算公式在实际应用中具有重要意义。
通过合理设置系统时钟周期和设定阈值,可以确保系统在正常运行状态下不会发生误操作,同时,当系统出现异常时,看门狗定时器可以及时进行干预,保护系统的安全。
例如,假设系统时钟周期为1ms,设定阈值为0.5ms,则看门狗定时时间为1.5ms。
这意味着,只要系统时钟周期在1.5ms 内波动,看门狗定时器就不会产生中断信号。
然而,如果系统时钟周期超过1.5ms,看门狗定时器将立即触发系统复位,以防止系统进一步损坏。
总之,看门狗定时器的计算公式对于保证系统的可靠性和稳定性具有重要作用。
第2章 AT89S52单片机的片内硬件结构(4)时钟电路时序复位操作

22
23
2.7.2 复位电路设计
复位电路采用上电自动复位和按钮复位两种方式。最简单 的上电自动复位电路。
1.上电自动复位电路 给电容C 充电加给RST引脚一个短
器、内部RAM和SFR中内容均保持进入空闲模式前状态。 2. 空闲模式退出 两种方法退出,
响应中断方式, 硬件复位方式。
35
2.8.2 掉电运行模式 1. 掉电模式的进入 用指令把PCON寄存器的PD位置1,便进入掉电模式。在
掉电模式下,进入时钟振荡器的信号被封锁,振荡器停止 工作。
0 0
33
2.8.1 空闲模式 1. 空闲模式进入 如把PCON中的IDL位置1,则把通往CPU的时钟信号关断,便进
入空闲模式。
0
34 34
2.8.1 空闲模式 虽然振荡器运行,但是CPU进入空闲状态。 所有外围电路(中断系统、串行口和定时器)仍继续工作,
CPU内部SP、PC、PSW、A、P0~P3端口等所有其他寄存
30
看门狗的启动和清0的方法是一样的。
实际应用中,用户只要向寄存器WDTRST(地址为A6H) 先写入1EH,接着写入E1H,看门狗定时器便启动计数。
为防止看门狗定时器启动后产生不必要的溢出,在执行程 序的过程中,应在16384µs(时钟为12MHz时)内不断地复 位清“0” 看门狗。
31
2.10 低功耗节电模式 两种低功耗节电工作模式:空闲模式(idle mode)和掉
电保持模式(power down mode)。 掉电保持模式下,Vcc可由后备电源供电。 两种节电模式的内部控制电路。
7种时钟的简介

7种时钟的简介1.RTC时钟为芯片内部的RTC提供时钟。
来源:HSE_RTC(HSE分频得到)、LSE(外部32.768KHZ的晶体提供)、LSI(32KHZ)。
控制: RCC备份域控制寄存器RCC_BDCR:RTCSEL位控制2.独立看门狗时钟IWDGCLK,由LSI提供。
I2S时钟:由外部的引脚I2S_CKIN或者PLLI2SCLK提供。
以太网PHY时钟:429没有集成PHY,只能外接PHY芯片,比如LAN8720,那PHY时钟就由外部的PHY芯片提供,大小为50M。
B PHY时钟429的USB没有集成PHY,要想实现USB高速传输,只能外接PHY芯片,比如USB33000。
那USB PHY时钟就由外部的PHY芯片提供。
4.锁相环时钟HSE或者HSI先经过一个分频因子M进行分频,然后再经过一个倍频因子N,然后再经过一个分频因子P,最后成为锁相环时钟PLLCLK = (HSE/M) * N / P = 25/25 * 360 / 2 = 180M5. AHB高速总线时钟为AHB总线的外设提供时钟、为Cortex系统定时器提供时钟(SysTick)、为内核提供时钟(FCLK)。
AHB为advanced high-performance bus。
来源:系统时钟分频得到。
控制: RCC_CFGR 时钟配置寄存器的HPRE位6.PCLK1时钟PCLK1:APB低速总线时钟,最高为45M。
为APB1总线的外设提供时钟。
2倍频之后则为APB1总线的定时器提供时钟,最大为90M。
来源:HCLK分频得到。
控制: RCC_CFGR 时钟配置寄存器的PPRE1位7.PCLK2时钟PCLK2:APB高速总线时钟,最高为90M。
为APB2总线的外设提供时钟。
2倍频之后则为APB2总线的定时器提供时钟,最大为180M。
来源:HCLK分频得到。
控制: RCC_CFGR 时钟配置寄存器的PPRE2位APB1 定时器有 TIM2, TIM3 ,TIM4, TIM5, TIM6, TIM7, TIM12, TIM13,TIM14-90M APB2 定时器有 TIM1, TIM8 ,TIM9, TIM10, TIM11—180M。
STM32单片机的独立看门狗和窗口看门狗的特点及用法解析

STM32单片机的独立看门狗和窗口看门狗的特点及用法解析1.看门狗介绍看门狗这东西虽然简单,但我相信绝大多程序员没有足够重视它。
使用看门狗保证系统正常地运行是非常有必要的。
我们在设计产品时,代码以及硬件设计缺陷或是外界电磁干扰都有可能使系统死机,如果不能正常对其进行复位,系统的可靠性将大打折扣。
看门狗分为软件看门狗和硬件看门狗两类,其原理都是使用一个独立定时器来计时,超出时间就会产生复位信号,主要区别看是否具有独立的硬件结构,如果有,就是硬件看门狗,如果是一个普通定时器实现的那么就是软件看门狗。
STM32F407片内有两个看门狗:独立看门狗IWDG以及窗口看门狗WWDG,下面来讨论各自的特点和用法。
2.IWDG的特点以及使用IWDG是一个独立看门狗,具有独立于系统的时钟,与片外看门狗更为相似,使用片内独立的阻容时钟发生电路计时,记录时间为=(时钟频率(40KHz)/ 分频数)*IWDG_SetReload (t),t《0xFFF.也就是说记录的最大设定的复位时间为(1/40K)*256*0xFFF = 26.2 S。
由于IWDG使用的时钟本身不准确,会因为漂移产生一定变化,喂狗时应该给出一定的裕量。
另外,这个时钟与系统时钟并无关联,所有也不能与系统进行同步产生中断,一旦定时时间到后就会产生复位信号,系统来不及存储当前运行状态就会重启,可以在要求不高的场合使用。
3.WWDG的特点以及使用WWDG具有一个独立的7位定时器,使用系统时钟,可以产生系统中断。
其定时最时间为(1/PCLK1)* 4096)* 分频系数(最大为8)*(0x7F –0x3F)= 58ms.其复位的条件是:(1)当计数器的数值从0x40减到0x3F(2)当刷新看门狗时计数器的数值大于窗口上限值时满足任何一条都可以产生复位信号。
通常情况下设置窗口上限值为0x7F,下限值默认为0x40,计数器向下数到0x40就会产生中断,下个910us后变为0x3F就会复位系统。
watchdog

watchdog 原理看门狗,⼜叫watchdog timer,主要⽤来监控、管理CPU的运⾏状态,并对处于异常状态中的CPU进⾏复位操作,使其能重新⼯作。
看门狗可分为硬件看门狗和软件看门狗两种。
硬件看门狗的主体是⼀个定时电路,并由被监控CPU提供周期性“喂狗”信号,对定时器清零(俗称“清狗”)。
CPU正常⼯作时,由于能定时“清狗”,看门狗内的定时器不会溢出。
当CPU出现故障,则不能继续提供“清狗”信号,使得看门狗内定时器不断累加⽽溢出,从⽽触发⼀个复位信号对CPU进⾏复位,使CPU重新⼯作。
软件看门狗原理上⼀样,只是将硬件电路上的定时器⽤处理器的内部定时器代替,这样可以简化硬件电路设计,但在可靠性⽅⾯不如硬件定时器,⽐如系统内部定时器⾃⾝发⽣故障就⽆法检测到。
当然也有通过双定时器相互监视,这不仅加⼤系统开销,也不能解决全部问题,⽐如中断系统故障导致定时器中断失效。
看门狗本⾝不是⽤来解决系统出现的问题,在调试过程中发现的故障应该要查改设计本⾝的错误。
加⼊看门狗⽬的是对⼀些程序潜在错误和恶劣环境⼲扰等因素导致系统死机⽽在⽆⼈⼲预情况下⾃动恢复系统正常⼯作状态。
看门狗也不能完全避免故障造成的损失,毕竟从发现故障到系统复位恢复正常这段时间内是不能正常⼯作的。
同时⼀些系统也需要复位前保护现场数据,重启后恢复现场数据,这可能也需要⼀笔软硬件的开销。
常⽤的看门狗芯⽚有ADM706/MAX706,这两种芯⽚的封装⽅式⼀样,如下图所⽰:1).MR#:Manual-Reset,⼿动复位输⼊信号,低电平有效,当此管脚的输⼊电平低于0.6V 时,会触发Reset#管脚输出⼀个复位信号,此管脚内部有 70uA 上拉电流。
如要不使⽤此管脚,需要将此管脚接到VCC或者悬空,不可接地;2).VCC:芯⽚⼯作电压,接5V或3.3V;3).GND:芯⽚参考地,直接与单板GND相连;4).PFI:Power-Fail Comparator Input,电压监控输⼊管脚,当此管脚的输⼊电压低于1.25 V时,FPO#及Reset#会输出低电平信号;5).PFO#:Power-Fail Output,电压监控输出管脚,当PFI的输⼊电平低于1.25V时,输出低电平,不使⽤此管脚时可将其悬空;6).WDI:Watchdog Input,清狗信号输⼊,WDI遇到⼀个上升沿/下降沿,内部看门狗定时器都将清0。
看门狗的使用及妙用

-1-
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925
3. 看门狗作为一个定时器
此时 WDTE 位为 0 看门狗定时器溢出时产生中断 WDCON 寄存器可以修改 这时可以通过 WDRUN 位控制它的运行和停止 WDCLK 可以选择它的时钟源 程序运行中 WDCON.2-0 可以被不断更改 此时 4 个按键和 5 个 LED 如图 1 所示 功能说明如下
EKB
EQU
0E9H
LED_WDS0
EQU
P1.7
;看门狗溢出周期指示灯.点亮时代表二进制 1,熄灭时 ;代表 0
LED_WDS1
EQU
P0.6
;全亮时周期最长 WDS2-0 为 111
LED_WDS2 LED_WDCLK
EQU
P0.0
EQU
P0.7
;全灭时周期最短 WDS2-0 为 000 ;看门狗时钟选择指示灯.点亮时为 CPU 时钟,熄灭时
;为 WDT 内部 RC 振荡器时钟
LED_WDRUN KEY_DIVM
EQU
P1.6
EQU
P0.1
;运行指示灯.点亮时为 0,熄灭时为 1 ;分频键,按此键 MCU 时钟被分频
KEY_LPD
EQU
P0.3
;低功耗键,按此键进入"低功耗"模式
KEY_CLK
EQU
P1.4
;亦可以按此键退出 ;看门狗禁能时时钟选择键. 在 CPU 时钟与 RC 振荡器
开
始
溢出次数减 1=0?
N 系统初始化
Y 溢出周期设为最长
N 看门狗使能否?
Y 喂狗子程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
时钟源与锁相环电路:
时钟信号自然是由时钟信号的源头(简称时钟源)产生,从28335内部的电路原理 图中(如图所示),我们可以看到F28335的时钟源有两种: 一、采用外部振荡器为时钟源头(简称外部时钟),是在XCLKIN引脚提供一定频 率的时钟信号,也可以通过复用的X1引脚接入,也就是说是由其它数字系统或外部振 荡器引入; 二、采用F28335内部振荡器作为时钟源(简称内部时钟),在X1与X2之间连接一 个晶体,就可以产生时钟源。
内部时钟源信号接法是我们更常用的接法,如图4.4所示,XCLKIN引脚置地,X1,X2引 脚之间直接接入晶振。
TMS320F28335内部时钟
锁相环路是一种反馈电路,锁相环的英文全称是Phase-Locked Loop,简称PLL,可以 控制晶振使其相对于参考信号保持恒定相位的电路,使用比较广泛。在数字通信系统中通 常用来进行信号调制、在频率合成电路中,来产生特定频率的信号、数据采集电路中用来 进行信号的同步。
TMS320F28335外设时钟
复位 SYSCLKOUT /XRS X1/XCLKIN X2 SOC PLL CLKIN 电源管理 系统控制寄 存器 时钟使能 低速时钟LSPCLK 低速时钟寄 存器 LOSPCP 外设寄存器 /2 桥 I/O GPIO 选择 I/O eCAN-A/B 时钟使能 EPWM1/„/6、 HRPWM1/„/6、CAP1/„/6、 QEP1/ 时钟使能 I/O 低速时钟 外设寄存器 低速时钟寄 存器 McBSP寄存 器 外 设 总 线 桥 存 储 总 线 外设寄存器 桥 看门狗模块 外设复位 C28X核 系统时钟
TMS320F28335外设时钟
锁相环模块除了为 C28X内核提供时钟外,还通过系统时钟输出提供快速和慢速 2种 外设时钟。如果使能内部PLL电路,那么可以通过控制寄存器PLLCR软件设置系统的工作 频率。但是要注意,在通过软件改变工作频率时,必须等待系统时钟稳定后才可以继续完 成其他操作。除此之外,每种外设的时钟源都可以通过软件进行使能或者禁止。在具体应 用中,为了降低系统功耗,不使用的外设最好将其外设时钟禁止。外设时钟包括快速外设 和慢速外设两种。分别通过HISPCP和LOSPCP寄存器进行设置。
I/O
SPI-A、SCI-A/B/VC、IIC-A 时钟使能
McBSP-A/B 时钟使能
CPU timer0/1/2 时钟使能 高速时钟
timer寄存器 高速时钟寄 存器
16通道输入 12-bit ADC ADC寄存器 桥
结果寄存器
DMA 时钟使能
TMS320F28335看门狗
意外难免会发生,部分意外发生的时候,系统程序跑飞或进入死循环,系统需要有 一定自恢复的功能,这就需要看门狗。意外有很多,如强电类控制电路来说,最让人头疼 的就是琢磨不透,抓不着的EMI干扰,以及电源设计,对于软件而言有内存泄漏、程序健 壮性等问题。看门狗,又叫watchdog timer,从本质上来说就是一个定时器电路,一般有 一个输入和一个输出,其中的输入叫做喂狗(kicking the dog or service the dog),输出 一般连接到另外一个部分的复位端,在这里就是F28335的复位端。CPU工作正常时,按 照设定的程序,每隔一段时间就输出一个信号到喂狗端,实际操作是给看门狗计数器清零, 如果超过了一定时间没有信号到喂狗端进行喂狗,来做清零操作,一般就认为程序运行出
触发复位信号的有两个信号源,也是通过或门输出,1个就是计数器的输出,还1个是逻 辑校验部分,这是看门狗的又一个安全机制,所有访问看门狗控制寄存器(WDCR)的写操作中, 响应的校验位WDCHK必须是“101”,否则将会拒绝访问发出复位信号。
TMS320F28335看门狗
复位信号发生器发出复位信号的同时,也发出了了复位中断信号使看门狗能 在CPU处在IDLE(空闲模式)/STANDBY(备用模式)下的唤醒定时器。在STANDBY模 式下,所有外设都将被关闭,只有看门狗电路还在工作。因为看门狗的时钟信号是
主要内容
第四讲
时钟与看门狗介绍
1、TMS320F28335内部时钟 2、TMS320F28335外设时钟 3、TMS320F28335看门狗 4、相关寄存器介绍
TMS320F28335内部时钟
CPU控制器的主频是CPU的一个极其重要的性能指标,决定着CPU处理一条基本指 令所花费的世间最宝贵的资源—时间的多少。主频由时钟信号产生,时钟信号对于数字 信息世界来讲,就像上帝,也像我们的人类的脉搏,它是所有运算与处理的源头。
因此不能实现上述唤醒功能。
锁相环由鉴相器、环路滤波器和压控振荡器组成。鉴相器用来鉴别输入信号Ui与输出 信号Uo之间的相位差,并输出误差电压Ud。Ud 中的噪声和干扰成分被低通性质的环路滤 波器滤除,形成压控振荡器(VCO)的控制电压Uc。Uc作用于压控振荡器的结果是把它的 输出振荡频率fo拉向环路输入信号频率fi ,当二者相等时,环路被锁定 ,称为入锁。维 持锁定的直流控制电压由鉴相器提供,因此鉴相器的两个输入信号间留有一定的相位差。 30M的OSCCLK信号经锁相环倍频后,倍频倍数通过寄存器PLLCR进行设置,设置为10,为 300M的VCOCLK时钟信号,F28335的时钟频率为150M,所以给CPU核的时候,还要进行一次二 分频,分频通过PLLSTS进行设置。至此产生了F28335的150M的时钟信号。
了意外,不管你的意外类型是什么样的,这时候看门狗电路就会给出一个复位信号给CPU
的复位端,使CPU强制复位,从而可能改变程序跑飞或死循环的状态。设计者必须清楚看 门狗的溢出时间以决定在合适的时候,清看门狗。清看门狗也不能太过频繁否则会造成资 源浪费。在系统设计初以及调试的时候,不建议使用看门狗,因为系统设计初的时候意外
TMS320F28335内部时钟
外部时钟源信号接入的方法有两种,分别针对的是电压为3.3V的外部时钟和1.9V的外 部时钟。 外部时钟源接入方法1:如图所示,3.3V外部时钟源信号直接接入XCLKIN引脚,X1引 脚接地,X2引脚悬空不接,系统内高电平不能超过VDDIO,就是3.3V。 外部时钟源信号接 入方法2:如图所示,1.9V的外部时钟源信号直接接入X1引脚,XCLKIN引脚接地,X2引脚 悬空不接,系统内高电平不超过VDD,就是1.9V。
TMS320F28335看门狗
从图可以看到时钟振荡器信号OSCCLK经512分频, 在经看门狗预定标器WDCR设置得到看门狗时钟WDCLK, 在看门狗使能(由 WDCR 看门狗控制寄存器控制)的 情况下,传给看门狗计数器WDCNTR,WDCNTR是个8位 的计数器,其复位端的信号是由XRS外部复位信号与 看门狗密钥寄存器WDKEY一起控制,这两个信号是接 在或门上输出给计数器复位端,任何一个信号有效 都能使得看门狗复位。其中外部复位信号,是低电 平有效,除了外部输入信号外,其源头还有1个看门 狗自动复位信号,WDRST,该信号是当看门狗发出复 位信号的时候,同时发出,也就是看门狗进行强制 复位的时候,当然也要把看门狗计数器进行复位。
通过下图中可以看到,C28X内核时钟输出,通过LOSPCP低速时钟寄存器设置预分 频,成低速时钟信号LSPCLK,SPI,I2C,MCBSP这些串口通信都是使用的低速时钟信号。 通过HISPCP高速时钟寄存器设置预分频,成高速时钟信号HSPCLK,AD模块采用的是高 速时钟信号,方便灵活设置AD采样率。通过1/2分频给了eCAN模块。直接输出给了系统 控制寄存器模块、DMA模块、EPWM模块、ECAP模块、EQEP模块这些高速外设模块。 当然这些外设基本都有自己的预定标时钟设置寄存器,如果预定标寄存器值为0的话,那 么LSPCLK等时钟信号就成为了外设实际使用时钟信号。当然要使用这些信号需要在外设 时钟寄存器PCLKCR中设置该对应外设使能。
的可能性太多,且有些意外是必须处理的,看门狗电路的复位信号很可能会引入更多的困
扰。合理利用看门狗电路,我们就可以检测软件和硬件运行的状态,进一步提高系统的可 靠性。
TMS320F28335看门狗
F28335上的看门狗计数器是8位的,当其计数到最大值时,看门狗模块产生一个输 出脉冲,如果不希望产生脉冲信号,则需要屏蔽看门狗计数器,或在计数器未计到最大值 时向看门狗控制寄存器写0X55 + 0XAA,就能够使看门狗计数器清零,又开始运行的。信号发送到LPM(低功耗)模块,因
此可以将器件从STANDBY模式唤醒。在IDLE模式下, 信号能够产生 CPU 中断,通过中断服务程序,从而使 CPU 脱离 IDLE 工作模式。
然而CPU工作在HALT模式下时,PLL和OSC单元均被关闭,因此看门狗电路也失效了,
看门狗名字很形象,这个狗很规律,这个狗在最大计数时间内,没吃到骨头,它就会叫,
它的叫声就会唤醒复位电路,要让它不叫,有两种方法,一种是把这条狗杀了,屏蔽看门 狗计数器,另外一种方法,就是不能让这个狗饿的不行,在计数器的值涨到最大值之前就 给狗骨头吃,这里的骨头就是在看门狗寄存器里扔0X55+0XAA这样的骨头,吃过骨头后, 就又开始重新计数了。