LPC1768在系統(tǒng)滴答定時器和通用定時器之外還引入了一個定時器,叫做重復(fù)定時器RIT,該定時器只能用于定時操作,帶有一個中斷,我個人的感覺,這似乎是為了延時函數(shù)設(shè)計的一個定時器
那么使用該定時器時遵循什么流程?
第一,打開時鐘
第二,我們要確定定時器從pclk分頻數(shù)值,這要靠另外一個寄存器
第三,先關(guān)閉定時器
第四 設(shè)置寄存器比較值
第五 清空或者屏蔽一些特定的比較屏蔽位
最后打開中斷,啟動定時器
#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的中斷函數(shù)中響應(yīng)中斷,如下 void RIT_IRQHandler() { u8 state=LPC_RIT->RICTRL; if(state&0x01) //有中斷發(fā)生 { RitStop(); LPC_RIT->RICOUNTER=0; LPC_RIT->RICTRL|=0x01; //清除中斷 RIT_INT_CALLBACK; RitStart(); } }