《智能产品设计与应用》课件-看门狗定时器和系统时钟_第1页
《智能产品设计与应用》课件-看门狗定时器和系统时钟_第2页
《智能产品设计与应用》课件-看门狗定时器和系统时钟_第3页
《智能产品设计与应用》课件-看门狗定时器和系统时钟_第4页
《智能产品设计与应用》课件-看门狗定时器和系统时钟_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

智能产品设计与应用看门狗定时器和系统时钟案例导入01/PART

ONE看门狗定时器在CPU可能受到软件颠覆的情况下,看门狗定时器(WDT)可用于恢复。当软件在选定时间间隔内不能清除WDT时,WDT必须就复位系统。看门狗可用于受到电气噪音、电源故障、静电放电等影响,或需要高可靠性的环境。如果一个应用不需要看门狗功能,可以配置看门狗定时器为一个间隔定时器,这样可以用于在选定的时间间隔产生中断。什么是看门狗定时器看门狗定时器四个可选的定时器间隔看门狗模式定时器模式在定时器模式下产生中断请求WDT可以配置为一个看门狗定时器或一个通用的定时器。WDT模块的运行由WDCTL寄存器控制。看门狗定时器包括一个15位计数器,它的频率由32kHz时钟源规定。注意用户不能获得15位计数器的内容。在所有供电模式下,15位计数器的内容保留,且当重新进入主动模式,看门狗定时器继续计数。看门狗定时器的特性如下看门狗定时器WDT:WatchDogTimer,本质上是一个计数器,可以监测系统的运行情况,在程序“跑飞”的情况下,实现自动复位。程序正常运行过程中,每隔一段时间内核发出指令让看门狗重新开始计数,也称为喂狗。只要在设定的最大间隔时间内,通过喂狗复位计数器,系统就不会复位。1.看门狗原理当系统受到干扰导致程序跑飞,或者软件存在漏洞没有按预定设计执行,在设定的最大喂狗时间内没有进行定时器复位,看门狗则溢出,系统自动复位。看门狗定时器15位计数器,工作在32KHz的时钟频率,系统复位时禁用。4个定时间隔:1s、0.25s、15.625ms、1.9ms。2种工作模式:看门狗模式、定时器模式。喂狗序列:在一个看门狗时钟周期内,写入0xA到WDCTL.CLR[3:0],然后写入0x5到同一个寄存器中。1.看门狗原理看门狗定时器2.看门狗控制寄存器WDCTL位名称复位R/W描述7:4CLR[3:0]0000R0/W清除定时器。当0xA跟随0x5写到这些位,定时器被清除(即加载0)。3:2MODE[1:0]00R/W模式选择。00:IDLE(idle空闲的意思)

01:IDLE(未使用,等于00设置)10:看门狗模式

11:定时器模式1:0INT[1:0]00R/W定时器间隔选择。注意时间间隔智能在WDT处于IDLE时改变,这样间隔必须在定时器启动同时设置。00:1s01:

0.25s10:15.625ms

11:1.9ms设计参考:将看门狗定时器设为看门狗模式,喂狗时间为0.25秒。WDCTL=0x09;00001001将看门狗定时器设为定时器模式,定时间隔为1秒。WDCTL=0x0C;//00001100看门狗定时器将看门狗定时器设置成定时器模式。定时周期选择1秒。在看门狗中断服务函数中,切换LED1灯的开关状态。注:看门狗中断标志位--WDTIF,需要软件手动清除。任务5.1:看门狗定时器实现1秒定时

P1_0P1_1P0_4P0_1P2_0LED1LED2LED3K1K2CC2530模块端口初始化函数看门狗初始化函数看门狗中断服务函数定时器模式

看门狗定时器中断允许总中断看门狗定时器看门狗初始化函数WDCTLIEN2.WDTIE(第5位)EA=1;voidInit_WDI(){WDCTL=0x0C;//00001100,定时器模式,1s,修改最后2位,即修改定时长度IEN2|=0x20;//00100000//

IEN2.WDTIE(第5位),看门狗定时中断允许位EA=1;//总中断允许位}看门狗定时器看门狗中断函数看门狗中断标志位WDTIF#pragmavector=WDT_VECTOR__interruptvoidSevice_WDT(){

WDTIF=0;//清除看门狗中断标志位,在IRCON2.4LED1=~LED1;}看门狗定时器主函数main看门狗中断函数LED引脚初始化函数看门狗初始化函数死循环while(1)②看门狗定时器中断允许①定时器模式③总中断②切换LED1状态①清除看门狗标志位配置LED1(P1_0)作为IO输出引脚①定时器模式看门狗定时器拓展任务5.2使看门狗定时器WDT工作在定时器模式,控制LED1、LED2、LED3的亮/灭。LED1亮灭时间间隔1s,LED2亮灭时间间隔2s、LED3亮灭时间间隔3s。采用中断方式,在中断服务函数中切换次LED的亮灭状态。智能产品设计与应用看门狗定时器和系统时钟运用主讲教师:肖俊芳案例导入01/PART

ONE看门狗定时器初始化看门狗定时器为看门狗模式,喂狗时间为1秒。设计LED灯检测函数,3个灯同时点亮,延时,再同时熄灭。设计带喂狗功能的闪灯函数,LED1亮,延时,LED1灭,延时,喂狗。设计不带喂狗功能的闪灯函数,LED2亮,延时,LED2灭,延时。在主函数中,进入死循环,先执行8次带喂狗功能的闪灯函数,再执行8次不带喂狗功能的闪灯函数。效果:带喂狗,闪烁完成,不带喂狗,超过时间,会复位。任务5.3设计看门狗监测程序看门狗定时器

P1_0P1_1P0_4P0_1P2_0LED1LED2LED3K1K2CC2530模块任务5.3设计看门狗监测程序端口初始化函数看门狗初始化函数喂狗函数LED1闪烁函数LED2闪烁函数看门狗定时器主函数mainLED1闪烁喂狗函数LED引脚初始化函数看门狗初始化函数死循环while(1)①看门狗模式1s8次LED1闪烁函数(带喂狗)8次LED2闪烁函数(不带喂狗)WDCTL=0x08;LED2闪烁Feed_Dog()WDCTL|=0xA0;WDCTL|=0x50;看门狗定时器voidInit_WDI(){WDCTL=0x08;//00001000,看门狗模式,1s}看门狗初始化函数voidFeed_Dog(){WDCIL|=0xA0;WDCTL|=0x50;}喂狗函数系统时钟系统时钟是从所选的主时钟源获得的。CC2530的主时钟源:(1)16MHz的内部RC振荡器

(2)32MHz的外部晶振32MHz的外部晶振,其启动时间对一些应用程序来说可能比较长,所以设备可以先运行在16MHz的内部RC振荡器,直到外部晶振稳定。RC振荡器的功耗低于外部晶振,但是精度不如外部晶振高,因此,要使用RF收发器,必须使用32MHz晶体振荡器。串口通信是也建议使用32MHz晶体振荡器。系统时钟CLKCONCMD时钟控制命令寄存器位名称复位R/W描述7OSC32K1R/W当前选择的32kHz时钟源。0:32kHzXOSC

1:32kHzRCOSC6OSC1R/W当前选择的系统时钟。0:32MHzXOSC

1:16MHzRCOSC5:3TICKSPD[2:0]001R/W当前设置的定时器标记输出,不能高于通过OSC位设置的时钟。000:32MHz

001:16MHz2:0CLKSPD001R/W当前时钟速度,表示当前系统时钟频率。000:32MHz

001:16MHzCLKCONCMD.OSC位选择主系统的时钟源。改变CLKCONCMD.OSC位不会立即改变系统的时钟。时钟源的改变首先在CLKCONSTA.OSC位与CLKCONCMD.OSC位相等的时候生效。因为在实际改变时钟源之前需要有稳定的时钟。上电默认选择系统时钟CLKCONSTA时钟控制状态寄存器(只读)位名称复位R/W描述7OSC32K1R当前选择的32kHz时钟源。0:32kHzXOSC

1:32kHzRCOSC6OSC1R当前选择的系统时钟。0:32MHzXOSC

1:16MHzRCOSC5:3TICKSPD[2:0]001R当前设置的定时器标记输出,不能高于通过OSC位设置的时钟。000:32MHz

001:16MHz2:0CLKSPD001R当前时钟速度,表示当前系统时钟频率。000:32MHz

001:16MHz将CC2530的系统时钟源从16MHz的内部RC振荡器切换成32MHz的外部晶振。CLKCONCMD&=~0x40;//0SC位清0,选择系统时钟源为32MHz晶振。while(CLKCONSTA&0x40);//等待外部晶振稳定,第6位OSC由1变为0,就稳定了。CLKCONCMD&=~

0x07;//设置当前系统时钟的速度为32MHz,最低3位变为0。系统时钟位名称复位R/W描述7OSC32K1R/W当前选择的32kHz时钟源。0:

32kHzXOSC

1:32kHzRCOSC6OSC1R/W当前选择的系统时钟。0:32MHzXOSC

1:16MHzRCOSC5:3TICKSPD[2:0]001R/W当前设置的定时器标记输出,不能高于通过OSC位设置的时钟。000:32MHz

001:16MHz2:0CLKSPD001R/W当前时钟速度,表示当前系统时钟频率。000:32MHz

001:16MHz系统时钟CLKCONCMD&=~0x40;//0SC位清0,选择系统时钟源为32MHz晶振while(CLKCONSTA&0x40);//等待外部晶振稳定,第6位OSC由1变为0,就稳定了CLKCONCMD&=~

0x07;//设置当前系统时钟的速度为32MHz,最低3位变为0CLKCONCMD|=0x40;//0SC位清1,选择系统时钟源为16MHz晶振While(!(CLKCONSTA&0x40));//第6位OSC由0变为1CLKCONCMD|=0x01;//设置当前系统时钟的速度为16MHz,最低3位000->001设置为32MHz设置为16MHz系统时钟设计端口初始化函数,配置1个LED灯和k1,关闭1个LED灯。设计系统时钟切换函数,根据参数进行16MHz和32MHz时钟源切换。设计按键扫描处理函数,当k1按下松开后,切换系统的时钟源,当前为16MHz的切换成32MHz,当前是32MHz的则切换为16MHz。在主函数,D1灯循环闪烁,并对按键k1进行扫描处理。任务5.6按键控制系统时钟切换

P1_0P1_1P0_4P0_1P2_0LED1LED2LED3K1K2CC2530模块系统时钟IO配置Whle(1)LED1亮延时键盘扫描LED1灭延时键盘扫描F_clk=16;键盘扫描函数确定按键按下Main主程序F_clk=16?F_clk=32;设置时钟为32MHzset_clock(32);F_clk=32?F_clk=16;设置时钟为16MHzset_clock(16);YNYN设置时钟函数set_clock(?);CLKCONCMD|=0X40;//OSC=1;while(!(CLKCONSTA&0X40));//等待OSC变为1CLKCONCMD|=0X01;//000->001,低三位置001,16MHz1632CLKCONCMD&=~0X40;//OSC=0;while(CLKCONSTA&0X40);//等待OSC变为0CLKCONCMD&=~0X07;//低三位置001->00

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论