NXP

LPC1768之定时器TIMER0

2019-07-12 11:45发布

/************************************************************************************* * main.c: the main file * NXP --> LPC1768 * * * Author : light * Date : 2012-4-23 * * Email : lightwu@hotmail.com ***************************************************************************************/ #include #include "GPIO.h" volatile uint32_t Timer0Cont = 0; /******************************************************************************** ** Descriptions :timer0 initialze ** ** parameters :None ** Returned value :None *********************************************************************************/ void Timer0Init(void) { LPC_SC->PCONP |= (1<<1); //打开功率控制 LPC_TIM0->TCR |= (1<<1); //复位定时器 LPC_TIM0->PR = 0x00; //预分频清零 LPC_TIM0->MR0 = 10000; //匹配寄存器与定时器计数器值相比较 LPC_TIM0->IR |= 0XFF; //清所有中断标志位 LPC_TIM0->MCR |= ((1<<1)|(1<<0)); //MR0与TC值匹配时将产生中断,TC复位 LPC_TIM0->TCR = (1<<0); //启动定时器 NVIC_EnableIRQ(TIMER0_IRQn); /* enable irq in nvic */ } /******************************************************************************** ** Descriptions :Timer0 interrupt ** ** parameters :None ** Returned value :None *********************************************************************************/ void TIMER0_IRQHandler(void) { LPC_TIM0->IR |= (1<<0); //清中断标志 Timer0Cont++; } /*---------------------------------------------------------------------------- The main Function *----------------------------------------------------------------------------*/ int main(void) { int loc; SystemInit(); Timer0Init(); LedInit(); while(1) { if(1000 == Timer0Cont) { Timer0Cont = 0; loc = ~loc; if(!loc) { LedNOn(1); LedNOn(2); } else { LedNOff(1); LedNOff(2); } } /* LedNOn(loc); DelayMs(1000); LedNOff(loc); DelayMs(1000); */ } }