第四章 时钟控制模块.ppt

上传人:s****8 文档编号:67217360 上传时间:2022-12-24 格式:PPT 页数:131 大小:5.18MB
返回 下载 相关 举报
第四章 时钟控制模块.ppt_第1页
第1页 / 共131页
第四章 时钟控制模块.ppt_第2页
第2页 / 共131页
点击查看更多>>
资源描述

《第四章 时钟控制模块.ppt》由会员分享,可在线阅读,更多相关《第四章 时钟控制模块.ppt(131页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第四章 时钟控制模块一、概述二、定时/计数器模块 三、PWM模块四、实时时钟模块五、看门狗模块六、低功耗实验 七、附录-中断功能 一、概述n时钟的概念:时钟的概念:时钟就是一连串连续的、周期的和占空比固定的时钟脉冲信号。n时钟的作用:时钟的作用:时钟发生器提供给芯片一个连续的脉冲信号让芯片完成一定任务。n一种是利用内部的晶体振荡器,我们称之为振荡振荡模式模式,如图(a)所示;n另一种是使用外部振荡源提供的脉冲信号,此为从属模式从属模式,如图(b)所示。(a)(b)1.1 时钟电路的设计方法nLPC2000系列芯片的时钟来源:1、振荡模式:使用外部晶体;2、从属模式:从XTAL1脚输入占空比为1

2、/2的时钟信号。1.2 LPC2220的时钟n外设功能模块的时钟pclk的得来:高频率的cclk经过一个分频器分频后的时钟pclk作为其时钟源。n处理器的时钟cclk的得来:Fosc经过PLL锁相环模块加以倍频得到。二、定时/计数器模块n定时定时/计数器的功能计数器的功能计数功能计数功能:是指对外部脉冲信号进行计数,不需要基准时钟。定时功能定时功能:功能需要用到某个基准时钟,通过对基准时钟的计数来完成定时功能。n 定时定时/计数器用途计数器用途:1)产生所需频率的脉冲;2)在频率测量中的应用;3)在累加计数中的应用;4)定时/计数器在计时中的应用。计数器在累加计数原理框图 nLPC2220系列

3、有定时器0和定时器l两个定时器。n两个定时器除了外设基地址不相同以外,其他都相同。n定时器对外设时钟pclk周期进行计数;当计数数值等于匹配寄存器的值时,可以产生中断或执行其它动作;利用这一特性可实现定时功能。n它还包括捕获输入,用于在输入信号发生跳变时捕获定时器值,并可选择产生中断。利用这一特性可实现对外部脉冲进行计数。1.1 LPC2220的定时器模块特性:特性:n带可编程32位预分频器的32位定时器/计数器。n具有4路捕获通道。可选择使捕获事件产生中断,当输入信号跳变时可取得定时器的瞬时值。n具有4个32位匹配寄存器,并有4个对应于匹配寄存器的外部输出。功能:功能:n1、匹配输出 输出脉

4、冲波形,输出引脚为MAT0.x和MAT1.x。n2、捕获输入 感知外部脉冲的边沿输入,输入对应引脚为CAP0.x和CAP1.x。1.2 定时器的特性与功能n当MR0MR3与定时器计数器TC发生匹配时,内核将会按照MCR设置的方法产生中断、停止或复位TC等;n根据EMR的设置控制匹配后在相应引脚输出高电平、低电平或者执行电平翻转等。定时器-匹配输出n当有捕获触发信号产生时,捕获电路将会立即把当时的定时器值TC复制到对应触发通道的捕获寄存器CR0CR3中。n通过设置CCR可将捕获设置为上升沿触发、下降沿触发、双边沿触发,并可设置为捕获中断。定时器-捕获输入1.3 定时器的内部结构1定时器的内部结构

5、2n32位定时器 TC的计数频率由外设时钟 pclk输入经过 PR进行分频控制得到,PR指定预分频数的最大值;PC为分频计数器,当PC累加到等于PR值时,TC+1,且PC从0开始重新计数;nTCR控制定时器的启动停止、计数复位。当定时器TC与匹配寄存器MR0MR3发生匹配时,将会按照MCR设置的方法产生中断、停止或复位TC等。1.4 寄存器描述 标号名称描述访问复位值TxIR中断寄存器可以写IR来清除中断。可读取IR来识别哪个中断被挂起R/W0TxTCR定时器控制寄存器TCR用于控制定时器计数器功能。定时器计数器可通过TCR禁止或复位R/W0TxTC定时器计数器32位的TC每经过PR+1个pc

6、lk周期加1。TC通过TCR进行控制0TxPR预分频寄存器保存预分频计数的最大值PRR/W0TxPC预分频计数器32位的PC每经过PR+1个pclk时,TC加1R/W0TxMCR匹配控制寄存器MCR用于控制在匹配时是否产生中断或复位TC R/W0TxMR(03)匹配寄存器(03)可通过MCR设定在匹配时复位TC,停止TC和PC和/或产生中断R/W0TxCCR捕获控制寄存器它控制用于用于装载捕获寄存器的捕获输入边沿以及在发生捕获时是否产生中断R/W0TxCR(03)捕获寄存器(03)当CAP(0.00.3)或CAP(1.01.3)产生捕获事件时,CR(03)装载TC的值RO0TxEMR外部匹配寄

7、存器EMR控制外部匹配引脚MAT0.0MAT0.3或 MAT1.0MAT1.3RW0中断寄存器TxIR 中断寄存器包含了4个位用于匹配中断,4个位用于捕获中断。IR功能描述复位值0MR0中断匹配通道0的中断标志01MR1中断匹配通道1的中断标志02MR2中断匹配通道2的中断标志03MR3中断匹配通道3的中断标志04CR0中断捕获通道0事件的中断标志05CR1中断捕获通道1事件的中断标志06CR2中断捕获通道2事件的中断标志07CR3中断捕获通道3事件的中断标志0定时器控制寄存器TxTCR TCR功能描述复位值0计数器使能为1时,定时器计数器和预分频计数器使能,为0时,计数器禁能。01计数器复位

8、为1时,定时器计数器和预分频计数器在pclk的下一个上升沿同步复位,计数器在TCR的bit1恢复为0之前保持复位状态。0匹配控制寄存器TxMCR IR功能描述复位值0中断(MR0)为1时,MR0与TC的匹配将产生中断;为0时,中断禁止。01复位(MR0)为1时,MR0与TC的匹配将使TC复位;为0时,复位禁止。02停止(MR0)为1时,MR0与TC的匹配使TC和PC停止,TCR的第0位清零;为0时,停止禁止。03中断(MR1)为1时,MR1与TC的匹配将产生中断;为0时,中断禁止。04复位(MR1)为1时,MR1与TC的匹配将使TC复位;为0时,复位禁止。05停止(MR1)为1时,MR1与TC

9、的匹配使TC和PC停止,TCR的第0位清零;为0时,停止禁止。06中断(MR2)为1时,MR2与TC的匹配将产生中断;为0时,中断禁止。07复位(MR2)为1时,MR2与TC的匹配将使TC复位;为0时,复位禁止。08停止(MR2)为1时,MR2与TC的匹配使TC和PC停止,TCR的第0位清零;为0时,停止禁止。09中断(MR3)为1时,MR3与TC的匹配将产生中断;为0时,中断禁止。010复位(MR3)为1时,MR3与TC的匹配将使TC复位;为0时,复位禁止。011停止(MR3)为1时,MR3与TC的匹配使TC和PC停止,TCR的第0位清零;为0时,停止禁止。0捕获控制寄存器TxCCR IR功

10、能描述复位值0CAPn.0上升沿捕获为1时,CAPn.0上0到1的跳变将导致TC的内容装入CR0,为0时,则禁止。01CAPn.0下降沿捕获为1时,CAPn.0上1到0的跳变将导致TC的内容装入CR0,为0时,则禁止。02CAPn.0时间中断为1时,CAPn.0上的捕获事件导致的CR0装载将产生中断,为0时,则禁止。03CAPn.1上升沿捕获为1时,CAPn.1上0到1的跳变将导致TC的内容装入CR1,为0时,则禁止。04CAPn.1下降沿捕获为1时,CAPn.1上1到0的跳变将导致TC的内容装入CR1,为0时,则禁止。05CAPn.1时间中断为1时,CAPn.1上的捕获事件导致的CR1装载将

11、产生中断,为0时,则禁止。06CAPn.2上升沿捕获为1时,CAPn.2上0到1的跳变将导致TC的内容装入CR2,为0时,则禁止。07CAPn.2下降沿捕获为1时,CAPn.2上1到0的跳变将导致TC的内容装入CR2,为0时,则禁止。08CAPn.2时间中断为1时,CAPn.2上的捕获事件导致的CR2装载将产生中断,为0时,则禁止。09CAPn.3上升沿捕获为1时,CAPn.3上0到1的跳变将导致TC的内容装入CR3,为0时,则禁止。010CAPn.3下降沿捕获为1时,CAPn.3上1到0的跳变将导致TC的内容装入CR3,为0时,则禁止。011CAPn.3时间中断为1时,CAPn.3上的捕获事

12、件导致的CR3装载将产生中断,为0时,则禁止。0外部匹配寄存器TxEMR IR功能描述复位值0外部匹配0当MR0发生匹配时,该输出可翻转,变为低电平,高电平或不执行任何动作,由位EMR4:5控制。01外部匹配1当MR1发生匹配时,该输出可翻转,变为低电平,高电平或不执行任何动作,由位EMR6:7控制。02外部匹配2当MR2发生匹配时,该输出可翻转,变为低电平,高电平或不执行任何动作,由位EMR8:9控制。03外部匹配3当MR3发生匹配时,该输出可翻转,变为低电平,高电平或不执行任何动作,由位EMR10:11控制。05:4外部匹配控制000:不执行任何动作 01:输出设置为010:输出设置为1

13、11:输出翻转07:6外部匹配控制100:不执行任何动作 01:输出设置为010:输出设置为1 11:输出翻转09:8外部匹配控制200:不执行任何动作 01:输出设置为010:输出设置为1 11:输出翻转011:10外部匹配控制300:不执行任何动作 01:输出设置为010:输出设置为1 11:输出翻转01.5 定时器的操作方法设置定时计数器的时钟频率,定时器计数时钟频率计算公式如下:计数时钟频率Fpclk/(PR+1)设置定时器的工作模式。若使用定时器的相关中断,则设置VIC中断使能寄存器,使能中断;设置TCR,启动定时器定时。1.5 定时器的操作方法例子:配置定时器为:匹配时停止计数器并

14、产生中断,预分频计数器为2,匹配寄存器设置为6.在定时器到达匹配值的下一个周期中,TCR中的定时器使能位清零并产生指示匹配发生的中断。1.6 实验目的与内容实验实验1:定时器定时输出目的:学会LPC2220内部模块定时器的使用与其定时功能的设置。内容:利用LPC2220的定时器0定时,5秒时间到则控制蜂鸣器叫一声。实验实验2:定时器捕获输入目的:学会LPC2220内部模块定时器的匹配输出与捕获输入的使用。内容:首先,把定时器0的匹配输出来产生脉冲波(借鉴实验1);同时,匹配输出(P0.22)输入到捕获输入(P0.27)中。每发生一次捕获事件,就对发生的次数进行统计,并将统计的次数在数码管中显示

15、。实验1参考程序/*名称:_irq TimeO_IRQ()*功能:定时器0中断服务子程序(控制蜂鸣器鸣叫)。*/void _irq TimeO_IRQ(void)if(IO1PIN&BEE)=0)BEEON();/打开蜂鸣器else BEEOFF();/关闭蜂鸣器 T0IR=0 x01;/清除中断标志 VICVectAddr=0 x00;/中断结束/*名称:TimeO_Init()*功能:初始化定时器0模块,并开启定时器0的中断功能*/void Time0_Init(void)T0TC=0;/定时器计数器设置为0 T0PR=0;/时钟不分频 T0MCR=0 x03;/设置T0MR0匹配后复位T

16、0TC,并产生中断标志 T0MR0=Fpclk*5;/设置5s匹配值T0IR=0 x01;/清除中断标志 T0TCR=0 x03;/启动定时器0/*设置定时器0中断*/VICIntSelect=0 x00;/所有中断设置为向量中断VICVectCntl0=0 x24;/定时器0中断分配最高优先级 VICVectAddr0=(uint32)TimeO_IRQ;/设置中断向量地址 VICIntEnable=0 x00000010;/使能定时器0中断实验1参考程序/*名称:main()*功能:控制定时器0,使之产生5秒的延时*入口参数:无*出口参数:无*/int main(void)IO1DIR=I

17、O1DIR|BEE;/设置控制蜂鸣器引脚P1.24为I/O输出Time0_Init();/定时器0初始化 while(1);/死循环 return(0);实验1参考主程序volatile uint32 count;/*名称:_irq Time0_IRQ()*功能:定时器0中断服务子程序(计数值加1)。*/void _irq Time0_IRQ(void)count+;T0IR=0 xff;/清除中断标志 VICVectAddr=0 x00;/中断结束实验2参考子程序/*名称:Read()*功能:读取当前计数值。*/uint8 Read()return(count);定时器读取当前计数值程序定时

18、器初始化函数/*名称:Time0_Init()*功能:初始化定时器0.*/void Time0_Init(void)T0TC=0;/定时器0计数器清0 T0PR=0;/时钟不分频 T0MCR=0 x02;/设置T0MR0匹配后复位T0TC,但不产生中断标志T0MR0=Fpclk*5;/设置5s匹配值 T0CCR=0 x028;/设置CAP0.1功能:上升沿有效,并产生中断标志 T0IR=0 xFF;/清除中断标志 T0TCR=0 x03;/启动定时器1 /*设置定时器0中断*/VICIntSelect=0 x00;/所有中断设置为向量中断 VICVectCntl0=0 x24;/定时器0中断分

19、配最高优先级Slot0 VICVectAddr0=(uint32)Time0_IRQ;/设置中断向量地址 VICIntEnable=0 x00000010;/使能定时器1中断/*名称:main()*功能:使能定时器0匹配输出和捕获输入,并控制LED数码管显示捕获值*入口参数:无*出口参数:无*/int main(void)PINSEL1=0 x00403000;/设置P0.22引脚为MAT0.0匹配输出功能,P0.27为CAP0.1捕获输入 count=0;Time0_Init();/定时器0初始化 NumbTube_Init();/数码管初始化 while(1)NumbTube_Displa

20、y(Read(),0);/显示外部捕获的次数 return(0);实验2参考主程序三、PWM模块n概述概述PWM是Pulse Width Modulation的缩写,即脉冲宽度调制。n PWM原理原理PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制,用来对一个具体模拟信号的电平进行编码。等效的实现是基于采样定理中的一个重要的结论。n冲量相同而形状不同的窄脉冲加在具有惯性的环节上时,其效果冲量相同而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。基本相同。n用不同宽度的矩形波(b)来代替正弦波(a),通过对矩形波的控制来模拟输出不同频率的正弦波。

21、n例如,把正弦半波N等分,看成N个相连的脉冲序列,宽度相等,但幅值不等;用矩形脉冲代替,等幅,不等宽,中点重合,面积(冲量)相等,宽度按正弦规律变化。正弦波等效的PWM波形如图所示 n除了等效正弦波形,还可以等效成其他所需波形。根据PWM控制技术的特点,主要有以下8类等效方法:1、相电压控制PWM;2、线电压控制PWM;3、电流控制PWM;4、空间电压矢量控制PWM7;5、矢量控制PWM8;6、直接转矩控制PWM8;7、非线性控制PWM;8、谐振软开关PWM。1.1 PWM的应用及优点 nPWM的应用PWM控制技术广泛的运用在从测量、通信到功率控制与变换的许多领域中。n优点 从处理器到被控系统

22、信号都是数字形式的,无需进行数模转换;让信号保持为数字形式可将噪声影响降到最小 1.2 LPC2220的PWM模块n特性如下:1、带可编程32位预分频器的32位定时器;2、7个匹配寄存器,可实现6个PWM(PWM1PWM6)输出;3、支持单边沿控制和双边沿控制PWM输出;4、脉冲周期和宽度可以是任何的定时器计数值;5、当不使能PWM模式,则可以作为一个标准的定时器。nLPC2220的PWM模块中一共有1个定时计数器和7个匹配寄存器。PWM功能建立在匹配器事件之上,定时计数器对外设时钟进行计数,在达到指定的定时值时可选择中断或执行其他的动作。n单边沿控制或双边沿控制:单边沿控制PWM输出在每个周

23、期T开始时总是为高电平;双边沿控制PWM 输出可在一个周期T内的任何位置产生边沿。不同占空比的单边沿与正负脉冲双边沿的PWM输出 LPC2220的PWM模块单边沿控制PWM输出n每个单边沿控制PWM输出需要用到2个匹配寄存器。匹配寄存器PWMMR0控制PWM周期,另一个匹配寄存器来控制PWM边沿的位置。n所有单边沿控制PWM输出在PWM周期开始时都为高电平,在达到其匹配值都会变成低电平。单边沿控制PWM输出示意图 双边沿控制PWM输出n每个双边沿控制PWM输出需要用到3个匹配寄存器。PWMMR0匹配寄存器控制PWM周期,其他匹配寄存器控制2个PWM边沿位置。n置位匹配寄存器的值小于复位匹配寄存

24、器的值,将在一个PWM周期中产生一个正脉冲;n置位匹配寄存器的值大于复位匹配寄存器的值,将在一个PWM周期中产生一个负脉冲。PWM通道单边沿PWM(PWMSELn=0)双边沿PWM(PWMSELn=1)置位复位置位复位1PWMMR0PWMMR1PWMMR0PWMMR12PWMMR0PWMMR2PWMMR1PWMMR23PWMMR0PWMMR3PWMMR2PWMMR34PWMMR0PWMMR4PWMMR3PWMMR45PWMMR0PWMMR5PWMMR4PWMMR56PWMMR0PWMMR6PWMMR5PWMMR6PWM通道的置位和复位寄存器1.3 PWM内部结构介绍nPWMTC的计数频率由 p

25、clk时钟信号经过PWMPR进行分频控制得到;nPWMTCR控制定时器的启动停止、计数复位;nPWMIR会设置相关中断标志,若已打开中断允许则会产生中断。1.4 PWM寄存器介绍nPWM共有15个相关寄存器;4个与定时/计数器相关的寄存器;7个匹配寄存器;1个PWM中断寄存器保存中断标志;1个锁存使能寄存器;2个控制寄存器。名称描述访问复位值PWMIRPWM中断寄存器:可以写IR 来清除中断。也可以读取IR来识别哪个中断被挂起R/W0PWMTCRPWM 定时器控制寄存器:TCR用于控制定时器计数功能。定时器的计数器可以通过TCR禁止或复位R/W0PWMTCPWM 定时器计数器:TC每经过PR+

26、1个pclk周期加一。TC通过TCR进行控制R/W0PWMPRPWM 预分频寄存器:指定预分频的最大值PRR/W0PWMPCPWM 预分频计数器:每当32位PC的值增加到等于PR的值时,TC加一R/W0PWMMCRPWM匹配控制寄存器:MCR用于控制在匹配时是否产生中断或者复位TCR/W0PWMMR(06)PWM匹配寄存器(06):它们可以通过MCR设定在匹配时复位TC,停止TC和PC和/或产生中断。R/W0PWMPCRPWM控制寄存器:使能PWM输出并选择PWM的通道类型为单边沿或者是双边沿输出R/W0PWMLERPWM锁存使能寄存器:使能新的PWM匹配值R/W0PWM中断寄存器(PWMIR

27、)PWMIR功能描述复位值0PWMMR0中断PWM匹配通道0的中断标志01PWMMR1中断PWM匹配通道1的中断标志02PWMMR2中断PWM匹配通道2的中断标志03PWMMR3中断PWM匹配通道3的中断标志047保留用户不要向该位写入108PWMMR4中断PWM匹配通道4的中断标志09PWMMR5中断PWM匹配通道5的中断标志010PWMMR6中断PWM匹配通道6的中断标志0把PWM2配置为双边沿操作并处于运行中时,如何改写匹配值?1、写PWM匹配1寄存器2、写PWM匹配2寄存器3、写PWMLER,置位PWMLER1:24、更改后的值在下一次定时器复位时生效(PWM0匹配)1.5 PWM的操

28、作方法n控制寄存器PWMMCR设置定时器比较匹配,PWMMR(06)寄存器与PWMTC计数器进行比较。当比较匹配时,将按照PWMMCR设置的方法产生中断或复位PWMTC等。另外,PWMLER锁存使能寄存器。n比较匹配寄存器功能方框图如下:1.6 PWM基本操作步骤:1、连接PWM功能引脚输出;2、设置PWM定时器的时钟分频值,得到所要的定时器时钟;3、设置比较匹配控制与相应的比较值;4、设置PWM的输出方式并允许PWM输出及锁存使能控制;5、设置PWMTCR,启动定时器,使能PWM;6、运行过程中要更改比较值时,更改以后要设置锁存使能。1.7 实验目的与内容n实验目的:学会LPC2220内部模

29、块PWM的使用。n实验内容:利用LPC2220的PWM模块产生周期与占空比可调的脉冲波,观察LED灯变化。实验参考程序#define CYCLE_DATA 10*Fpclk /设置PWM的周期为10秒/*名称:PWM5_SET(uint8 DUTY_DATA)*功能:使用PWM5输出占空比可调的PWM信号*参数:DUTY_DATA为占空比参数,取值为09,值越大占空比越小*/void PWM5_SET(uint8 DUTY_DATA)PWMPR =0 x00;/不分频,计数频率为Fpclk PWMMCR=0 x02;/设置PWMMR0匹配时复位PWMTC PWMPCR=0 x2000;/允许P

30、WMMR5单边沿输出 PWMMR0=CYCLE_DATA;/设置PWM5的周期为10秒 PWMMR5=(10-DUTY_DATA)*Fpclk;/设置PWM5的占空比 PWMLER=0 x21;/PWMMR0和PWMMR5锁存 PWMTCR=0 x09;/启动定时器,PWM使能/*名称:main()*功能:使用PWM5输出占空比可调的PWM信号*/int main(void)uint8 key;PINSEL1=(PINSEL1&0 xfffff7ff)|0 x00000400;/设置PWM5连接到P0.21引脚KEY_Init();/调用键盘初始化函数PWM5_SET(1);/PWM5初始化为

31、周期10秒,占空比1/10的脉冲波while(1)key=KEY_Read();/读取按键值给变量keyif(key=0)&(key=year;/初始化年 MONTH=time-mon;/初始化月DOM=time-day;/初始化日DOW=time-dow;/初始化星期HOUR=time-hour;/初始化小时MIN=time-min;/初始化分SEC=time-sec;/初始化秒CCR=0 x01;/启动RTC 实验参考程序-SET_Time函数/*名称:GetTime(TIME*t)*功能:读取RTC时钟值。*入口参数:t 保存日期的TIME结构变量的指针*/void GetTime(TI

32、ME*t)t-year=YEAR;t-mon =MONTH;t-day=DOM;t-dow=DOW;t-hour=HOUR;t-min=MIN;t-sec=SEC;实验参考程序-GetTime函数/*文件名:RTC_IRQ()*功能:中断服务程序,当分值增加时蜂鸣器蜂鸣报警*/void _irq RTC_IRQ(void)if(CIIR&0 x02)!=0)/-分报警-BEEON();/打开蜂鸣器DelayMS(1);BEEOFF();while(ILR&0 x01)!=0)/清除中断标志ILR=0 x01;VICVectAddr=0;/中断结束实验参考程序-中断服务子程序/*文件名:RTC_

33、Init()*功能:RTC模块初始化函数*/PREINT=Fpclk/32768-1;/设置基准时钟分频器 PREFRAC=Fpclk-(Fpclk/32768)*32768;AMR=0 xff;/屏蔽报警CIIR=0 x02;/设置分值的增量产生一次中断ILR=0 x03;/清除中断标志 VICIntSelect=0 x00000000;/设置所有的通道为IRQ中断 VICVectCntl5=0 x20|13;/实时时钟中断分配到IRQ5 VICVectAddr5=(uint32)RTC_IRQ;/设置时钟中断服务程序的地址VICIntEnable=VICIntEnable|(113);/使

34、能实时时钟中断实验参考程序-RTC初始化子程序/*名称:main()*功能:使能实时时钟,控制数码管显示实时时钟的值*入口参数:无*出口参数:无*/int main(void)uint32 data;TIME a,b;NumbTube_Init();/数码管初始化b.year=2008;b.mon =8;b.day=2;b.dow=5;/2008年、8月、8日、星期5b.hour=20;b.min=0;b.sec=0;/20点、0分、0秒Set_Time(&b);/设置时钟值while(1)GetTime(&a);/取得当前RTC各个寄存器的值data=(a.min*100)+a.sec;Nu

35、mbTube_Display(data,3);/显示分,秒return(0);实验参考程序-主程序1.9 实验步骤与结果实验的步骤和结果如下:1.在Code Warrior IDE集成开发环境中,使用“Follow Me Study ARM”工程模板建立新工程。然后在工程中添加本实验的程序代码,编译链接整个工程。如果编译通过则在相应的目录下产生我们所需要的二进制文件和可执行映像文件。2.运行H-Flasher软件,将产生的二进制文件烧写到实验板上。3.打开AXD调试环境,并加载刚刚产生的可执行映像文件进行调试。4.单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速

36、运行。观察实验板,实验板实时将时间进行刷新并显示。五、看门狗模块n看门狗,又叫WatchDog Timer,也是一个定时器电路。看门狗的作用是当系统出现程序进入死循环,或者程序跑飞等情况时,它能够自动复位整个系统。n看门狗是利用一个定时器来监控主程序的运行。在主程序运行之前,我们对定时器设置了一个定时时间T并开始倒计时;在主程序必须要在定时时间T内完成并对定时器进行复位。如果出现死循环,或者说PC运行指针跑飞了,当倒计时为零之后就会给出一个复位信号到MCU,使MCU复位。一、LPC2220的看门狗模块n自带的看门狗的特性:自带的看门狗的特性:1、带内部预分频器的可编程32位定时器;2、如果没有

37、周期性重装,则产生片内复位;3、看门狗由软件使能,但只能由硬件复位或看门狗复位/中断来禁止看门狗;4、错误/不完整的喂狗时序会导致复位/中断;5、具有指示看门狗复位的标志;6、可选择Tpclk4倍数的时间周期:最小看门狗间隔为 (Tpclk4256),最大间隔为(Tpclk4232)。n先给WDTC寄存器设置好32位倒计数器的值,最小值为OxFF;n然后,对看门狗进行一次正确的喂狗,此时如果置位了WDEN位,那么就可以使能计数器了。n看门狗使能之后,32位倒计数器开始倒计时,可以通过访问当前WDT计数器来查看计数器的值;在倒计数器溢出之前,如果能正确喂狗,倒计数器复位到初始值,重新开始倒计数,

38、依此循环;n但如果计数器正在计数时,处理器执行了一次错误的喂狗,或者倒计数器溢出,则看门狗会复位处理器或者产生中断。1.1 看门狗模块工作过程1.2 看门狗使用方法 1.在WDTC寄存器中设置看门狗定时器的固定装载值;2.在WDMOD寄存器中设置模式,并使能看门狗;3.通过向WDFEED寄存器顺序写入OxAA和Ox55启动看门狗;4.在看门狗向下溢出之前应当再次喂狗以防止复位/中断;1.3 看门狗寄存器描述名称描述复位值WDMOD看门狗模式寄存器。该寄存器包含看门狗定时器的基本模式和状态0WDTC看门狗定时器常数寄存器。该寄存器决定超时值0 xFFWDFEED看门狗喂狗寄存器。(先为0 xAA

39、,然后为0 x55)NAWDTV看门狗定时器值寄存器(当前定时器值)0 xFF在看门狗溢出之前,必须完成一次有效的喂狗时序。1.3 看门狗寄存器描述WDMOD功能描述复位值0WDEN看门狗中断使能位(只能置位,无法使用软件将其清零,由外部复位或看门狗定时器溢出清零)01WDRESET看门狗复位使能位(只能置位,无法使用软件将其清零,由外部复位或看门狗定时器溢出清零)02WDTOF看门狗超时标志0(外部复位)3WDINT看门狗中断标志047保留保留,用户不要写入1NAWDEN:该位置1时,只是使能看门狗,并没有启动看门狗,启动看门狗是在第一次喂狗操作。WDTOF:该标志由软件清零。WDINT:任

40、何复位都会使该位清零。1.4 实验目的与内容n实验目的实验目的:学会LPC2220内部模块看门狗的使用。n实验内容实验内容:设置LPC2220的看门狗模块,然后程序进入死循环,等待WDT复位。1.5 实验参考程序#define WDTFeed()WDFEED=0 xAA;WDFEED=0 x55/喂狗程序/*名称:main()*功能:运行WDT,并控制蜂鸣器连续叫三声(每一声的延续时间为1秒,间隔为1秒)*然后处理器进入死循环,等待WDT复位(等待的时间为8秒)*/int main(void)uint8 i;IO1DIR=IO1DIR|BEE;/设置控制蜂鸣器引脚P1.24为I/O输出 WDT

41、C=Fpclk*2;/WDT计数时间为2*4=8 秒WDMOD=0 x03;/设置看门狗溢出复位,并使能WDT WDTFeed();/进行喂狗操作,把WDTC的值装入看门狗定时器 for(i=0;i3;i+)/连续叫三声 BEEON();DelayMS(1);/延时为1毫秒 BEEOFF();DelayMS(1);while(1);/死循环 return(0);1.6 实验步骤与结果单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速运行,蜂鸣器会叫3声,然后进入死循环。当到达8秒钟后,程序会重新复位并运行。六、低功耗实验n这对于便携式和移动性较强的嵌入式产品尤其重

42、要。这些产品不是一直都有充足的电源供应,往往是靠电池来供电,设计人员从每一个细节来考虑降低功率消耗,从而尽可能地延长电池使用时间。n在嵌入式系统的设计中,低功耗设计是许多设计人员必须面对的问题:一方面要求供电设备的功耗尽可能的低;一方面希望它能实现更多的功能。n两个方面综合考虑:硬件设计和软件设计。n从硬件设计考虑降低功耗问题,主要有三条途径:1、选择合适的处理器;2、接口电路的合理设计;3、处理器支持的动态电源管理。n设计者仍需尽量将应用的低功耗特性反映在软件中,以避免那些“看不见”的功耗损失。主要有如下三条途径 1、用中断代替查询 2、用“宏”代替“子程序”3、尽量减少CPU的运算量。降低

43、功耗的途径1.1 LPC2220中的功率控制-节电模式nLPC2220支持两种节电模式:空闲模式空闲模式和掉电模式掉电模式。1空闲模式空闲模式在空闲模式下,指令的执行被挂起直到复位或者中断,但系统的时钟cclk一直有效;通过定时器的定时器中断可使处理器恢复工作;空闲模式使处理器、存储系统和相关的控制器以及内部总线不再消耗功率。2掉电模式掉电模式在掉电模式下,振荡器关闭,芯片没有任何内部时钟。处理器状态、寄存器和外设寄存器以及内部的SRAM值在掉电模式下被保持。复位或者特定的不需要时钟仍能工作的中断可使处理器恢复运行。定时器中断不能唤醒处理器。在掉电模式下芯片的功耗几乎为零。n功率控制两种模式对

44、比模式类别内部时钟外设工作芯片状态唤醒方式功耗空闲有是保持复位、任何中断低掉电无需要时钟支持的外设停止工作保持复位、不需要时钟支持的中断几乎为零LPC2220中的功率控制-节电模式节电模式控制寄存器PCONPD位IDL位芯片状态00正常工作01空闲模式10掉电模式11掉电模式外部中断唤醒寄存器(EXTWAKE)EXTWAKE功能描述复位值0EXTWAKE0该位为1时,使能EINT0将处理器从掉电模式唤醒01EXTWAKE1该位为1时,使能EINT1将处理器从掉电模式唤醒02EXTWAKE2该位为1时,使能EINT2将处理器从掉电模式唤醒03EXTWAKE3该位为1时,使能EINT3将处理器从掉

45、电模式唤醒047保留保留,用户不要写入1NAnEINTn功能必须接到引脚才能实现掉电唤醒n实现掉电唤醒不需要在VIC中使能相应的中断,既将处理器从掉电模式唤醒,又不产生中断。外设功率控制寄存器(PCONP)LPC2220的功率控制-外设功率控制功率控制注意要点:该寄存器允许将所选的外设功能关闭以实现节电的目的。芯片中有部分外设不能被关闭,分别为看门狗定时器、GPIO、引脚连接模块和系统控制模块。在运行片外存储器的程序时,不要设置PCEMC为0,否则由于EMC关闭,会导致程序运行错误。芯片复位后,硬件设置PCONP的值为使能芯片内所有的接口和外围模块。因此用户的应用程序除了对外围部件的相关寄存器

46、进行配置外,不需要为了启用片内的某个外围功能而设置PCONP寄存器;在需要控制功率的系统中,只要将应用中用到的外围模块对应在PCONP寄存器的位置1,而寄存器的其它“保留”位或当前无需使用的外围模块对应在寄存器中的位都必须清零。唤醒定时器n唤醒定时器用途 唤醒定时器的用途:当给芯片复位或某个事件将处理器从掉电模式唤醒时,需要唤醒定时器来确保振荡器和芯片所需要的其它模拟电路在处理器开始执行指令之前能够正确工作。唤醒定时器的工作完全由硬件控制,不需要用户干预。复位或掉电唤醒振荡器输出时钟产生单元启动唤醒定时器 如果使能了外部中断唤醒功能,并且所选中断事件出现,那么唤醒定时器将被启动。如果向量中断控

47、制器(VIC)的中断功能也使能,那么实际的中断在唤醒定时器停止后产生。计数4096个时钟后控制开关闭合对输入时钟计数1.2 实验目的与内容n实验目的实验目的:学会LPC2220内部模块低功耗的使用。n实验内容实验内容1:设置LPC2220的低功耗模块,控制LPC2220进入掉电模式,并允许外部中断唤醒。每按一次中断按键(位于实验板的右下角),芯片被唤醒一次。n实验内容实验内容2:设置LPC2220的低功耗模块,控制处理器进入空闲模式,当有定时器中断时,芯片被重新唤醒。实验1参考程序/*名称:main()*功能:蜂鸣器叫一声,然后控制处理器进入掉电模式,当有外部中断时,唤醒处理器*/int ma

48、in(void)IO1DIR=IO1DIR|BEE;/设置控制蜂鸣器引脚P1.24为I/O输出 PINSEL0=0 x20000000;/设置I/O口连接,P0.14设置为EINT1 EXTMODE=0 x02;/EINT1使用边沿触发 EXTPOLAR=0 x00;/EINT1下降沿有效 EXTINT=0 x0F;/清除外部中断标志 VICIntEnable=VICIntEnable|0 x00008000;/使能EINT1中断 EXTWAKE=0 x02;/允许外部中断1唤醒掉电的CPU PCONP=0 x0800;/EMC使能,关闭其他的片内外设 while(1)BeeON();/控制蜂

49、鸣器叫一声,时间为1毫秒 DelayMS(2);BeeOFF();PCON=0 x02;/系统进入掉电模式 return(0);实验1步骤与结果1.在Code Warrior IDE集成开发环境中,使用“Follow Me Study ARM”工程模板建立新工程。然后在工程中添加本实验的程序代码,编译链接整个工程。如果编译通过则在相应的目录下产生我们所需要的二进制文件和可执行映像文件。2.运行H-Flasher软件,将产生的二进制文件烧写到实验板上。3.打开AXD调试环境,并加载刚刚产生的可执行映像文件进行调试。4.单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全

50、速运行,蜂鸣器会叫1声,然后进入掉电模式,一直等待外部中断按键(实验板中的标号为“key”按键)程序才唤醒。每唤醒一次,蜂鸣器响一次。实验2参考程序/*名称:main()*功能:蜂鸣器首先叫两声,然后处理器进入空闲模式。当有定时器0定时2S结束后,*定时器产生中断,重新唤醒处理器。*/int main(void)IO1DIR=IO1DIR|BEE;/设置控制蜂鸣器引脚P1.24为I/O输出 T0TC=0;/定时器设置为0 T0PR=0;/时钟不分频 T0MCR=0 x03;/设置T0MR0匹配后复位T0TC,并产生中断标志 T0MR0=Fpclk*2;/设置2S匹配值 T0TCR=0 x01;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁