Praktikum2_4_AMSL_v1
Dependencies: C12832_lcd mbed
Fork of TimerInterruptExample by
main.cpp@0:a6ea53688962, 2010-02-09 (annotated)
- Committer:
- simon
- Date:
- Tue Feb 09 11:00:52 2010 +0000
- Revision:
- 0:a6ea53688962
- Child:
- 1:b6aa27661206
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
simon | 0:a6ea53688962 | 1 | // Example to set up an interrupt based on the LPC TIMER0 match register, sford |
simon | 0:a6ea53688962 | 2 | |
simon | 0:a6ea53688962 | 3 | #include "mbed.h" |
simon | 0:a6ea53688962 | 4 | |
simon | 0:a6ea53688962 | 5 | DigitalOut myled(LED1); |
simon | 0:a6ea53688962 | 6 | DigitalOut irqled(LED2); |
simon | 0:a6ea53688962 | 7 | |
simon | 0:a6ea53688962 | 8 | void myhandler() { |
simon | 0:a6ea53688962 | 9 | // do something! |
simon | 0:a6ea53688962 | 10 | irqled = !irqled; |
simon | 0:a6ea53688962 | 11 | |
simon | 0:a6ea53688962 | 12 | // clear the TIMER0 interrupt |
simon | 0:a6ea53688962 | 13 | LPC_TIM0->IR = 1; |
simon | 0:a6ea53688962 | 14 | } |
simon | 0:a6ea53688962 | 15 | |
simon | 0:a6ea53688962 | 16 | int main() { |
simon | 0:a6ea53688962 | 17 | // power up TIMER0 (PCONP[1]) |
simon | 0:a6ea53688962 | 18 | LPC_SC->PCONP |= 1 << 1; |
simon | 0:a6ea53688962 | 19 | |
simon | 0:a6ea53688962 | 20 | // reset and set TIMER0 to timer mode |
simon | 0:a6ea53688962 | 21 | LPC_TIM0->TCR = 0x2; |
simon | 0:a6ea53688962 | 22 | LPC_TIM0->CTCR = 0x0; |
simon | 0:a6ea53688962 | 23 | |
simon | 0:a6ea53688962 | 24 | // set no prescaler |
simon | 0:a6ea53688962 | 25 | LPC_TIM0->PR = 0; |
simon | 0:a6ea53688962 | 26 | |
simon | 0:a6ea53688962 | 27 | // calculate period (1 interrupt every second) |
simon | 0:a6ea53688962 | 28 | uint32_t period = SystemCoreClock / 4; |
simon | 0:a6ea53688962 | 29 | |
simon | 0:a6ea53688962 | 30 | // set match register and enable interrupt |
simon | 0:a6ea53688962 | 31 | LPC_TIM0->MR0 = period; |
simon | 0:a6ea53688962 | 32 | LPC_TIM0->MCR |= 1 << 0; // interrupt on match |
simon | 0:a6ea53688962 | 33 | LPC_TIM0->MCR |= 1 << 1; // reset on match |
simon | 0:a6ea53688962 | 34 | |
simon | 0:a6ea53688962 | 35 | // enable the vector in the interrupt controller |
simon | 0:a6ea53688962 | 36 | NVIC_SetVector(TIMER0_IRQn, (uint32_t)&myhandler); |
simon | 0:a6ea53688962 | 37 | NVIC_EnableIRQ(TIMER0_IRQn); |
simon | 0:a6ea53688962 | 38 | |
simon | 0:a6ea53688962 | 39 | // start the timer |
simon | 0:a6ea53688962 | 40 | LPC_TIM0->TCR = 1; |
simon | 0:a6ea53688962 | 41 | |
simon | 0:a6ea53688962 | 42 | // hang around! |
simon | 0:a6ea53688962 | 43 | while(1) { |
simon | 0:a6ea53688962 | 44 | myled = 1; |
simon | 0:a6ea53688962 | 45 | wait(0.2); |
simon | 0:a6ea53688962 | 46 | myled = 0; |
simon | 0:a6ea53688962 | 47 | wait(0.2); |
simon | 0:a6ea53688962 | 48 | } |
simon | 0:a6ea53688962 | 49 | } |