LPC1768在系統(tǒng)滴答定時(shí)器和通用定時(shí)器之外還引入了一個(gè)定時(shí)器,叫做重復(fù)定時(shí)器RIT,該定時(shí)器只能用于定時(shí)操作,帶有一個(gè)中斷,我個(gè)人的感覺(jué),這似乎是為了延時(shí)函數(shù)設(shè)計(jì)的一個(gè)定時(shí)器
那么使用該定時(shí)器時(shí)遵循什么流程?
第一,打開(kāi)時(shí)鐘
第二,我們要確定定時(shí)器從pclk分頻數(shù)值,這要靠另外一個(gè)寄存器
第三,先關(guān)閉定時(shí)器
第四 設(shè)置寄存器比較值
第五 清空或者屏蔽一些特定的比較屏蔽位
最后打開(kāi)中斷,啟動(dòng)定時(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);//打開(kāi)時(shí)鐘 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(); } }