单元七---看门狗应用

单元七---看门狗应用

ID:82015398

大小:811.00 KB

页数:46页

时间:2022-10-14

上传者:胜利的果实
单元七---看门狗应用_第1页
单元七---看门狗应用_第2页
单元七---看门狗应用_第3页
单元七---看门狗应用_第4页
单元七---看门狗应用_第5页
单元七---看门狗应用_第6页
单元七---看门狗应用_第7页
单元七---看门狗应用_第8页
单元七---看门狗应用_第9页
单元七---看门狗应用_第10页
资源描述:

《单元七---看门狗应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

单元七看门狗应用2018-01-28

12喂狗应用目录1看门狗定时器应用

2任务一看门狗定时器应用一、任务描述使用CC2530看门狗控制LED进行周期性闪烁,实现自动复位。具体要求如下。①LED周期性闪烁时间间隔为1s。②看门狗定时器工作于看门狗定时器模式。

3任务一看门狗定时器应用二、任务目标1.训练目标①检验掌握CC2530单片机看门狗定时器的使用技能。②检验掌握看门狗的特性、作用和相关寄存器配置的技能。

4任务一看门狗定时器应用二、任务目标2.素养目标①培养学生在工作现场的6S意识和用电安全意识。②爱惜工具,注重场地整洁。③具备积极、主动的探索精神。

5任务一看门狗定时器应用三、相关知识看门狗(WatchDogTimer,WDT)是一种专门用于监测单片机程序运行状态的芯片。其实质是一个计数器,一般给看门狗一个大数,程序开始运行后,看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0,就认为程序没有正常工作,将强制整个系统复位。

6任务一看门狗定时器应用三、相关知识1.看门狗的功能看门狗是在程序跑飞的情况下,将CPU自恢复的一种方式,当软件在选定的时间间隔内不能置位看门狗定时器,看门狗就复位系统。看门狗可用于电噪声、电源故障或静电放电等恶劣工作环境或高可靠性要求的环境。如果系统不需要应用看门狗,则看门狗定时器可配置成间隔定时器,在选定时间间隔内产生中断。

7任务一看门狗定时器应用三、相关知识2.CC2530看门狗的模式CC2530的看门狗定时器可工作于定时器模式或看门狗模式。(1)定时器模式要在一般定时器模式下设置看门狗定时器,必须把WDCTL.MODE[1:0]位设置为11。此时,看门狗定时器就开始工作,且计数器从0开始递增。当计数器达到选定间隔值时,CPU将IRCON2.WDTIF置1。如果IEN2.WDTIE=1且IEN0.EA=1,则定时器将产生一个中断请求(IRCON2.WDTIF/IEN2.WDTIE)。

8任务一看门狗定时器应用三、相关知识2.CC2530看门狗的模式CC2530的看门狗定时器可工作于定时器模式或看门狗模式。(1)定时器模式在定时器模式下,可以通过写入1到WDCTL.CLR[0]来清除定时器内容。当定时器被清除后,计数器的内容就置为0。写入00或01到WDCTL.MODE[1:0]可停止定时器,并对其清零。

9任务一看门狗定时器应用三、相关知识2.CC2530看门狗的模式CC2530的看门狗定时器可工作于定时器模式或看门狗模式。(1)定时器模式定时器间隔由WDCTL.INT[1:0]位设置。在定时器操作期间,定时器间隔不能改变,且当定时器开始时必须设置。在定时器模式下,当达到定时器间隔时,不会产生复位。注意:如果选择了看门狗模式,定时器模式不能在芯片复位之前选择。

10任务一看门狗定时器应用三、相关知识2.CC2530看门狗的模式CC2530的看门狗定时器可工作于定时器模式或看门狗模式。(2)看门狗模式在系统复位之后,看门狗定时器就被禁用。要设置看门狗定时器工作于看门狗模式,必须设置WDCTL.MODE[1:0]位为10,然后看门狗定时器的计数器从0开始递增。在看门狗模式下,一旦看门狗定时器使能,就不可以禁用定时器。因此,如果看门狗定时器已经运行于看门狗模式下,则再向WDCTL.MODE[1:0]写入00或10就不起作用了。

11任务一看门狗定时器应用三、相关知识2.CC2530看门狗的模式CC2530的看门狗定时器可工作于定时器模式或看门狗模式。(2)看门狗模式看门狗定时器运行于一个频率为32.768kHz(当使用32kHzXOSC)的看门狗定时器时钟上。这个时钟频率的超时期限为1.9ms、15.625ms、0.25s和1s,分别对应64、512、8192和32768的计数值设置。如果计数器达到选定定时器的间隔值,则看门狗定时器为系统产生一个复位信号。如果在计数器达到选定定时器的间隔值之前,执行了一个看门狗清除序列,则计数器复位到0,并继续递增。看门狗清除序列包括在一个看门狗时钟周期内,写入0xA到WDCTL.CLR[3:0],然后写入0x5到同一个寄存器位。如果这个序列没有在看门狗周期结束之前执行完毕,则看门狗定时器为系统产生一个复位信号。

12任务一看门狗定时器应用三、相关知识2.CC2530看门狗的模式CC2530的看门狗定时器可工作于定时器模式或看门狗模式。(2)看门狗模式在看门狗模式下,看门狗定时器使能,就不能通过写入WDCTL.MODE[1:0]位改变这个模式,且定时器间隔值也不能改变。在看门狗模式下,看门狗定时器不会产生中断请求。

13任务一看门狗定时器应用三、相关知识3.CC2530看门狗的相关寄存器CC2530看门狗的控制寄存器为WDCTL,其功能描述如表7.1表示。

14任务一看门狗定时器应用位位名称复位值操作描述7:4CLR[3:0]0000R0/W清除定时器。当0xA跟随0x5写入这些位,定时器被清除(即加载0)。注意:定时器仅写入0xA之后,在一个看门狗时钟周期内写入0x5时才被清除。当看门狗定时器是IDLE时,写入这些位没有影响。当运行于定时器模式时,定时器可以通过写1到CLR[0](不管其他3位)被清除为0x0000(但是不停止)。3:2MODE[1:0]00R/W模式选择。该位用于启动看门狗定时器处于看门狗模式还是定时器模式。当处于定时器模式,设置这些位为IDLE将停止定时器。注意:当运行在定时器模式时要转换到看门狗模式,首先停止看门狗定时器,然后启动看门狗定时器处于看门狗模式。当运行于看门狗模式时,写这些位没有影响。00:IDLE。01:IDLE(未使用,等于00设置)。10:看门狗模式。11:定时器模式。1:0INT[1:0]00R/W定时器间隔选择。这些位选择定时器间隔定义为32MHz振荡器周期的规定数。注意间隔只能当看门狗定时器处于IDLE时改变,因此间隔必须在定时器启动的同时设置。00:定时周期为1s,以32.768kHz时钟计算。01:定时周期为0.25s。10:定时周期为15.625ms。11:定时周期为1.9ms。表7.1CC2530看门狗控制寄存器WDCTL(0xC9)的描述

15任务一看门狗定时器应用四、任务实施1.基本设定本任务是在看门狗模式下实现LED闪烁周期1s的自动复位功能。(1)定时时间间隔设置要设置定时时间间隔为1s,首先设置系统时钟源振荡周期为32kHz,可通过时钟控制命令寄存器CLKCONCMD.OSC32K位来设定。然后设定看门狗定时器控制寄存器WDCTL.INT[1:0]为00(即设定时间间隔为1s)。设置代码如下。CLKCONCMD&=0x80;//系统时钟源选择32kHzWDCTL=0x00;//时间间隔1s

16任务一看门狗定时器应用四、任务实施1.基本设定本任务是在看门狗模式下实现LED闪烁周期1s的自动复位功能。(2)看门狗定时器工作模式设置设置看门狗定时器为看门狗模式,即设置WDCTL.MODE[1:0]位为10。设置代码如下。WDCTL=0x00;//看门狗模式

17任务一看门狗定时器应用四、任务实施1.基本设定本任务是在看门狗模式下实现LED闪烁周期1s的自动复位功能。(3)喂狗设置看门狗清除序列包括在一个看门狗时钟周期内,写入0xA到WDCTL.CLR[3:0],然后写入0x5到同一个寄存器位。即对寄存器WDCTL进行如下配置。WDCTL|=0xA0;WDCTL|=0x50;但本任务要求LED周期性闪烁,自动复位,所以在规定的时间间隔1s内不必对其清零(喂狗)。

18任务一看门狗定时器应用四、任务实施2.代码设计对系统的各部分功能分别用函数实现,然后通过主函数调用各函数即可。(1)LED初始化voidled_Init(void){P1SEL=0x00;//P1为通用I/O口P1DIR|=0x01;//P1_0输出LED1=0;//熄灭LED1}

19任务一看门狗定时器应用四、任务实施2.代码设计(2)系统时钟初始化voidsystemClock_Init(void){unsignedcharclkconcmd,clkconsta;CLKCONCMD&=0x80;/*等待所选择的系统时钟源(主时钟源)稳定*/clkconcmd=CLKCONCMD;//读取时钟控制寄存器CLKCONCMDdo{clkconsta=CLKCONSTA;//读取时钟状态寄存器CLKCONSTA}while(clkconsta!=clkconcmd);//直到选择的系统时钟源(主时钟源)稳定}

20任务一看门狗定时器应用四、任务实施2.代码设计(3)软件延时voiddelay(unsignedinttime){unsignedinti;unsignedcharj;for(i=0;i

21任务一看门狗定时器应用四、任务实施2.代码设计(4)看门狗初始化voidwatchdog_Init(void){WDCTL=0x00;//看门狗模式,时间间隔1sWDCTL|=0x08;//启动看门狗}

22任务一看门狗定时器应用四、任务实施2.代码设计(5)喂狗voidFeedWD(void){WDCTL|=0xA0;WDCTL|=0x50;}

23任务一看门狗定时器应用四、任务实施2.代码设计(6)主程序voidmain(void){systemClock_Init();led_Init();watchdog_Init();delay(30000);//延时小于1s。若大于1秒,会出现什么情况?LED1=1;//亮LED1while(1){FeedWD();//喂狗指令(加入后系统不复位,小灯不闪烁;若注释,则系统不断复位,LED每隔1s闪烁一次)}}

24任务一看门狗定时器应用五、任务小结看门狗定时器工作于看门狗或定时器两种模式。

25任务一看门狗定时器应用六、启发与思考在定时器模式下,它就相当于普通的定时器,达到定时间隔会产生中断(查阅ioCC2530.h文件中可知,其中断向量为WDT_VECTOR)。通过WDCTL.MODE位可进行看门狗定时器模式选择。

26任务二喂狗应用一、任务描述使用CC2530看门狗来控制LED1进行周期性闪烁,实现自动复位。具体要求如下。①LED1周期性闪烁时间间隔为1s。②看门狗定时器工作于看门狗模式。

27任务二喂狗应用二、任务目标①检验掌握CC2530单片机看门狗定时器的使用技能。②检验掌握看门狗的特性、作用和相关寄存器配置的技能。③检验掌握看门狗喂狗应用的能力。

28任务二喂狗应用二、任务目标2.素养目标①培养学生在工作现场的6S意识和用电安全意识。②爱惜工具,注重场地整洁。③具备积极、主动的探索精神。

29任务二喂狗应用三、相关知识1.看门狗应用看门狗是专门监测单片机程序运行状态的电路结构。其基本原理是:启动看门狗定时器后,它就会从0开始计数,若程序在规定的时间间隔内没有及时对其清零,看门狗定时器就会复位系统。在看门狗模式下,当达到定时间隔时,不会产生中断,取而代之的是向系统发送一个复位信号。

30任务二喂狗应用三、相关知识2.CC2530看门狗的配置当启动看门狗定时器后,它就会从0开始计数,若程序在规定的时间间隔内没有及时对其清零(喂狗),看门狗定时器就会复位系统(相当于重启),如图7.1所示。

31任务二喂狗应用图7.1看门狗定时器

32任务二喂狗应用三、相关知识2.CC2530看门狗的配置在看门狗模式下,看门狗一旦被使能,就不能通过改变WDCTL.MODE[1:0]来改变该模式,而且选定的计数器最终计数值也不能被改变。位域的值在看门狗模式下,看门狗不会产生中断请求。若喂狗超时,则向系统发送一个重置信号。

33任务二喂狗应用三、相关知识2.CC2530看门狗的配置设置WDCTL.MODE[1:0]位为11,则看门狗定时器工作于定时器模式,看门狗定时器的计数器从0开始递增。当计数器达到选定间隔值时,CPU将IRCON2.WDTIF置1。如果IEN2.WDTIE=1且IEN0.EA=1,则看门狗定时器将产生一个中断请求(IRCON2.WDTIF/IEN2.WDTIE)。

34任务二喂狗应用三、相关知识3.喂狗应用看门狗的使用可以总结为:选择模式→选择定时器间隔→放狗→喂狗。看门狗定时器工作看门狗或定时器模式。

35任务二喂狗应用三、相关知识3.喂狗应用本任务要求选择看门狗模式。定时器启动之后,就会从0开始计数。在其计数值达到32768之前(即小于1s),若用以下代码喂狗。WDCTL=0x0A;WDCTL=0x05;则定时器的计数值会被清零,然后它会再次从0x0000开始计数,这样就防止了其发送复位信号,表现在开发板上就是LED一直亮着,不会闪烁。

36任务二喂狗应用三、相关知识3.喂狗应用喂狗程序一定要严格与上述代码一致,顺序颠倒、写错、少写一句都将起不到清零的作用。

37任务二喂狗应用四、任务实施1.基本设定本任务是在看门狗模式下实现LED闪烁周期1s的自动复位功能。(1)定时时间间隔设置要设置定时时间间隔为1s,首先设置系统时钟源振荡周期为32kHz,可通过时钟控制寄存器CLKCONCMD.OSC32K位来设定,然后设定看门狗定时器控制寄存器WDCTL.INT[1:0]为00设定时间间隔为1s。设置代码如下。CLKCONCMD&=0x80;//系统时钟源选择32kHzWDCTL=0x00;//时间间隔1s

38任务二喂狗应用四、任务实施1.基本设定本任务是在看门狗模式下实现LED闪烁周期1s的自动复位功能。(2)看门狗定时器WDT工作模式设置设置WDT为看门狗模式,设置WDCTL.MODE[1:0]位为10。设置代码如下。WDCTL=0x00;//看门狗模式

39任务二喂狗应用四、任务实施1.基本设定本任务是在看门狗模式下实现LED闪烁周期1s的自动复位功能。(3)喂狗设置。看门狗清除序列包括在一个看门狗时钟周期内,写入0xA到WDCTL.CLR[3:0],然后写入0x5到同一个寄存器位。即对寄存器WDCTL进行如下配置。WDCTL|=0xA0;WDCTL|=0x50;但本任务要求LED1周期闪烁自动复位,所以我们在规定的时间间隔1s内不必对其清零(喂狗)。

40任务二喂狗应用四、任务实施2.代码设计(1)看门狗初始化函数看门狗初始化函数代码如下。voidwatchdog_Init(void){WDCTL=0x00;//看门狗模式,时间间隔一秒WDCTL|=0x08;//启动看门狗}

41任务二喂狗应用四、任务实施2.代码设计(2)喂狗函数喂狗函数代码如下。voidFeedWD(void){WDCTL|=0xA0;WDCTL|=0x50;}

42任务二喂狗应用四、任务实施2.代码设计voidmain(void){systemClock_Init();led_Init();watchdog_Init();delay(3000);//延时小于1s。若大于1s,会出现什么情况?LED1=1;//亮LED1while(1){FeedWD();//系统不断复位,小灯每隔1s闪烁一次)}}

43任务二喂狗应用五、任务小结在看门狗模式下,当达到定时间隔时,不会产生中断,取而代之的是向系统发送一个复位信号。看门狗的使用流程:选择模式→选择定时器间隔→放狗→喂狗。

44任务二喂狗应用六、启发与思考喂狗程序一定要严格按照“选择模式→选择定时器间隔→放狗→喂狗”顺序,顺序颠倒/写错/少写一句都将起不到清0的作用。

45Thanks物联网应用的精彩未来有待你的参与

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭