- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章时钟控制模块
第四章 时钟控制模块 一、 概述 二、 定时/计数器模块 三、 PWM模块 四、 实时时钟模块 五、 看门狗模块 六、 低功耗实验 七、 附录---中断功能 一、概述 时钟的概念: 时钟就是一连串连续的、周期的和占空比固定的时钟脉冲信号。 时钟的作用: 时钟发生器提供给芯片一个连续的脉冲信号让芯片完成一定任务。 1.1 时钟电路的设计方法 一种是利用内部的晶体振荡器,我们称之为振荡模式,如图 (a)所示; 另一种是使用外部振荡源提供的脉冲信号,此为从属模式,如图 (b)所示。 LPC2000系列芯片的时钟来源: 1、振荡模式:使用外部晶体; 2、从属模式:从XTAL1脚输入占空比为1/2的时钟信号。 二、定时/计数器模块 定时/计数器的功能 计数功能: 是指对外部脉冲信号进行计数,不需要基准时钟。 定时功能: 功能需要用到某个基准时钟,通过对基准时钟的计数来完成定时功能。 定时/计数器用途: 1)产生所需频率的脉冲; 2)在频率测量中的应用; 3)在累加计数中的应用; 4)定时/计数器在计时中的应用。 LPC2220系列有定时器0和定时器l两个定时器。 两个定时器除了外设基地址不相同以外,其他都相同。 定时器对外设时钟pclk周期进行计数;当计数数值等于匹配寄存器的值时,可以产生中断或执行其它动作;利用这一特性可实现定时功能。 它还包括捕获输入,用于在输入信号发生跳变时捕获定时器值,并可选择产生中断。利用这一特性可实现对外部脉冲进行计数。 特性: 带可编程32位预分频器的32位定时器/计数器。 具有4路捕获通道。可选择使捕获事件产生中断,当输入信号跳变时可取得定时器的瞬时值。 具有4个32位匹配寄存器,并有4个对应于匹配寄存器的外部输出。 功能: 1、匹配输出 2、捕获输入 当MR0~MR3与定时器计数器TC发生匹配时,内核将会按照MCR设置的方法产生中断、停止或复位TC等; 根据EMR的设置控制匹配后在相应引脚输出高电平、低电平或者执行电平翻转等。 当有捕获触发信号产生时,捕获电路将会立即把当时的定时器值TC复制到对应触发通道的捕获寄存器CR0~CR3中。 通过设置CCR可将捕获设置为上升沿触发、下降沿触发、双边沿触发,并可设置为捕获中断。 1.4 寄存器描述 中断寄存器 1.5 定时器的操作方法 ①设置定时计数器的时钟频率,定时器计数时钟频率计算公式如下: 计数时钟频率=Fpclk/(PR+1) ② 设置定时器的工作模式。 ③ 若使用定时器的相关中断,则设置VIC中断使能寄存器,使能中断; ④ 设置TCR,启动定时器定时。 1.6 实验目的与内容 实验1:定时器定时输出 目的:学会LPC2220内部模块定时器的使用与其定时功能的设置。 内容:利用LPC2220的定时器0定时,5秒时间到则控制蜂鸣器叫一声。 实验2:定时器捕获输入 目的:学会LPC2220内部模块定时器的匹配输出与捕获输入的使用。 内容:首先,把定时器0的匹配输出来产生脉冲波(借鉴实验1);同时,匹配输出(P0.22)输入到捕获输入(P0.27)中。每发生一次捕获事件,就对发生的次数进行统计,并将统计的次数在数码管中显示。 实验1参考程序 /************************************************************************** *名称: __irq TimeO_IRQ() *功能:定时器0中断服务子程序(控制蜂鸣器鸣叫)。 *************************************************************************/ void __irq TimeO_IRQ(void) { if((IO1PIN BEE) == 0) BEEON() ; //打开蜂鸣器 else BEEOFF() ; //关闭蜂鸣器 T0IR = 0x01 ; //清除中断标志 VICVectAddr = 0x00 ; //中断结束 } /**************************************************************************** *名称: TimeO_Init() *功能:初始化定时器0模块,并开启定时器0的中断功能 ****************************************************************************/ void Time0_Init(void) { T0TC = 0; //定时器计数器设置为0
文档评论(0)