APP Team
/
app3
led example with 2 timers
Diff: main.cpp
- Revision:
- 0:11dd239703cc
- Child:
- 1:6e31c704f4d6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Feb 07 19:55:57 2014 +0000 @@ -0,0 +1,94 @@ +#include "mbed.h" + +InterruptIn signal(p15); +Serial pc(USBTX,USBRX); + +DigitalOut myled(LED1); +DigitalOut myled2(LED2); +volatile unsigned short timer_count, timer1_count; + +extern "C" void TIMER0_IRQHandler (void) +{ +if((LPC_TIM0->IR & 0x01) == 0x01) // if MR0 interrupt, proceed + { + LPC_TIM0->IR |= 1 << 0; // Clear MR0 interrupt flag + timer_count++; //increment timer_count + + // pc.printf("timer_count %d \n\r", timer_count); + if (timer_count >= 80) //Set timer_count for about 8 seconds + { + if (myled == 1) //If LED off, turn it on & + { + myled = 0; + timer_count = 0; //reset count + } + else + { + myled = 1; //If LED on, turn it off & + timer_count = 0; //reset count + } + } + } +} + +extern "C" void TIMER1_IRQHandler (void) +{ +if((LPC_TIM1->IR & 0x01) == 0x01) // if MR0 interrupt, proceed + { + LPC_TIM1->IR |= 1 << 0; // Clear MR0 interrupt flag + timer1_count++; //increment timer_count + + // pc.printf("timer1_count %d \n\r", timer1_count); + if (timer1_count >= 20) //Set timer_count for about 8 seconds + { + if (myled2 == 1) //If LED off, turn it on & + { + myled2 = 0; + timer1_count = 0; //reset count + } + else + { + myled2 = 1; //If LED on, turn it off & + timer1_count = 0; //reset count + } + } + } +} + +void timer0_init(void) +{ + LPC_SC->PCONP |=1<1; //timer0 power on + LPC_TIM0->MR0 = 2398000; //100 msec + LPC_TIM0->MCR = 3; //interrupt and reset control + //3 = Interrupt & reset timer0 on match + //1 = Interrupt only, no reset of timer0 + NVIC_EnableIRQ(TIMER0_IRQn); //enable timer0 interrupt + LPC_TIM0->TCR = 1; //enable Timer0 + pc.printf("Done timer0_init\n\r"); +} + +void timer1_init(void) +{ + LPC_SC->PCONP |=1<<2; //timer1 power on + LPC_TIM1->MR0 = 2398000; //100 msec + LPC_TIM1->MCR = 3; //interrupt and reset control + //3 = Interrupt & reset timer1 on match + //1 = Interrupt only, no reset of timer0 + NVIC_EnableIRQ(TIMER1_IRQn); //enable timer1 interrupt + LPC_TIM1->TCR = 1; //enable Timer1 + pc.printf("Done timer1_init\n\r"); +} + + +int main (void) +{ + myled = 0; + myled2 = 0; + timer0_init(); + timer1_init(); + + while(1) + { + + } +} \ No newline at end of file