码迷,mamicode.com
首页 > 其他好文 > 详细

lpc1768的rit使用

时间:2015-03-15 02:01:23      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

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();

    }

}

 

lpc1768的rit使用

标签:

原文地址:http://www.cnblogs.com/dengxiaojun/p/4338679.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!