lpc1768的rit使用

LPC1768在系统滴答定时器和通用定时器之外还引入了一个定时器,叫做重复定时器RIT,该定时器只能用于定时操作,带有一个中断,我个人的感觉,这似乎是为了延时函数设计的一个定时器

那么使用该定时器时遵循什么流程?

第一,打开时钟

 

第二,我们要确定定时器从pclk分频数值,这要靠另外一个寄存器

 

第三,先关闭定时器

 

第四 设置寄存器比较值

 

第五 清空或者屏蔽一些特定的比较屏蔽位

 

最后打开中断,启动定时器

#define RIT_INT_POSITION 0

#define RIT_ENCLR_POSITION  1

#define RIT_ENBR_POSITION 2

#define RIT_EN_POSITION  3

 

void RitInit(u32 count)

{

    LPC_SC->PCONP |=(1<<16); //打开时钟   sys中四分频 25M

    LPC_RIT->RICTRL &= ~(1<<3);

    LPC_RIT->RICOMPVAL = count;

//  LPC_RIT->RIMASK = count;

    LPC_RIT->RIMASK = 0x80000000;

    LPC_RIT->RICOUNTER = 0;

    NVIC_EnableIRQ(RIT_IRQn);              /* enable irq in nvic              */

    LPC_RIT->RICTRL = (1<<RIT_INT_POSITION)|(1<<RIT_ENCLR_POSITION)|(1<<RIT_ENBR_POSITION)|(1<<RIT_EN_POSITION);

}

 

最后,我们需要在rit的中断函数中响应中断,如下

void RIT_IRQHandler()

{

    u8 state = LPC_RIT->RICTRL;

    if(state&0x01)  //有中断发生

    {

        RitStop();

        LPC_RIT->RICOUNTER = 0;

        LPC_RIT->RICTRL |= 0x01;    //清除中断

        RIT_INT_CALLBACK;

        RitStart();

    }

}

 

posted @ 2015-03-15 01:36  邓小俊  阅读(527)  评论(0)    收藏  举报