#define BIT(x)(1<<(x))
void TIMER16_0_IRQHandler(void)
{
LPC_GPIO0->NOT|=BIT(12);
LPC_CT16B0->IR=BIT(3);;
}
void timer16_Init(void)
{
LPC_SYSCON->SYSAHBCLKCTRL |= 1<<7; // turn on TIM16B0 clock
LPC_CT16B0->TCR=2; // stop and reset
LPC_CT16B0->PR=45; // 45 MHz / 45 = 1us base time
LPC_CT16B0->CTCR=0;
LPC_CT16B0->MCR=(3<<9); // reset and interrupt on MR3
LPC_CT16B0->MR3=125; // interrupt every 125us
LPC_CT16B0->EMR=(3<<10); // toggle bit (although not necessary)
LPC_CT16B0->TC=0;
LPC_CT16B0->IR|=BIT(3); // clear any pending interrupt
LPC_CT16B0->TCR=1; // start timer
}
int main(void)
{
volatile static int i = 0 ;
LPC_SYSCON->SYSAHBCLKCTRL |= 0xE001001FUL;
LPC_GPIO0->DIR|=BIT(12);
LPC_GPIO0->CLR|=BIT(12);
timer16_Init();
while(1) {
i++ ;
}
return 0 ;
} |