以下是我使用Pin0.2捕获脉冲,捕获一次就产生一个中断,然后用一个全局变量计数,是否有一些轻量级的做法,为什么不能直接读一个计数寄存器呢?
请各位高手指点,万分感谢!
#include <LPC21xx.H>
void T0isr(void) __irq;
unsigned long count=0;
int main(void)
{
VPBDIV = 0x00000002; //Set pclk to 30 Mhz
PINSEL0 = 0x00000020; //Enable pin 0.2 as capture channel0
T0PR = 0x0000001E; //Load prescaler for 1 Msec tick
T0TCR = 0x00000002; //Reset counter and prescaler
T0CCR = 0x00000005; //Capture on rising edge of channel0
T0TCR = 0x00000001; //enable timer
VICVectAddr4 = (unsigned)T0isr; //Set the timer ISR vector address
VICVectCntl4 = 0x00000024; //Set channel
VICIntEnable = 0x00000010; //Enable the interrupt
while(1)
{
;
}
}
void T0isr (void) __irq
{
static int value;
value = T0CR0; // read the capture value
T0IR |= 0x00000001; //Clear match 0 interrupt
VICVectAddr = 0x00000000; //Dummy write to signal end of interrupt
count++;
} |