以LPC2136为例说定时器控制原理(共5页)_第1页
以LPC2136为例说定时器控制原理(共5页)_第2页
以LPC2136为例说定时器控制原理(共5页)_第3页
以LPC2136为例说定时器控制原理(共5页)_第4页
以LPC2136为例说定时器控制原理(共5页)_第5页
全文预览已结束

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上以LPC2136为例说定时器控制原理上网时间:2010年08月24日每个mcu都有定时器功能,如果要实现在1秒,或者1毫秒,或1微妙等时间间隔的定时操作,则需要mcu提供的定时器功能。(在掌握了一种MCU的定时器原理,其他MCU的定时器操作就很好理解了),下面以philips的lpc2136(arm7)定时器0的匹配功能为例。1:首先要搞清楚几个寄存器的作用如果上面的关系搞清楚了,程序就很好写了!2: TCR,MCR两个寄存器的控制原理2.1关于TCRTCR0是使能位,为1时,同时使能“预分频计数器”和“定时器计数器”计数; 为0时,同时禁止“预分频计数器”和“定时器

2、计数器”计数;TCR1是控制“预分频计数器”和“定时器计数器”在PCLK的上升沿同步复位;2.2关于MCRLPC2114定时器0有四个匹配通道,我们这里只讲匹配通道0,即MR0.MCR0 当该位为1,TC与MR0(匹配寄存器)匹配产生中断;当该位为0,TC与MR0(匹配寄存器)匹配中断禁止;MCR1 当该位为1,TC与MR0(匹配寄存器)匹配将使TC复位;当该位为0,该特性被禁止;MCR2 当该位为1,TC与MR0(匹配寄存器)匹配将使TC和PC停止计数;当该位为0,该特性被禁止。3 接下来就可以等待中断了对于一个新手来说也许你还是不知如何着手写程序,所以这就是入门的难处,当你对某个MCU会控

3、制了,或者说入门了,那么再去写程序控制其他的MCU就很容易的,因为原理在那里,可以举一反三。3.1 中断状态寄存器其实,不管是那个MCU中的哪个控制器,如I2C,SPI,Ethernet,LCD等等,都有一个中断状态寄存器,有些控制器还有其他状态寄存器!Lpc2136中的定时器0就有T0IR(中断寄存器)来指示当前是哪个中断发生,用户就可以通过读这个寄存器来判断。 如:我们这里设置了匹配通道0,即MR0。我们可以在主程序中不断的读T0IR0位,如果为1则说明中断发生。注意:在中断处理结束后必须通过对相应为写1才能复位中断,方便第二次中断发生。4 如何写代码一般分查询方式(pollin

4、g)和中断方式(interrupt):查询方式就是不停的去判断中断状态寄存器相关位是否置位,如果置位说明有中断发生。中断方式就是通过MCU的中断控制器irq实现。4.1查询方式相关代码:/* 文件名:main.c* 功   能:使用定时器实现秒定时,控制led灯闪烁。(查询方式)*/#include  "config.h"#define      LED1  1<<0            &#

5、160;               / P0.0引脚控制LED1/* 名   称:Time0Init()* 功   能:初始化定时器,定时时间为S。* 入口参数:无* 出口参数:无*/void  Time0Init(void)   /* Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz       Fpclk = Fcclk/4

6、= 44.2368MHz/4 = 11.0592MHz    */    T0PR = 99;                                    / 设置定时器分频为分频,得Hz    T0MCR = 0x03;

7、0;                                  / 匹配通道匹配中断并复位T0TC    T0MR0 = ;                   

8、             / 比较值(1S定时值)    T0TCR = 0x03;                                   / 启动并复位T0TC    T0T

9、CR = 0x01;/* 名   称:main()* 功   能:初始化I/O及定时器,然后不断的查询定时器中断标志。当定时时间到达时,取反P0.22*           控制口。*/int  main(void)     PINSEL0 = 0x;                

10、60;       / 设置管脚连接GPIO      IO0DIR = LED1;                             / 设置I/O为输出    Time0Init();      &#

11、160;                         / 初始化定时器                 while(1)              

12、;  while( (T0IR&0x01) = 0 );                / 等待定时时间到        T0IR = 0x01;                         

13、60;  / 清除中断标志        if( (IO0PIN& LED1) = 0 )                    IO0SET = LED1;               &#

14、160;   else                     IO0CLR = LED1;                            

15、   return(0);4.2 中断方式上面的代码是通过查询方式来等待定时器中断的发生,本例是定时器实验性代码,实际产品开发或工作中不会采用这种方式。下面讲通过中断方式来等待定时器的发生。/* 文件名:main.c* 功   能:使用定时器实现秒定时,控制led灯闪烁。(查询方式)*/#include  "config.h"#define      LED1  1<<0        / P0.0引脚控

16、制LED1/* 名   称:IRQ_Time0()* 功   能:定时器中断服务程序,取反LED1控制口。* 入口参数:无* 出口参数:无*/void _irq  IRQ_Time0(void)     if( (IO0PIN& LED1 ) = 0 )            IO0SET = LED1;         

17、;  else             IO0CLR = LED1;                                       &#

18、160; T0IR = 0x01;                 / 清除中断标志    VICVectAddr = 0x00;            / 通知VIC中断处理结束/* 名   称:Time0Init()* 功   能:初始化定时器,定时时间为S,并使能中断。* 入口参数:无* 出口参数:无*

19、/void  Time0Init(void)   /* Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz       Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz    */    T0PR = 99;                  &#

20、160;             / 设置定时器分频为分频,得Hz    T0MCR = 0x03;                               / 匹配通道匹配中断并复位T0TC    T0MR0 =

21、;                            / 比较值(1S定时值)    T0TCR = 0x03;                         &#

22、160;     / 启动并复位T0TC    T0TCR = 0x01;       /* 设置定时器中断IRQ */    VICIntSelect = 0x00;                    / 所有中断通道设置为IRQ中断    VICVectCntl

23、0 = 0x24;                    / 定时器中断通道分配最高优先级(向量控制器)    VICVectAddr0 = (uint32)IRQ_Time0;         / 设置中断服务程序地址向量    VICIntEnable = 0x;                / 使能定时器中断/* 名  称:main()* 功  能:初始化I/O及定时器,然后等待中断。* 说  明:在STARTUP.S文件中使能IRQ中断(清零CPSR中的I位)。*/int  main(void)     PINSEL0 = 0x;             &#

温馨提示

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

评论

0/150

提交评论