版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章 时钟控制模块,一、 概述 二、 定时/计数器模块 三、 PWM模块 四、 实时时钟模块 五、 看门狗模块 六、 低功耗实验 七、 附录-中断功能,一、概述,时钟的概念: 时钟就是一连串连续的、周期的和占空比固定的时钟脉冲信号。 时钟的作用: 时钟发生器提供给芯片一个连续的脉冲信号让芯片完成一定任务。,一种是利用内部的晶体振荡器,我们称之为振荡模式,如图 (a)所示; 另一种是使用外部振荡源提供的脉冲信号,此为从属模式,如图 (b)所示。,(a),(b),1.1 时钟电路的设计方法,LPC2000系列芯片的时钟来源: 1、振荡模式:使用外部晶体; 2、从属模式:从XTAL1脚输入占空比为
2、1/2的时钟信号。,1.2 LPC2220的时钟,外设功能模块的时钟pclk的得来: 高频率的cclk经过一个分频器分频后的时钟pclk作为其时钟源。,处理器的时钟cclk的得来: Fosc经过PLL锁相环模块加以倍频得到。,二、定时/计数器模块,定时/计数器的功能 计数功能: 是指对外部脉冲信号进行计数,不需要基准时钟。 定时功能: 功能需要用到某个基准时钟,通过对基准时钟的计数来完成定时功能。,定时/计数器用途:,1)产生所需频率的脉冲; 2)在频率测量中的应用; 3)在累加计数中的应用; 4)定时/计数器在计时中的应用。,计数器在累加计数原理框图,LPC2220系列有定时器0和定时器l两
3、个定时器。 两个定时器除了外设基地址不相同以外,其他都相同。 定时器对外设时钟pclk周期进行计数;当计数数值等于匹配寄存器的值时,可以产生中断或执行其它动作;利用这一特性可实现定时功能。 它还包括捕获输入,用于在输入信号发生跳变时捕获定时器值,并可选择产生中断。利用这一特性可实现对外部脉冲进行计数。,1.1 LPC2220的定时器模块,特性: 带可编程32位预分频器的32位定时器/计数器。 具有4路捕获通道。可选择使捕获事件产生中断,当输入信号跳变时可取得定时器的瞬时值。 具有4个32位匹配寄存器,并有4个对应于匹配寄存器的外部输出。 功能: 1、匹配输出 输出脉冲波形,输出引脚为MAT0.
4、x和MAT1.x。 2、捕获输入 感知外部脉冲的边沿输入,输入对应引脚为CAP0.x和CAP1.x。,1.2 定时器的特性与功能,当MR0MR3与定时器计数器TC发生匹配时,内核将会按照MCR设置的方法产生中断、停止或复位TC等; 根据EMR的设置控制匹配后在相应引脚输出高电平、低电平或者执行电平翻转等。,定时器-匹配输出,当有捕获触发信号产生时,捕获电路将会立即把当时的定时器值TC复制到对应触发通道的捕获寄存器CR0CR3中。 通过设置CCR可将捕获设置为上升沿触发、下降沿触发、双边沿触发,并可设置为捕获中断。,定时器-捕获输入,1.3 定时器的内部结构1,定时器的内部结构2,32位定时器
5、TC的计数频率由外设时钟 pclk输入经过 PR进行分频控制得到,PR指定预分频数的最大值 ;PC为分频计数器,当PC累加到等于PR值时,TC+1,且PC从0开始重新计数; TCR控制定时器的启动停止、计数复位。当定时器TC与匹配寄存器MR0MR3发生匹配时,将会按照MCR设置的方法产生中断、停止或复位TC等。,1.4 寄存器描述,中断寄存器TxIR,中断寄存器包含了4个位用于匹配中断,4个位用于捕获中断。,定时器控制寄存器TxTCR,匹配控制寄存器TxMCR,捕获控制寄存器TxCCR,外部匹配寄存器TxEMR,1.5 定时器的操作方法,设置定时计数器的时钟频率,定时器计数时钟频率计算公式如下
6、: 计数时钟频率Fpclk/(PR+1) 设置定时器的工作模式。 若使用定时器的相关中断,则设置VIC中断使能寄存器,使能中断; 设置TCR,启动定时器定时。,1.5 定时器的操作方法,例子: 配置定时器为:匹配时停止计数器并产生中断,预分频计数器为2,匹配寄存器设置为6.在定时器到达匹配值的下一个周期中,TCR中的定时器使能位清零并产生指示匹配发生的中断。,1.6 实验目的与内容,实验1:定时器定时输出 目的:学会LPC2220内部模块定时器的使用与其定时功能的设置。 内容:利用LPC2220的定时器0定时,5秒时间到则控制蜂鸣器叫一声。 实验2:定时器捕获输入 目的:学会LPC2220内部
7、模块定时器的匹配输出与捕获输入的使用。 内容:首先,把定时器0的匹配输出来产生脉冲波(借鉴实验1);同时,匹配输出(P0.22)输入到捕获输入(P0.27)中。每发生一次捕获事件,就对发生的次数进行统计,并将统计的次数在数码管中显示。,实验1参考程序,/* *名称: _irq TimeO_IRQ() *功能:定时器0中断服务子程序(控制蜂鸣器鸣叫)。 */ void _irq TimeO_IRQ(void) if(IO1PIN /中断结束 ,/* *名称: TimeO_Init() *功能:初始化定时器0模块,并开启定时器0的中断功能 */ void Time0_Init(void) T0TC
8、 = 0; /定时器计数器设置为0 T0PR = 0 ; /时钟不分频 T0MCR =0 x03 ; /设置T0MR0匹配后复位T0TC,并产生中断标志 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 x
9、00000010 ;/使能定时器0中断 ,实验1参考程序,/* *名称: main() *功能:控制定时器0,使之产生5秒的延时 *入口参数: 无 *出口参数:无 */ int main(void) IO1DIR = IO1DIR | BEE ; / 设置控制蜂鸣器引脚P1.24为I/O输出 Time0_Init() ;/定时器0初始化 while(1) ;/死循环 return(0) ; ,实验1参考主程序,volatile uint32 count; /* *名称: _irq Time0_IRQ() *功能:定时器0中断服务子程序(计数值加1)。 */ void _irq Time0_IR
10、Q(void) count+ ; T0IR = 0 xff ;/清除中断标志 VICVectAddr = 0 x00 ; /中断结束 ,实验2参考子程序,/* *名称: Read() *功能:读取当前计数值。 */ uint8 Read() return(count); ,定时器读取当前计数值程序,定时器初始化函数,/* *名称: Time0_Init() *功能:初始化定时器0. */ void Time0_Init(void) ,T0TC = 0; /定时器0计数器清0 T0PR = 0 ; /时钟不分频 T0MCR =0 x02 ; /设置T0MR0匹配后复位T0TC,但不产生中断标志
11、T0MR0 = Fpclk * 5; /设置5s匹配值 T0CCR = 0 x028 ;/设置CAP0.1功能:上升沿有效,并产生中断标志 T0IR = 0 xFF ;/清除中断标志 T0TCR = 0 x03 ; /启动定时器1 /*设置定时器0中断*/ VICIntSelect = 0 x00 ; /所有中断设置为向量中断 VICVectCntl0 = 0 x24 ; /定时器0中断分配最高优先级Slot0 VICVectAddr0 = (uint32)Time0_IRQ ; /设置中断向量地址 VICIntEnable = 0 x00000010 ;/使能定时器1中断 ,/* *名称:
12、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_Display(Read(),0); /显示外部捕获的次数 return(0) ; ,实验2参考主程序,三、PWM模块,概述 PWM是Pulse Width
13、Modulation的缩写,即脉冲宽度调制。,PWM原理,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制,用来对一个具体模拟信号的电平进行编码。等效的实现是基于采样定理中的一个重要的结论。,冲量相同而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。,用不同宽度的矩形波(b)来代替正弦波(a),通过对矩形波的控制来模拟输出不同频率的正弦波。 例如,把正弦半波N等分,看成N个相连的脉冲序列,宽度相等,但幅值不等;用矩形脉冲代替,等幅,不等宽,中点重合,面积(冲量)相等,宽度按正弦规律变化。,正弦波等效的PWM波形如图所示,除了等效正弦波形,还可以
14、等效成其他所需波形。根据PWM控制技术的特点,主要有以下8类等效方法: 1、相电压控制PWM; 2、线电压控制PWM; 3、电流控制PWM; 4、空间电压矢量控制PWM7; 5、矢量控制PWM8; 6、直接转矩控制PWM8; 7、非线性控制PWM; 8、谐振软开关PWM。,1.1 PWM的应用及优点,PWM的应用 PWM控制技术广泛的运用在从测量、通信到功率控制与变换的许多领域中。 优点 从处理器到被控系统信号都是数字形式的,无需进行数模转换; 让信号保持为数字形式可将噪声影响降到最小,1.2 LPC2220的PWM模块,特性如下: 1、带可编程32位预分频器的32位定时器; 2、7个匹配寄存
15、器,可实现6个PWM(PWM1PWM6)输出; 3、支持单边沿控制和双边沿控制PWM输出; 4、脉冲周期和宽度可以是任何的定时器计数值; 5、当不使能PWM模式,则可以作为一个标准的定时器。,LPC2220的PWM模块中一共有1个定时计数器和7个匹配寄存器。PWM功能建立在匹配器事件之上,定时计数器对外设时钟进行计数,在达到指定的定时值时可选择中断或执行其他的动作。 单边沿控制或双边沿控制: 单边沿控制PWM输出在每个周期T开始时总是为高电平; 双边沿控制PWM 输出可在一个周期T内的任何位置产生边沿。,不同占空比的单边沿与正负脉冲双边沿的PWM输出,LPC2220的PWM模块,单边沿控制PW
16、M输出,每个单边沿控制PWM输出需要用到2个匹配寄存器。匹配寄存器PWMMR0控制PWM周期,另一个匹配寄存器来控制PWM边沿的位置。 所有单边沿控制PWM输出在PWM周期开始时都为高电平,在达到其匹配值都会变成低电平。,单边沿控制PWM输出示意图,双边沿控制PWM输出,每个双边沿控制PWM输出需要用到3个匹配寄存器。PWMMR0匹配寄存器控制PWM周期,其他匹配寄存器控制2个PWM边沿位置。 置位匹配寄存器的值小于复位匹配寄存器的值,将在一个PWM周期中产生一个正脉冲; 置位匹配寄存器的值大于复位匹配寄存器的值,将在一个PWM周期中产生一个负脉冲。,PWM通道的置位和复位寄存器,1.3 PW
17、M内部结构介绍,PWMTC的计数频率由 pclk时钟信号经过PWMPR进行分频控制得到; PWMTCR控制定时器的启动停止、计数复位; PWMIR会设置相关中断标志,若已打开中断允许则会产生中断。,1.4 PWM寄存器介绍,PWM共有15个相关寄存器;4个与定时/计数器相关的寄存器;7个匹配寄存器;1个PWM中断寄存器保存中断标志;1个锁存使能寄存器;2个控制寄存器。,PWM中断寄存器(PWMIR),把PWM2配置为双边沿操作并处于运行中时,如何改写匹配值?1、写PWM匹配1寄存器2、写PWM匹配2寄存器3、写PWMLER,置位PWMLER1:24、更改后的值在下一次定时器复位时生效(PWM0
18、匹配),1.5 PWM的操作方法,控制寄存器PWMMCR设置定时器比较匹配,PWMMR(06)寄存器与PWMTC计数器进行比较。当比较匹配时,将按照PWMMCR设置的方法产生中断或复位PWMTC等。另外,PWMLER锁存使能寄存器。 比较匹配寄存器功能方框图如下:,1.6 PWM基本操作步骤:,1、连接PWM功能引脚输出; 2、设置PWM定时器的时钟分频值,得到所要的定时器时钟; 3、设置比较匹配控制与相应的比较值; 4、设置PWM的输出方式并允许PWM输出及锁存使能控制; 5、设置PWMTCR,启动定时器,使能PWM; 6、运行过程中要更改比较值时,更改以后要设置锁存使能。,1.7 实验目的
19、与内容,实验目的:学会LPC2220内部模块PWM的使用。 实验内容:利用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 ;
20、/设置PWMMR0匹配时复位PWMTC PWMPCR = 0 x2000; / 允许PWMMR5单边沿输出 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 ,1.8 实验步骤与结
21、果,单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速运行。 连接电路,将PWM插座的3脚连接到LED灯的插孔处,可以看到LED灯的闪烁。按下键盘上的19号按键,LED等的闪烁情况将发生相应的变化。,四、实时时钟模块,概念: 实时时钟(RTC)是一种由晶体控制精度的向主系统提供时间和日期的器件。 特性: 它能实时刷新时间与日期信息,还可以根据实际需要设置报警,闹铃等,功耗非常低,一般都在uW级。 实时的应用: 实时时钟得以广泛应用在时钟日历,电子表,计算机,手机等领域。,1.1 LPC2220的实时时钟模块,概述 LPC2220系列自带的实时时钟可用来日期及时分秒
22、计时、定时报警等。其计数时钟是通过对Fpclk进行分频得到,它的基准时钟分频器允许调节任何频率高于65.536KHZ 的外设时钟源,并产生一个32.768KHZ的基准时钟。,特性 带日历和时钟功能; 超低功耗设计; 提供秒、分、小时、日、月、年和星期; 可编程基准时钟分频允许调节RTC以适应不同的晶振频率。,1.2 实时时钟模块的内部结构,实时时钟的时钟源pclk在经过基准时钟分频器分频后,调整出频率为32.768KHz的基准时钟clk32k,然CTC对时钟节拍计数进行计数。CTC每秒计数32768个时钟,用于产生秒的时钟节拍clk1Hz。 当秒脉冲信号clk有效时,时间计数寄存器组将会实时更
23、新。 当报警寄存器组中某个寄存器与时间计数寄存器组中相对应的寄存器经比较器比较相等后,将产生相应的中断标志。,1.3 实时时钟模块的内部工作原理,RTC可以产生两种中断: 1、计数器增量中断; 2、报警寄存器中断。,1. 增量中断 CIIR中的每个位都对应一个时间计数器。如果CIIR使能某一个特定的计数器,那么该计数器的值每增加一次就产生一个中断。,增量中断控制原理图,1.4 实时时钟模块RTC的中断,2. 报警中断 报警寄存器允许用户设定产生中断的日期和/或时间。如果所有非屏蔽报警寄存器与它们对应的时间计数器的值相匹配时,则会产生中断。,报警器中断控制原理图,实时时钟模块RTC的中断,1.5
24、 RTC基本操作方法,实时时钟的时钟源是由外设时钟pclk通过基准时钟分频器,调整出32768Hz的频率,然后供给CTC计数器。它每秒计数32768个时钟,到1秒计数完成之后,就会更新完整时间寄存器和RTC时间寄存器。,1.6 RTC基本操作步骤,1、设置RTC基准时钟分频寄存器PREINT和基准时钟分频寄存器PREFRAC;其值计算如下: PREIN = int (pclk/32768)-1 PREFRAC = pclk (PREIN+1)32768 2、初始化RTC时间寄存器的值; 3、报警中断设置; 4、启动RTC,即CCR的CLKEN位置位; 5、读取完整时间计数器的值,或等待中断。,
25、RTC相关寄存器介绍,中断位置寄存器ILR,时钟节拍计数器CTC,时钟控制寄存器CCR,计数器增量中断寄存器CIIR,计数器增量中断寄存器CIIR,报警屏蔽寄存器AMR,完整时间寄存器CTIME0,完整时间寄存器CTIME1,完整时间寄存器CTIME2,时间计数器组,报警寄存器组,该值与时间计数器相比较,如果所有未屏蔽的报警寄存器都与它们对应的时间计数器相匹配,则产生中断。向中断位置寄存器的bit1位写入1可清除中断标志。,1.7 实验目的与内容,实验目的: 学会LPC2220内部模块RTC的使用。 实验内容: 设置LPC2220的RTC模块,初始化实时时钟。将分值、秒值在数码管中实时显示,当
26、分值增加时蜂鸣器蜂鸣报警。,1.8 实验参考程序-结构体定义,为了方便时间的读取和设置,我们定义了一个TIME结构体,结构体中包含了年、月、日、周、时、分、秒各项信息。同时还定义了Set_Time和Get_Time两个函数 。,typedef struct uint16 year ;/年 uint16 mon ;/月 uint16 day ;/日 uint16 dow ;/周 uint8 hour ;/时 uint8 min ;/分 uint8 sec ;/秒 TIME;,/* *名称: SET_Time(TIME *time) *功能: 设置时间。 *入口参数:time 保存时间日期的TIM
27、E结构变量的指针 */ void Set_Time(TIME *time) CCR= 0 x00; /使能位为0,可对RTC初始化 YEAR = time-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时钟值。 *
28、入口参数: t 保存日期的TIME结构变量的指针 */ void GetTime(TIME *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 /中断结束 ,实验参考程序-中断服务子程序,/* * 文件名:RTC_Init() * 功能:RTC
29、模块初始化函数 */ 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; /设置时钟中断服务程序的地址 VICIntEna
30、ble = VICIntEnable | (113); /使能实时时钟中断 ,实验参考程序-RTC初始化子程序,/* * 名称:main() * 功能:使能实时时钟,控制数码管显示实时时钟的值 * 入口参数 : 无 * 出口参数 : 无 */ int main(void) uint32data; TIME a ,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
31、秒 Set_Time( ,实验参考程序-主程序,1.9 实验步骤与结果,实验的步骤和结果如下: 1. 在Code Warrior IDE集成开发环境中,使用“Follow Me Study ARM”工程模板建立新工程。然后在工程中添加本实验的程序代码,编译链接整个工程。如果编译通过则在相应的目录下产生我们所需要的二进制文件和可执行映像文件。 2. 运行H-Flasher软件,将产生的二进制文件烧写到实验板上。 3. 打开AXD调试环境,并加载刚刚产生的可执行映像文件进行调试。 4. 单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速运行。观察实验板,实验板实时将时
32、间进行刷新并显示。,五、看门狗模块,看门狗,又叫WatchDog Timer,也是一个定时器电路。看门狗的作用是当系统出现程序进入死循环,或者程序跑飞等情况时,它能够自动复位整个系统。 看门狗是利用一个定时器来监控主程序的运行。在主程序运行之前,我们对定时器设置了一个定时时间T并开始倒计时;在主程序必须要在定时时间T内完成并对定时器进行复位。如果出现死循环,或者说PC运行指针跑飞了,当倒计时为零之后就会给出一个复位信号到MCU,使MCU复位。,一、LPC2220的看门狗模块,自带的看门狗的特性: 1、带内部预分频器的可编程32位定时器; 2、如果没有周期性重装,则产生片内复位; 3、看门狗由软
33、件使能,但只能由硬件复位或看门狗复位/ 中断来禁止看门狗; 4、错误/不完整的喂狗时序会导致复位/中断; 5、具有指示看门狗复位的标志; 6、可选择Tpclk4倍数的时间周期:最小看门狗间隔为 (Tpclk4256),最大间隔为(Tpclk4232)。,先给WDTC寄存器设置好32位倒计数器的值,最小值为OxFF; 然后,对看门狗进行一次正确的喂狗,此时如果置位了WDEN位,那么就可以使能计数器了。 看门狗使能之后,32位倒计数器开始倒计时,可以通过访问当前WDT计数器来查看计数器的值;在倒计数器溢出之前,如果能正确喂狗,倒计数器复位到初始值,重新开始倒计数,依此循环; 但如果计数器正在计数时
34、,处理器执行了一次错误的喂狗,或者倒计数器溢出,则看门狗会复位处理器或者产生中断。,1.1 看门狗模块工作过程,1.2 看门狗使用方法,1. 在WDTC寄存器中设置看门狗定时器的固定装载值 ; 2. 在WDMOD寄存器中设置模式,并使能看门狗; 3. 通过向WDFEED寄存器顺序写入OxAA和Ox55启动看门狗; 4. 在看门狗向下溢出之前应当再次喂狗以防止复位/中断 ;,1.3 看门狗寄存器描述,在看门狗溢出之前,必须完成一次有效的喂狗时序。,1.3 看门狗寄存器描述,WDEN:该位置1时,只是使能看门狗,并没有启动看门狗,启动看门狗是在第一次喂狗操作。 WDTOF:该标志由软件清零。 WD
35、INT:任何复位都会使该位清零。,1.4 实验目的与内容,实验目的:学会LPC2220内部模块看门狗的使用。 实验内容:设置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; /
36、 设置控制蜂鸣器引脚P1.24为I/O输出 WDTC = 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声,然后进入死循
37、环。当到达8秒钟后,程序会重新复位并运行。,六、低功耗实验,这对于便携式和移动性较强的嵌入式产品尤其重要。这些产品不是一直都有充足的电源供应,往往是靠电池来供电,设计人员从每一个细节来考虑降低功率消耗,从而尽可能地延长电池使用时间。 在嵌入式系统的设计中,低功耗设计是许多设计人员必须面对的问题: 一方面要求供电设备的功耗尽可能的低; 一方面希望它能实现更多的功能。 两个方面综合考虑:硬件设计和软件设计。,从硬件设计考虑降低功耗问题,主要有三条途径: 1、选择合适的处理器; 2、接口电路的合理设计; 3、处理器支持的动态电源管理。,设计者仍需尽量将应用的低功耗特性反映在软件中,以避免那些“看不见
38、”的功耗损失。主要有如下三条途径 1、用中断代替查询 2、用“宏”代替“子程序” 3、尽量减少CPU的运算量。,降低功耗的途径,1.1 LPC2220中的功率控制-节电模式,LPC2220支持两种节电模式:空闲模式和掉电模式。 1空闲模式 在空闲模式下,指令的执行被挂起直到复位或者中断,但系统的时钟cclk一直有效;通过定时器的定时器中断可使处理器恢复工作;空闲模式使处理器、存储系统和相关的控制器以及内部总线不再消耗功率。 2掉电模式 在掉电模式下,振荡器关闭,芯片没有任何内部时钟。处理器状态、寄存器和外设寄存器以及内部的SRAM值在掉电模式下被保持。复位或者特定的不需要时钟仍能工作的中断可使
39、处理器恢复运行。定时器中断不能唤醒处理器。在掉电模式下芯片的功耗几乎为零。,功率控制两种模式对比,LPC2220中的功率控制-节电模式,节电模式控制寄存器PCON,外部中断唤醒寄存器(EXTWAKE),EINTn功能必须接到引脚才能实现掉电唤醒 实现掉电唤醒不需要在VIC中使能相应的中断,既将处理器从掉电模式唤醒,又不产生中断。,外设功率控制寄存器(PCONP),LPC2220的功率控制-外设功率控制,功率控制注意要点:,该寄存器允许将所选的外设功能关闭以实现节电的目的。芯片中有部分外设不能被关闭,分别为看门狗定时器、GPIO、引脚连接模块和系统控制模块。 在运行片外存储器的程序时,不要设置P
40、CEMC为0,否则由于EMC关闭,会导致程序运行错误。 芯片复位后,硬件设置PCONP的值为使能芯片内所有的接口和外围模块。因此用户的应用程序除了对外围部件的相关寄存器进行配置外,不需要为了启用片内的某个外围功能而设置PCONP寄存器; 在需要控制功率的系统中,只要将应用中用到的外围模块对应在PCONP寄存器的位置1,而寄存器的其它“保留”位或当前无需使用的外围模块对应在寄存器中的位都必须清零。,唤醒定时器,唤醒定时器用途,唤醒定时器的用途:当给芯片复位或某个事件将处理器从掉电模式唤醒时,需要唤醒定时器来确保振荡器和芯片所需要的其它模拟电路在处理器开始执行指令之前能够正确工作。唤醒定时器的工作
41、完全由硬件控制,不需要用户干预。,如果使能了外部中断唤醒功能,并且所选中断事件出现,那么唤醒定时器将被启动。如果向量中断控制器(VIC)的中断功能也使能,那么实际的中断在唤醒定时器停止后产生。,计数4096个时钟后控制开关闭合,对输入时钟计数,1.2 实验目的与内容,实验目的: 学会LPC2220内部模块低功耗的使用。 实验内容1:设置LPC2220的低功耗模块,控制LPC2220进入掉电模式,并允许外部中断唤醒。每按一次中断按键(位于实验板的右下角),芯片被唤醒一次。 实验内容2:设置LPC2220的低功耗模块,控制处理器进入空闲模式,当有定时器中断时,芯片被重新唤醒。,实验1参考程序,/*
42、 * 名称:main() * 功能:蜂鸣器叫一声,然后控制处理器进入掉电模式,当有外部中断时,唤醒处理器 */ int main(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; / 使
43、能EINT1中断 EXTWAKE = 0 x02; / 允许外部中断1唤醒掉电的CPU PCONP = 0 x0800; / EMC使能,关闭其他的片内外设 while(1) BeeON(); /控制蜂鸣器叫一声,时间为1毫秒 DelayMS(2); BeeOFF(); PCON = 0 x02; / 系统进入掉电模式 return(0) ; ,实验1步骤与结果,1. 在Code Warrior IDE集成开发环境中,使用“Follow Me Study ARM”工程模板建立新工程。然后在工程中添加本实验的程序代码,编译链接整个工程。如果编译通过则在相应的目录下产生我们所需要的二进制文件和可执
44、行映像文件。 2. 运行H-Flasher软件,将产生的二进制文件烧写到实验板上。 3. 打开AXD调试环境,并加载刚刚产生的可执行映像文件进行调试。 4. 单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速运行,蜂鸣器会叫1声,然后进入掉电模式,一直等待外部中断按键(实验板中的标号为“key” 按键)程序才唤醒。每唤醒一次,蜂鸣器响一次。,实验2参考程序,/* * 名称:main() * 功能:蜂鸣器首先叫两声,然后处理器进入空闲模式。当有定时器0定时2S结束后, * 定时器产生中断,重新唤醒处理器。 */ int main(void) IO1DIR = IO1
45、DIR | BEE; / 设置控制蜂鸣器引脚P1.24为I/O输出 T0TC = 0; /定时器设置为0 T0PR = 0 ; /时钟不分频 T0MCR =0 x03 ; /设置T0MR0匹配后复位T0TC,并产生中断标志 T0MR0 = Fpclk*2; /设置2S匹配值 T0TCR = 0 x01 ; /启动定时器0 while(1) BeeON(); DelayMS(2); BeeOFF(); DelayMS(2); BeeON(); DelayMS(2); BeeOFF(); PCON = 1 ;/ 系统进入空闲模式 return(0) ; ,实验2步骤与结果,1. 在Code War
46、rior IDE集成开发环境中,使用“Follow Me Study ARM”工程模板建立新工程。然后在工程中添加本实验的程序代码,编译链接整个工程。如果编译通过则在相应的目录下产生我们所需要的二进制文件和可执行映像文件。 2. 运行H-Flasher软件,将产生的二进制文件烧写到实验板上。 3. 打开AXD调试环境,并加载刚刚产生的可执行映像文件进行调试。 4. 单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速运行,蜂鸣器会叫两声,芯片然后进入低功耗模式。定时器定时2秒后会产生一次中断,定时器的中断将自动唤醒芯片,程序得到继续运行的机会。实验现象是:每2秒唤醒
47、一次,蜂鸣器响2次。,七、附录-中断功能,中断的概念 中断的目的是为了暂停主程序的运行,先去执行中断服务程序。在中断源提出中断请求后,嵌入式系统执行完当前指令便进行中断响应,一旦中断服务程序执行完毕后,仍须返回到主程序被中断处继续执行原先程序,其过程如图所示:,中断源分为两种: 1、外部中断源: 由外部电路提供中断的来源称为外部中断源。 2、内部中断源: 引起ARM芯片执行指令或内部功能模块所引起的中断来源称为内部中断源。 中断优先级别 ARM芯片把中断优先级别划分为3大类: 1、FIQ:具有最高优先级 2、向量IRQ:具有中等优先级 3、非向量IRQ:优先级最低,1.1 中断源和中断优先级,
48、1.2 VIC向量中断控制器,VIC内部包含了众多的寄存器用来记录哪个中断使能、中断优先级分配、中断状态、向量IRQ的优先级别分配与服务程序地址等等。,中断源与VIC连接示意图,LPC2220对每个中断源采用唯一的VIC通道号来标识,见下表所列:,1.3 LPC2220的中断处理流程,LPC2220支持两种中断:IRQ中断和FIQ中断。 当产生IRQ中断时,微控制器会暂停用户程序,然后切换到IRQ模式。执行完中断服务程序后运行指针返回到用户程序的断点。,启动代码中的异常向量表,Reset LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_A
49、ddr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0 xb9205f80 LDR PC, PC, # -0 xff0%VICVectAddr 的地址 LDR PC, FIQ_Addr ResetAddr DCD ResetInit UndefinedAddr DCD Undefined SWI_Addr DCD SoftwareInterrupt PrefetchAddr DCD PrefetchAbort DataAbortAddr DCD DataAbort Nouse DCD 0 IRQ_Addr DCD 0 FIQ_Addr DCD
50、FIQ_Handler,异常向量表内机器码累加和为零,表示用户代码有效。通过保留字是累加和为零。,1.4 VIC的寄存器描述,软件中断寄存器VICSoftInt,软件中断清零寄存器VICSoftIntClear,所有中断的 状态寄存器VICRawIntr,中断使能寄存器VICIntEnable,中断使能清零寄存器VICIntEnClr,中断选择寄存器VICIntSelect,IRQ状态寄存器VICIRQStatus,FIQ状态寄存器VICFIQStatus,向量控制寄存器VICVectCntl,向量地址寄存器VICVectAddr,默认向量地址寄存器VICDefVectAddr,IRQ中断服务
51、程序地址寄存器VICVectAddr,保护使能寄存器VICProtection,1.5 中断功能使用举例,IRQ中断初始化,下面是一个IRQ中断初始化程序,在程序中设置了EINT0为FIQ中断,EINT1为向量IRQ中断,EINT2为非向量IRQ中断,并且设置IRQ中断服务程序入口地址。,VICIntSelect = 0 x00004000;/设置EINT0为FIQ中断,其他为IRQ中断 VICVectCntl0 = 0 x20 | 15;/设置EINT1为向量IRQ中断,使用Slot0 VICVectAddr0 = (uint32)Eint1_IRQ; /设置EINT1中断服务程序入口地址 VICDefVectAddr = (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年云南富宁县那能乡卫生院公开招聘编外合同制人员的备考题库及参考答案详解
- 2025年中国民航科学技术研究院公开招聘备考题库(第二批)及一套答案详解
- 2026年技术改造合同
- 2025年丹东市荣军优抚医院(原丹东市公安医院)招聘备考题库及1套完整答案详解
- 2025年鲤城区东门实验小学顶岗合同教师招聘备考题库及答案详解一套
- 2025年代招某行政机关派遣制工作人员招聘备考题库及完整答案详解一套
- 2026年现代医疗服务合同
- 中国人民银行清算总中心直属企业银清科技有限公司2026年度公开招聘备考题库完整答案详解
- 2025国家公务员国家税务总局乌苏市税务局面试试题及参考答案
- 2025年垣曲辅警招聘真题及答案
- 8m深基坑土方开挖施工方案
- 2025中央广播电视总台招聘144人笔试历年题库附答案解析
- 2026年瓦工职业技能鉴定考试题库及答案
- 2025年云南省人民检察院聘用制书记员招聘(22人)笔试考试参考题库及答案解析
- 2025年广东省第一次普通高中学业水平合格性考试(春季高考)物理试题(含答案详解)
- 初一上册体育教案(2025-2026学年)
- 一般固废合同范本
- 胃肠外科围手术期护理要点
- 竣工资料归档与管理流程
- 购车合伙协议书模板
- 二手摩托车买卖合同范本
评论
0/150
提交评论