




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章时钟控制模块第1页,共131页,2023年,2月20日,星期四一、概述时钟的概念:
时钟就是一连串连续的、周期的和占空比固定的时钟脉冲信号。时钟的作用:
时钟发生器提供给芯片一个连续的脉冲信号让芯片完成一定任务。第2页,共131页,2023年,2月20日,星期四一种是利用内部的晶体振荡器,我们称之为振荡模式,如图(a)所示;另一种是使用外部振荡源提供的脉冲信号,此为从属模式,如图(b)所示。(a)(b)1.1时钟电路的设计方法第3页,共131页,2023年,2月20日,星期四LPC2000系列芯片的时钟来源: 1、振荡模式:使用外部晶体; 2、从属模式:从XTAL1脚输入占空比为1/2的时钟信号。1.2LPC2220的时钟外设功能模块的时钟pclk的得来: 高频率的cclk经过一个分频器分频后的时钟pclk作为其时钟源。处理器的时钟cclk的得来:Fosc经过PLL锁相环模块加以倍频得到。第4页,共131页,2023年,2月20日,星期四二、定时/计数器模块定时/计数器的功能
计数功能:
是指对外部脉冲信号进行计数,不需要基准时钟。
定时功能:
功能需要用到某个基准时钟,通过对基准时钟的计数来完成定时功能。第5页,共131页,2023年,2月20日,星期四定时/计数器用途:
1)产生所需频率的脉冲; 2)在频率测量中的应用; 3)在累加计数中的应用; 4)定时/计数器在计时中的应用。计数器在累加计数原理框图第6页,共131页,2023年,2月20日,星期四LPC2220系列有定时器0和定时器l两个定时器。两个定时器除了外设基地址不相同以外,其他都相同。定时器对外设时钟pclk周期进行计数;当计数数值等于匹配寄存器的值时,可以产生中断或执行其它动作;利用这一特性可实现定时功能。它还包括捕获输入,用于在输入信号发生跳变时捕获定时器值,并可选择产生中断。利用这一特性可实现对外部脉冲进行计数。1.1LPC2220的定时器模块第7页,共131页,2023年,2月20日,星期四 特性:带可编程32位预分频器的32位定时器/计数器。具有4路捕获通道。可选择使捕获事件产生中断,当输入信号跳变时可取得定时器的瞬时值。具有4个32位匹配寄存器,并有4个对应于匹配寄存器的外部输出。 功能:1、匹配输出
输出脉冲波形,输出引脚为MAT0.x和MAT1.x。2、捕获输入
感知外部脉冲的边沿输入,输入对应引脚为CAP0.x和CAP1.x。1.2定时器的特性与功能第8页,共131页,2023年,2月20日,星期四当MR0~MR3与定时器计数器TC发生匹配时,内核将会按照MCR设置的方法产生中断、停止或复位TC等;根据EMR的设置控制匹配后在相应引脚输出高电平、低电平或者执行电平翻转等。定时器---匹配输出第9页,共131页,2023年,2月20日,星期四当有捕获触发信号产生时,捕获电路将会立即把当时的定时器值TC复制到对应触发通道的捕获寄存器CR0~CR3中。通过设置CCR可将捕获设置为上升沿触发、下降沿触发、双边沿触发,并可设置为捕获中断。定时器---捕获输入第10页,共131页,2023年,2月20日,星期四1.3定时器的内部结构1第11页,共131页,2023年,2月20日,星期四定时器的内部结构232位定时器TC的计数频率由外设时钟pclk输入经过PR进行分频控制得到,PR指定预分频数的最大值;PC为分频计数器,当PC累加到等于PR值时,TC+1,且PC从0开始重新计数;TCR控制定时器的启动/停止、计数复位。当定时器TC与匹配寄存器MR0~MR3发生匹配时,将会按照MCR设置的方法产生中断、停止或复位TC等。第12页,共131页,2023年,2月20日,星期四1.4寄存器描述
标号名称描述访问复位值TxIR中断寄存器可以写IR来清除中断。可读取IR来识别哪个中断被挂起R/W0TxTCR定时器控制寄存器TCR用于控制定时器计数器功能。定时器计数器可通过TCR禁止或复位R/W0TxTC定时器计数器32位的TC每经过PR+1个pclk周期加1。TC通过TCR进行控制0TxPR预分频寄存器保存预分频计数的最大值PRR/W0TxPC预分频计数器32位的PC每经过PR+1个pclk时,TC加1R/W0TxMCR匹配控制寄存器MCR用于控制在匹配时是否产生中断或复位TCR/W0TxMR(0~3)匹配寄存器(0~3)可通过MCR设定在匹配时复位TC,停止TC和PC和/或产生中断R/W0TxCCR捕获控制寄存器它控制用于用于装载捕获寄存器的捕获输入边沿以及在发生捕获时是否产生中断R/W0TxCR(0~3)捕获寄存器(0~3)当CAP(0.0~0.3)或CAP(1.0~1.3)产生捕获事件时,CR(0~3)装载TC的值RO0TxEMR外部匹配寄存器EMR控制外部匹配引脚MAT0.0~MAT0.3或MAT1.0~MAT1.3RW0第13页,共131页,2023年,2月20日,星期四中断寄存器TxIR
中断寄存器包含了4个位用于匹配中断,4个位用于捕获中断。IR功能描述复位值0MR0中断匹配通道0的中断标志01MR1中断匹配通道1的中断标志02MR2中断匹配通道2的中断标志03MR3中断匹配通道3的中断标志04CR0中断捕获通道0事件的中断标志05CR1中断捕获通道1事件的中断标志06CR2中断捕获通道2事件的中断标志07CR3中断捕获通道3事件的中断标志0第14页,共131页,2023年,2月20日,星期四定时器控制寄存器TxTCR
TCR功能描述复位值0计数器使能为1时,定时器计数器和预分频计数器使能,为0时,计数器禁能。01计数器复位为1时,定时器计数器和预分频计数器在pclk的下一个上升沿同步复位,计数器在TCR的bit1恢复为0之前保持复位状态。0第15页,共131页,2023年,2月20日,星期四匹配控制寄存器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的匹配使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第16页,共131页,2023年,2月20日,星期四捕获控制寄存器TxCCR
IR功能描述复位值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装载将产生中断,为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上的捕获事件导致的CR3装载将产生中断,为0时,则禁止。0第17页,共131页,2023年,2月20日,星期四外部匹配寄存器TxEMR
IR功能描述复位值0外部匹配0当MR0发生匹配时,该输出可翻转,变为低电平,高电平或不执行任何动作,由位EMR[4:5]控制。01外部匹配1当MR1发生匹配时,该输出可翻转,变为低电平,高电平或不执行任何动作,由位EMR[6:7]控制。02外部匹配2当MR2发生匹配时,该输出可翻转,变为低电平,高电平或不执行任何动作,由位EMR[8:9]控制。03外部匹配3当MR3发生匹配时,该输出可翻转,变为低电平,高电平或不执行任何动作,由位EMR[10:11]控制。05:4外部匹配控制000:不执行任何动作01:输出设置为010:输出设置为111:输出翻转07:6外部匹配控制100:不执行任何动作01:输出设置为010:输出设置为111:输出翻转09:8外部匹配控制200:不执行任何动作01:输出设置为010:输出设置为111:输出翻转011:10外部匹配控制300:不执行任何动作01:输出设置为010:输出设置为111:输出翻转0第18页,共131页,2023年,2月20日,星期四1.5定时器的操作方法 ①设置定时计数器的时钟频率,定时器计数时钟频率计算公式如下: 计数时钟频率=Fpclk/(PR+1) ②设置定时器的工作模式。 ③若使用定时器的相关中断,则设置VIC中断使能寄存器,使能中断; ④设置TCR,启动定时器定时。第19页,共131页,2023年,2月20日,星期四1.5定时器的操作方法例子:配置定时器为:匹配时停止计数器并产生中断,预分频计数器为2,匹配寄存器设置为6.在定时器到达匹配值的下一个周期中,TCR中的定时器使能位清零并产生指示匹配发生的中断。第20页,共131页,2023年,2月20日,星期四1.6实验目的与内容实验1:定时器定时输出
目的:学会LPC2220内部模块定时器的使用与其定时功能的设置。 内容:利用LPC2220的定时器0定时,5秒时间到则控制蜂鸣器叫一声。实验2:定时器捕获输入 目的:学会LPC2220内部模块定时器的匹配输出与捕获输入的使用。 内容:首先,把定时器0的匹配输出来产生脉冲波(借鉴实验1);同时,匹配输出(P0.22)输入到捕获输入(P0.27)中。每发生一次捕获事件,就对发生的次数进行统计,并将统计的次数在数码管中显示。第21页,共131页,2023年,2月20日,星期四实验1参考程序/***************************************************************************名称:__irqTimeO_IRQ()*功能:定时器0中断服务子程序(控制蜂鸣器鸣叫)。*************************************************************************/void__irqTimeO_IRQ(void){ if((IO1PIN&BEE)==0) BEEON(); //打开蜂鸣器
else BEEOFF(); //关闭蜂鸣器
T0IR=0x01; //清除中断标志
VICVectAddr=0x00; //中断结束}第22页,共131页,2023年,2月20日,星期四/*****************************************************************************名称:TimeO_Init()*功能:初始化定时器0模块,并开启定时器0的中断功能****************************************************************************/voidTime0_Init(void){ T0TC=0; //定时器计数器设置为0 T0PR=0; //时钟不分频
T0MCR=0x03; //设置T0MR0匹配后复位T0TC,并产生中断标志
T0MR0=Fpclk*5; //设置5s匹配值
T0IR=0x01; //清除中断标志
T0TCR=0x03; //启动定时器0 /*设置定时器0中断*/ VICIntSelect=0x00; //所有中断设置为向量中断
VICVectCntl0=0x24; //定时器0中断分配最高优先级
VICVectAddr0=(uint32)TimeO_IRQ; //设置中断向量地址
VICIntEnable=0x00000010; //使能定时器0中断}实验1参考程序第23页,共131页,2023年,2月20日,星期四/*****************************************************************************名称:main()*功能:控制定时器0,使之产生5秒的延时*入口参数:无*出口参数:无****************************************************************************/intmain(void){ IO1DIR=IO1DIR|BEE;//设置控制蜂鸣器引脚P1.24为I/O输出
Time0_Init(); //定时器0初始化
while(1); //死循环
return(0);}实验1参考主程序第24页,共131页,2023年,2月20日,星期四volatileuint32count;/***************************************************************************名称:__irqTime0_IRQ()*功能:定时器0中断服务子程序(计数值加1)。*************************************************************************/void__irqTime0_IRQ(void){ count++; T0IR=0xff; //清除中断标志
VICVectAddr=0x00; //中断结束}实验2参考子程序第25页,共131页,2023年,2月20日,星期四/*****************************************************************************名称:Read()*功能:读取当前计数值。****************************************************************************/uint8Read(){ return(count);} 定时器读取当前计数值程序定时器初始化函数/*****************************************************************************名称:Time0_Init()*功能:初始化定时器0.****************************************************************************/voidTime0_Init(void){第26页,共131页,2023年,2月20日,星期四
T0TC=0; //定时器0计数器清0 T0PR=0; //时钟不分频
T0MCR=0x02; //设置T0MR0匹配后复位T0TC,但不产生中断标志
T0MR0=Fpclk*5; //设置5s匹配值
T0CCR=0x028; //设置CAP0.1功能:上升沿有效,并产生中断标志
T0IR=0xFF; //清除中断标志
T0TCR=0x03; //启动定时器1
/*设置定时器0中断*/ VICIntSelect=0x00; //所有中断设置为向量中断
VICVectCntl0=0x24; //定时器0中断分配最高优先级Slot0 VICVectAddr0=(uint32)Time0_IRQ;//设置中断向量地址
VICIntEnable=0x00000010; //使能定时器1中断}第27页,共131页,2023年,2月20日,星期四/*****************************************************************************名称:main()*功能:使能定时器0匹配输出和捕获输入,并控制LED数码管显示捕获值*入口参数:无*出口参数:无****************************************************************************/intmain(void){ PINSEL1=0x00403000;//设置P0.22引脚为MAT0.0匹配输出功能,P0.27为CAP0.1捕获输入
count=0; Time0_Init(); //定时器0初始化
NumbTube_Init(); //数码管初始化
while(1) NumbTube_Display(Read(),0);//显示外部捕获的次数
return(0);}实验2参考主程序第28页,共131页,2023年,2月20日,星期四三、PWM模块概述
PWM是PulseWidthModulation的缩写,即脉冲宽度调制。PWM原理
PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制,用来对一个具体模拟信号的电平进行编码。等效的实现是基于采样定理中的一个重要的结论。第29页,共131页,2023年,2月20日,星期四冲量相同而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。第30页,共131页,2023年,2月20日,星期四用不同宽度的矩形波(b)来代替正弦波(a),通过对矩形波的控制来模拟输出不同频率的正弦波。例如,把正弦半波N等分,看成N个相连的脉冲序列,宽度相等,但幅值不等;用矩形脉冲代替,等幅,不等宽,中点重合,面积(冲量)相等,宽度按正弦规律变化。正弦波等效的PWM波形如图所示第31页,共131页,2023年,2月20日,星期四除了等效正弦波形,还可以等效成其他所需波形。根据PWM控制技术的特点,主要有以下8类等效方法:
1、相电压控制PWM;
2、线电压控制PWM;
3、电流控制PWM;
4、空间电压矢量控制PWM[7];
5、矢量控制PWM[8];
6、直接转矩控制PWM[8];
7、非线性控制PWM; 8、谐振软开关PWM。第32页,共131页,2023年,2月20日,星期四
1.1PWM的应用及优点
PWM的应用
PWM控制技术广泛的运用在从测量、通信到功率控制与变换的许多领域中。
优点 ①从处理器到被控系统信号都是数字形式的,无需进行数模转换; ②让信号保持为数字形式可将噪声影响降到最小第33页,共131页,2023年,2月20日,星期四1.2LPC2220的PWM模块特性如下:
1、带可编程32位预分频器的32位定时器; 2、7个匹配寄存器,可实现6个PWM(PWM1~PWM6)输出;
3、支持单边沿控制和双边沿控制PWM输出;
4、脉冲周期和宽度可以是任何的定时器计数值;
5、当不使能PWM模式,则可以作为一个标准的定时器。第34页,共131页,2023年,2月20日,星期四LPC2220的PWM模块中一共有1个定时计数器和7个匹配寄存器。PWM功能建立在匹配器事件之上,定时计数器对外设时钟进行计数,在达到指定的定时值时可选择中断或执行其他的动作。单边沿控制或双边沿控制: 单边沿控制PWM输出在每个周期T开始时总是为高电平; 双边沿控制PWM输出可在一个周期T内的任何位置产生边沿。不同占空比的单边沿与正负脉冲双边沿的PWM输出LPC2220的PWM模块第35页,共131页,2023年,2月20日,星期四单边沿控制PWM输出每个单边沿控制PWM输出需要用到2个匹配寄存器。匹配寄存器PWMMR0控制PWM周期,另一个匹配寄存器来控制PWM边沿的位置。所有单边沿控制PWM输出在PWM周期开始时都为高电平,在达到其匹配值都会变成低电平。
单边沿控制PWM输出示意图第36页,共131页,2023年,2月20日,星期四双边沿控制PWM输出每个双边沿控制PWM输出需要用到3个匹配寄存器。PWMMR0匹配寄存器控制PWM周期,其他匹配寄存器控制2个PWM边沿位置。置位匹配寄存器的值小于复位匹配寄存器的值,将在一个PWM周期中产生一个正脉冲;置位匹配寄存器的值大于复位匹配寄存器的值,将在一个PWM周期中产生一个负脉冲。第37页,共131页,2023年,2月20日,星期四PWM通道单边沿PWM(PWMSELn=0)双边沿PWM(PWMSELn=1)置位复位置位复位1PWMMR0PWMMR1PWMMR0PWMMR12PWMMR0PWMMR2PWMMR1PWMMR23PWMMR0PWMMR3PWMMR2PWMMR34PWMMR0PWMMR4PWMMR3PWMMR45PWMMR0PWMMR5PWMMR4PWMMR56PWMMR0PWMMR6PWMMR5PWMMR6PWM通道的置位和复位寄存器第38页,共131页,2023年,2月20日,星期四1.3PWM内部结构介绍PWMTC的计数频率由pclk时钟信号经过PWMPR进行分频控制得到;
PWMTCR控制定时器的启动/停止、计数复位;PWMIR会设置相关中断标志,若已打开中断允许则会产生中断。第39页,共131页,2023年,2月20日,星期四1.4PWM寄存器介绍PWM共有15个相关寄存器;4个与定时/计数器相关的寄存器;7个匹配寄存器;1个PWM中断寄存器保存中断标志;1个锁存使能寄存器;2个控制寄存器。名称描述访问复位值PWMIRPWM中断寄存器:可以写IR来清除中断。也可以读取IR来识别哪个中断被挂起R/W0PWMTCRPWM定时器控制寄存器:TCR用于控制定时器计数功能。定时器的计数器可以通过TCR禁止或复位R/W0PWMTCPWM定时器计数器:TC每经过PR+1个pclk周期加一。TC通过TCR进行控制R/W0PWMPRPWM预分频寄存器:指定预分频的最大值PRR/W0PWMPCPWM预分频计数器:每当32位PC的值增加到等于PR的值时,TC加一R/W0PWMMCRPWM匹配控制寄存器:MCR用于控制在匹配时是否产生中断或者复位TCR/W0PWMMR(0~6)PWM匹配寄存器(0~6):它们可以通过MCR设定在匹配时复位TC,停止TC和PC和/或产生中断。R/W0PWMPCRPWM控制寄存器:使能PWM输出并选择PWM的通道类型为单边沿或者是双边沿输出R/W0PWMLERPWM锁存使能寄存器:使能新的PWM匹配值R/W0第40页,共131页,2023年,2月20日,星期四第41页,共131页,2023年,2月20日,星期四第42页,共131页,2023年,2月20日,星期四PWM中断寄存器(PWMIR)PWMIR功能描述复位值0PWMMR0中断PWM匹配通道0的中断标志01PWMMR1中断PWM匹配通道1的中断标志02PWMMR2中断PWM匹配通道2的中断标志03PWMMR3中断PWM匹配通道3的中断标志04~7保留用户不要向该位写入108PWMMR4中断PWM匹配通道4的中断标志09PWMMR5中断PWM匹配通道5的中断标志010PWMMR6中断PWM匹配通道6的中断标志0第43页,共131页,2023年,2月20日,星期四第44页,共131页,2023年,2月20日,星期四第45页,共131页,2023年,2月20日,星期四把PWM2配置为双边沿操作并处于运行中时,如何改写匹配值?
1、写PWM匹配1寄存器
2、写PWM匹配2寄存器
3、写PWMLER,置位PWMLER[1:2]
4、更改后的值在下一次定时器复位时生效(PWM0匹配)第46页,共131页,2023年,2月20日,星期四第47页,共131页,2023年,2月20日,星期四第48页,共131页,2023年,2月20日,星期四1.5PWM的操作方法控制寄存器PWMMCR设置定时器比较匹配,PWMMR(0~6)寄存器与PWMTC计数器进行比较。当比较匹配时,将按照PWMMCR设置的方法产生中断或复位PWMTC等。另外,PWMLER锁存使能寄存器。比较匹配寄存器功能方框图如下:第49页,共131页,2023年,2月20日,星期四1.6PWM基本操作步骤: 1、连接PWM功能引脚输出; 2、设置PWM定时器的时钟分频值,得到所要的定时器时钟; 3、设置比较匹配控制与相应的比较值; 4、设置PWM的输出方式并允许PWM输出及锁存使能控制; 5、设置PWMTCR,启动定时器,使能PWM; 6、运行过程中要更改比较值时,更改以后要设置锁存使能。第50页,共131页,2023年,2月20日,星期四第51页,共131页,2023年,2月20日,星期四第52页,共131页,2023年,2月20日,星期四1.7实验目的与内容实验目的:学会LPC2220内部模块PWM的使用。实验内容:利用LPC2220的PWM模块产生周期与占空比可调的脉冲波,观察LED灯变化。第53页,共131页,2023年,2月20日,星期四实验参考程序#defineCYCLE_DATA10*Fpclk//设置PWM的周期为10秒/**************************************************************************名称:PWM5_SET(uint8DUTY_DATA)*功能:使用PWM5输出占空比可调的PWM信号*参数:DUTY_DATA为占空比参数,取值为0~9,值越大占空比越小**************************************************************************/voidPWM5_SET(uint8DUTY_DATA){ PWMPR=0x00;//不分频,计数频率为Fpclk PWMMCR=0x02;//设置PWMMR0匹配时复位PWMTC PWMPCR=0x2000;//允许PWMMR5单边沿输出
PWMMR0=CYCLE_DATA;//设置PWM5的周期为10秒
PWMMR5=(10-DUTY_DATA)*Fpclk;//设置PWM5的占空比
PWMLER=0x21;//PWMMR0和PWMMR5锁存
PWMTCR=0x09;//启动定时器,PWM使能}第54页,共131页,2023年,2月20日,星期四/*****************************************************************************名称:main()*功能:使用PWM5输出占空比可调的PWM信号****************************************************************************/intmain(void){ uint8key; PINSEL1=(PINSEL1&0xfffff7ff)|0x00000400;//设置PWM5连接到P0.21引脚
KEY_Init(); //调用键盘初始化函数
PWM5_SET(1); //PWM5初始化为周期10秒,占空比1/10的脉冲波
while(1) { key=KEY_Read(); //读取按键值给变量key if((key>=0)&&(key=<9))PWM5_SET(key); //重新设置PWM5的占空比
} return(0);}第55页,共131页,2023年,2月20日,星期四1.8实验步骤与结果
单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速运行。
连接电路,将PWM插座的3脚连接到LED灯的插孔处,可以看到LED灯的闪烁。按下键盘上的1~9号按键,LED等的闪烁情况将发生相应的变化。第56页,共131页,2023年,2月20日,星期四四、实时时钟模块概念:
实时时钟(RTC)是一种由晶体控制精度的向主系统提供时间和日期的器件。特性: 它能实时刷新时间与日期信息,还可以根据实际需要设置报警,闹铃等,功耗非常低,一般都在uW级。实时的应用:
实时时钟得以广泛应用在时钟日历,电子表,计算机,手机等领域。第57页,共131页,2023年,2月20日,星期四1.1LPC2220的实时时钟模块概述 LPC2220系列自带的实时时钟可用来日期及时分秒计时、定时报警等。其计数时钟是通过对Fpclk进行分频得到,它的基准时钟分频器允许调节任何频率高于65.536KHZ的外设时钟源,并产生一个32.768KHZ的基准时钟。特性
①带日历和时钟功能;②超低功耗设计;③提供秒、分、小时、日、月、年和星期;④可编程基准时钟分频允许调节RTC以适应不同的晶振频率。第58页,共131页,2023年,2月20日,星期四
1.2
实时时钟模块的内部结构第59页,共131页,2023年,2月20日,星期四实时时钟的时钟源pclk在经过基准时钟分频器分频后,调整出频率为32.768KHz的基准时钟clk32k,然CTC对时钟节拍计数进行计数。CTC每秒计数32768个时钟,用于产生秒的时钟节拍clk1Hz。当秒脉冲信号clk有效时,时间计数寄存器组将会实时更新。当报警寄存器组中某个寄存器与时间计数寄存器组中相对应的寄存器经比较器比较相等后,将产生相应的中断标志。1.3
实时时钟模块的内部工作原理第60页,共131页,2023年,2月20日,星期四
RTC可以产生两种中断: 1、计数器增量中断; 2、报警寄存器中断。1.增量中断CIIR中的每个位都对应一个时间计数器。如果CIIR使能某一个特定的计数器,那么该计数器的值每增加一次就产生一个中断。增量中断控制原理图1.4
实时时钟模块RTC的中断第61页,共131页,2023年,2月20日,星期四2.报警中断报警寄存器允许用户设定产生中断的日期和/或时间。如果所有非屏蔽报警寄存器与它们对应的时间计数器的值相匹配时,则会产生中断。报警器中断控制原理图实时时钟模块RTC的中断第62页,共131页,2023年,2月20日,星期四1.5RTC基本操作方法 实时时钟的时钟源是由外设时钟pclk通过基准时钟分频器,调整出32768Hz的频率,然后供给CTC计数器。它每秒计数32768个时钟,到1秒计数完成之后,就会更新完整时间寄存器和RTC时间寄存器。第63页,共131页,2023年,2月20日,星期四1.6RTC基本操作步骤1、设置RTC基准时钟分频寄存器PREINT和基准时钟分频寄存器PREFRAC;其值计算如下:
PREIN=int(pclk/32768)-1PREFRAC=pclk–(PREIN+1)×327682、初始化RTC时间寄存器的值;3、报警中断设置;4、启动RTC,即CCR的CLKEN位置位;5、读取完整时间计数器的值,或等待中断。第64页,共131页,2023年,2月20日,星期四RTC相关寄存器介绍组名寄存器名描述混合寄存器组ILR中断位置寄存器CTC时钟节拍计数器(只读)CCR时钟控制寄存器CIIR计数器递增中断寄存器AMR报警屏蔽寄存器CTIME0~2完整时间寄存器0~2时间计数器组SEC、MIN、HOUR秒寄存器、分寄存器、小时寄存器DOM、DOY日期(月)寄存器、日期(年)寄存器DOW、MONTH、YEAR星期寄存器、月寄存器、年寄存器报警寄存器组ALSEC、ALMIN、ALHOUR秒报警值、分报警值、小时报警值ALDOM、ALDOY日期(月)报警值、日期(年)报警值ALDOW、ALMONTH、ALYEAR星期报警值、月报警值、年报警值基准时间分频器PREINT预分频值,整数部分PREFRAC预分频值,小数部分第65页,共131页,2023年,2月20日,星期四中断位置寄存器ILRILR功能描述0RTCCF为1时,计数器增量中断模块产生中断。向该位写入1,清除该中断。1RTCALF为1时,报警寄存器产生中断。向该位写入1,清除该中断。CTC功能描述0保留保留,用户不要向其写入11~15时钟节拍计数器位于秒计数器之前,CTC每秒技术32768个时钟时钟节拍计数器CTC第66页,共131页,2023年,2月20日,星期四时钟控制寄存器CCRCCR功能描述0CLKEN时钟使能位。为1时,计数器使能,为0时,计数器禁能,可对其进行初始化。1CTCRSTCTC复位控制位。为1时,时钟节拍计数器复位。在CCR的bit1位变为0之前保持复位状态。2~3CTTEST测试使能位,在正常操作中,这些位应全为0。CIIR功能描述0IMSEC为1时,秒值的增加产生一次中断1IMMIN为1时,分值的增加产生一次中断计数器增量中断寄存器CIIR第67页,共131页,2023年,2月20日,星期四CIIR功能描述0IMSEC为1时,秒值的增加产生一次中断1IMMIN为1时,分值的增加产生一次中断2IMHOUR为1时,小时值的增加产生一次中断3IMDOM为1时,日期(月)的增加产生一次中断4IMDOW为1时,星期值的增加产生一次中断5IMDOY为1时,日期(年)的增加产生一次中断6IMMON为1时,月值的增加产生一次中断7IMYEAR为1时,年值的增加产生一次中断计数器增量中断寄存器CIIR第68页,共131页,2023年,2月20日,星期四AMR功能描述0AMRSEC为1时,秒值不与报警寄存器比较1AMRMIN为1时,分值不与报警寄存器比较2AMRHOUR为1时,小时值不与报警寄存器比较3AMRDOM为1时,日期(月)值不与报警寄存器比较4AMRDOW为1时,星期值不与报警寄存器比较5AMRDOY为1时,日期(年)值不与报警寄存器比较6AMRMON为1时,月值不与报警寄存器比较7AMRYEAR为1时,年值不与报警寄存器比较报警屏蔽寄存器AMR第69页,共131页,2023年,2月20日,星期四CTIME0功能描述0~5秒秒值的范围为0~596~7保留保留,用户不要写入18~13分分值的范围为0~5914~15保留保留,用户不要写入116~20小时小时值的范围为0~2421~23保留保留,用户不要写入124~26星期星期值的范围为0~627~31保留保留,用户不要写入1完整时间寄存器CTIME0第70页,共131页,2023年,2月20日,星期四CTIME1功能描述0~4日期(月)日期(月)值取决于月份是否闰年,范围为1~28/29/30/315~7保留保留,用户不要写入18~11月月值的范围为1~1212~15保留保留,用户不要写入116~27年年值的范围为0~409528~31保留保留,用户不要写入1完整时间寄存器CTIME1完整时间寄存器CTIME2CTIME1功能描述0~8日期(年)日期(年)值范围为1~365(闰年366)9~31保留保留,用户不要写入1第71页,共131页,2023年,2月20日,星期四名称规格(计数器位数)描述访问SEC6秒值,范围为0~59R/WMIN6分值,范围为0~59R/WHOUR5小时值,范围为0~23R/WDOM5日期(月)值取决于月份是否闰年,范围为1~28/29/30/31R/WDOW3星期值,范围为0~6R/WDOY9日期(年)值范围为1~365(闰年366)R/WMONTH4月值,范围为0~12R/WYEAR12年值,范围为0~4095R/W时间计数器组第72页,共131页,2023年,2月20日,星期四名称规格(计数器位数)描述访问ALSEC6秒报警值R/WALMIN6分报警值R/WALHOUR5小时报警值R/WALDOM5日期(月)报警值R/WALDOW3星期报警值R/WALDOY9日期(年)报警值R/WALMONTH4月报警值R/WALYEAR12年报警值R/W报警寄存器组该值与时间计数器相比较,如果所有未屏蔽的报警寄存器都与它们对应的时间计数器相匹配,则产生中断。向中断位置寄存器的bit1位写入1可清除中断标志。第73页,共131页,2023年,2月20日,星期四1.7实验目的与内容实验目的:
学会LPC2220内部模块RTC的使用。实验内容:
设置LPC2220的RTC模块,初始化实时时钟。将分值、秒值在数码管中实时显示,当分值增加时蜂鸣器蜂鸣报警。第74页,共131页,2023年,2月20日,星期四1.8实验参考程序---结构体定义为了方便时间的读取和设置,我们定义了一个TIME结构体,结构体中包含了年、月、日、周、时、分、秒各项信息。同时还定义了Set_Time和Get_Time两个函数。typedefstruct{uint16year; //年
uint16mon; //月
uint16day; //日
uint16dow; //周
uint8 hour; //时
uint8 min; //分
uint8 sec; //秒
}TIME;第75页,共131页,2023年,2月20日,星期四/****************************************************************************名称:SET_Time(TIME*time)*功能:设置时间。*入口参数:time保存时间日期的TIME结构变量的指针****************************************************************************/voidSet_Time(TIME*time){ CCR=0x00;//使能位为0,可对RTC初始化 YEAR=time->year; //初始化年
MONTH=time->mon; //初始化月
DOM=time->day; //初始化日
DOW=time->dow; //初始化星期
HOUR=time->hour; //初始化小时
MIN=time->min; //初始化分
SEC=time->sec; //初始化秒
CCR=0x01; //启动RTC}实验参考程序---SET_Time函数第76页,共131页,2023年,2月20日,星期四/****************************************************************************名称:GetTime(TIME*t)*功能:读取RTC时钟值。*入口参数:t保存日期的TIME结构变量的指针****************************************************************************/voidGetTime(TIME*t){ t->year=YEAR; t->mon=MONTH; t->day=DOM; t->dow=DOW; t->hour=HOUR; t->min=MIN; t->sec=SEC;}实验参考程序---GetTime函数第77页,共131页,2023年,2月20日,星期四/*********************************************************************文件名:RTC_IRQ()*功能:中断服务程序,当分值增加时蜂鸣器蜂鸣报警********************************************************************/void__irqRTC_IRQ(void){ if((CIIR&0x02)!=0) { //------------分报警--------- BEEON(); //打开蜂鸣器
DelayMS(1); BEEOFF(); } while((ILR&0x01)!=0) //清除中断标志
ILR=0x01; VICVectAddr=0; //中断结束}实验参考程序---中断服务子程序第78页,共131页,2023年,2月20日,星期四/*********************************************************************文件名:RTC_Init()*功能:RTC模块初始化函数********************************************************************/{ PREINT=Fpclk/32768-1;//设置基准时钟分频器
PREFRAC=Fpclk-(Fpclk/32768)*32768; AMR=0xff; //屏蔽报警
CIIR=0x02; //设置分值的增量产生一次中断
ILR=0x03; //清除中断标志
VICIntSelect=0x00000000; //设置所有的通道为IRQ中断
VICVectCntl5=0x20|13; //实时时钟中断分配到IRQ5 VICVectAddr5=(uint32)RTC_IRQ; //设置时钟中断服务程序的地址
VICIntEnable=VICIntEnable|(1<<13);//使能实时时钟中断}实验参考程序---RTC初始化子程序第79页,共131页,2023年,2月20日,星期四/***************************************************************************名称:main()*功能:使能实时时钟,控制数码管显示实时时钟的值*入口参数:无*出口参数:无*************************************************************************/intmain(void){ uint32 data; TIMEa,b; NumbTube_Init(); //数码管初始化
b.year=2008;b.mon=8;b.day=2;b.dow=5; //2008年、8月、8日、星期5 b.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; NumbTube_Display(data,3); //显示分,秒
} return(0);}实验参考程序---主程序第80页,共131页,2023年,2月20日,星期四1.9实验步骤与结果实验的步骤和结果如下:1.在CodeWarriorIDE集成开发环境中,使用“FollowMeStudyARM”工程模板建立新工程。然后在工程中添加本实验的程序代码,编译链接整个工程。如果编译通过则在相应的目录下产生我们所需要的二进制文件和可执行映像文件。2.运行H-Flasher软件,将产生的二进制文件烧写到实验板上。3.打开AXD调试环境,并加载刚刚产生的可执行映像文件进行调试。4.单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速运行。观察实验板,实验板实时将时间进行刷新并显示。第81页,共131页,2023年,2月20日,星期四五、看门狗模块看门狗,又叫WatchDogTimer,也是一个定时器电路。看门狗的作用是当系统出现程序进入死循环,或者程序跑飞等情况时,它能够自动复位整个系统。看门狗是利用一个定时器来监控主程序的运行。在主程序运行之前,我们对定时器设置了一个定时时间T并开始倒计时;在主程序必须要在定时时间T内完成并对定时器进行复位。如果出现死循环,或者说PC运行指针跑飞了,当倒计时为零之后就会给出一个复位信号到MCU,使MCU复位。第82页,共131页,2023年,2月20日,星期四一、LPC2220的看门狗模块自带的看门狗的特性: 1、带内部预分频器的可编程32位定时器; 2、如果没有周期性重装,则产生片内复位; 3、看门狗由软件使能,但只能由硬件复位或看门狗复位/中断来禁止看门狗; 4、错误/不完整的喂狗时序会导致复位/中断; 5、具有指示看门狗复位的标志; 6、可选择Tpclk×4倍数的时间周期:最小看门狗间隔为(Tpclk×4×256),最大间隔为(Tpclk×4×232)。第83页,共131页,2023年,2月20日,星期四先给WDTC寄存器设置好32位倒计数器的值,最小值为OxFF;然后,对看门狗进行一次正确的喂狗,此时如果置位了WDEN位,那么就可以使能计数器了。看门狗使能之后,32位倒计数器开始倒计时,可以通过访问当前WDT计数器来查看计数器的值;在倒计数器溢出之前,如果能正确喂狗,倒计数器复位到初始值,重新开始倒计数,依此循环;但如果计数器正在计数时,处理器执行了一次错误的喂狗,或者倒计数器溢出,则看门狗会复位处理器或者产生中断。1.1看门狗模块工作过程第84页,共131页,2023年,2月20日,星期四1.2看门狗使用方法
1.在WDTC寄存器中设置看门狗定时器的固定装载值;2.在WDMOD寄存器中设置模式,并使能看门狗;3.通过向WDFEED寄存器顺序写入OxAA和Ox55启动看门狗;4.在看门狗向下溢出之前应当再次喂狗以防止复位/中断;第85页,共131页,2023年,2月20日,星期四1.3看门狗寄存器描述名称描述复位值WDMOD看门狗模式寄存器。该寄存器包含看门狗定时器的基本模式和状态0WDTC看门狗定时器常数寄存器。该寄存器决定超时值0xFFWDFEED看门狗喂狗寄存器。(先为0xAA,然后为0x55)NAWDTV看门狗定时器值寄存器(当前定时器值)0xFF在看门狗溢出之前,必须完成一次有效的喂狗时序。第86页,共131页,2023年,2月20日,星期四1.3看门狗寄存器描述WDMOD功能描述复位值0WDEN看门狗中断使能位(只能置位,无法使用软件将其清零,由外部复位或看门狗定时器溢出清零)01WDRESET看门狗复位使能位(只能置位,无法使用软件将其清零,由外部复位或看门狗定时器溢出清零)02WDTOF看门狗超时标志0(外部复位)3WDINT看门狗中断标志04~7保留保留,用户不要写入1NAWDEN:该位置1时,只是使能看门狗,并没有启动看门狗,启动看门狗是在第一次喂狗操作。WDTOF:该标志由软件清零。WDINT:任何复位都会使该位清零。第87页,共131页,2023年,2月20日,星期四第88页,共131页,2023年,2月20日,星期四1.4实验目的与内容实验目的:学会LPC2220内部模块看门狗的使用。实验内容:设置LPC2220的看门狗模块,然后程序进入死循环,等待WDT复位。第89页,共131页,2023年,2月20日,星期四1.5实验参考程序#define WDTFeed() WDFEED=0xAA; WDFEED=0x55 //喂狗程序/***************************************************************************名称:main()*功能:运行WDT,并控制蜂鸣器连续叫三声(每一声的延续时间为1秒,间隔为1秒)* 然后处理器进入死循环,等待WDT复位(等待的时间为8秒)**************************************************************************/intmain(void){ uint8i; IO1DIR=IO1DIR|BEE; //设置控制蜂鸣器引脚P1.24为I/O输出
WDTC=Fpclk*2; //WDT计数时间为2*4=8秒
WDMOD=0x03; //设置看门狗溢出复位,并使能WDT WDTFeed(); //进行喂狗操作,把WDTC的值装入看门狗定时器
for(i=0;i<3;i++) //连续叫三声
{ BEEON();DelayMS(1); //延时为1毫秒
BEEOFF();DelayMS(1); }while(1); //死循环
return(0);}第90页,共131页,2023年,2月20日,星期四1.6实验步骤与结果
单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速运行,蜂鸣器会叫3声,然后进入死循环。当到达8秒钟后,程序会重新复位并运行。第91页,共131页,2023年,2月20日,星期四六、低功耗实验这对于便携式和移动性较强的嵌入式产品尤其重要。这些产品不是一直都有充足的电源供应,往往是靠电池来供电,设计人员从每一个细节来考虑降低功率消耗,从而尽可能地延长电池使用时间。在嵌入式系统的设计中,低功耗设计是许多设计人员必须面对的问题: 一方面要求供电设备的功耗尽可能的低; 一方面希望它能实现更多的功能。
两个方面综合考虑:硬件设计和软件设计。第92页,共131页,2023年,2月20日,星期四从硬件设计考虑降低功耗问题,主要有三条途径:
1、选择合适的处理器;
2、接口电路的合理设计;
3、处理器支持的动态电源管理。设计者仍需尽量将应用的低功耗特性反映在软件中,以避免那些“看不见”的功耗损失。主要有如下三条途径
1、用中断代替查询
2、用“宏”代替“子程序”
3、尽量减少CPU的运算量。降低功耗的途径第93页,共131页,2023年,2月20日,星期四1.1LPC2220中的功率控制---节电模式LPC2220支持两种节电模式:空闲模式和掉电模式。1.空闲模式 在空闲模式下,指令的执行被挂起直到复位或者中断,但系统的时钟cclk一直有效;通过定时器的定时器中断可使处理器恢复工作;空闲模式使处理器、存储系统和相关的控制器以及内部总线不再消耗功率。2.掉电模式 在掉电模式下,振荡器关闭,芯片没有任何内部时钟。处理器状态、寄存器和外设寄存器以及内部的SRAM值在掉电模式下被保持。复位或者特定的不需要时钟仍能工作的中断可使处理器恢复运行。定时器中断不能唤醒处理器。在掉电模式下芯片的功耗几乎为零。第94页,共131页,2023年,2月20日,星期四功率控制——两种模式对比模式类别内部时钟外设工作芯片状态唤醒方式功耗空闲有是保持复位、任何中断低掉电无需要时钟支持的外设停止工作保持复位、不需要时钟支持的中断几乎为零第95页,共131页,2023年,2月20日,星期四LPC2220中的功率控制---节电模式节电模式控制寄存器PCONPD位IDL位芯片状态00正常工作01空闲模式10掉电模式11掉电模式第96页,共131页,2023年,2月20日,星期四外部中断唤醒寄存器(EXTWAKE)
EXTWAKE功能描述复位值0EXTWAKE0该位为1时,使能EINT0将处理器从掉电模式唤醒01EXTWAKE1该位为1时,使能EINT1将处理器从掉电模式唤醒02EXTWAKE2该位为1时,使能EINT2将处理器从掉电模式唤醒03EXTWAKE3该位为1时,使能EINT3将处理器从掉电模式唤醒04~7保留保留,用户不要写入1NAEINTn功能必须接到引脚才能实现掉电唤醒实现掉电唤醒不需要在VIC中使能相应的中断,既将处理器从掉电模式唤醒,又不产生中断。第97页,共131页,2023年,2月20日,星期四外设功率控制寄存器(PCONP)
LPC2220的功率控制---外设功率控制第98页,共131页,2023年,2月20日,星期四功率控制注意要点:
该寄存器允许将所选的外设功能关闭以实现节电的目的。芯片中有部分外设不能被关闭,分别为看门狗定时器、GPIO、引脚连接模块和系统控制模块。在运行片外存储器的程序时,不要设置PCEMC为0,否则由于EMC关闭,会导致程序运行错误。芯片复位后,硬件设置PCONP的值为使能芯片内所有的接口和外围模块。因此用户的应用程序除了对外围部件的相关寄存器进行配置外,不需要为了启用片内的某个外围功能而设置PCONP寄存器;在需要控制功率的系统中,只要将应用中用到的外围模块对应在PCONP寄存器的位置1,而寄存器的其它“保留”位或当前无需使用的外围模块对应在寄存器中的位都必须清零。第99页,共131页,2023年,2月20日,星期四唤醒定时器唤醒定时器——用途
唤醒定时器的用途:当给芯片复位或某个事件将处理器从掉电模式唤醒时,需要唤醒定时器来确保振荡器和芯片所需要的其它模拟电路在处理器开始执行指令之前能够正确工作。唤醒定时器的工作完全由硬件控制,不需要用户干预。复位或掉电唤醒振荡器输出时钟产生单元启动唤醒定时器
如果使能了外部中断唤醒功能,并且所选中断事件出现,那么唤醒定时器将被启动。如果向量中断控制器(VIC)的中断功能也使能,那么实际的中断在唤醒定时器停止后产生。计数4096个时钟后控制开关闭合对输入时钟计数第100页,共131页,2023年,2月20日,星期四1.2实验目的与内容实验目的:学会LPC2220内部模块低功耗的使用。实验内容1:设置LPC2220的低功耗模块,控制LPC2220进入掉电模式,并允许外部中断唤醒。每按一次中断按键(位于实验板的右下角),芯片被唤醒一次。实验内容2:设置LPC2220的低功耗模块,控制处
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年心理健康服务行业跨境出海项目商业计划书
- 体育公园运营合同范本
- 健康台账托管合同范本
- 先签五年协议再签合同
- 农村环境治理合同范本
- 人员反聘合同范本模板
- 保健食品订货合同范本
- 全品类位采购合同范本
- 仓库重型货架合同范本
- 小学六年级下册英语期末试题
- 2025年《党务工作基础知识》题库及答案
- 2025年翻译专业研究生入学考试试题及答案
- 设计文化衫课件
- 2025河南郑州海关缉私局警务辅助人员招聘4人考试参考试题及答案解析
- 2025至2030全球及中国聚醚醚酮垫圈行业项目调研及市场前景预测评估报告
- 公共资源交易知识培训
- 2025年成人高考专升本政治试题及答案
- 医疗机构药品采购招标文件范本
- 安全生产课题立项申报书
- PEST分析课件教学课件
- 中小学学校手机管理实施细则(2025修订版)
评论
0/150
提交评论