mbed_example
/
rtos_isr
isr example
Diff: main.cpp
- Revision:
- 1:3043ec651794
- Parent:
- 0:4979ad0f5cb9
- Child:
- 2:3ded4c6c9dff
--- a/main.cpp Fri Jul 13 11:46:23 2012 +0000 +++ b/main.cpp Fri Jul 13 11:48:28 2012 +0000 @@ -1,1 +1,34 @@ +#include "mbed.h" +#include "rtos.h" +Queue<uint32_t, 5> queue; + +DigitalOut myled(LED1); + +void queue_isr() { + queue.put((uint32_t*)2); + myled = !myled; +} + +void queue_thread(void const *argument) { + while (true) { + queue.put((uint32_t*)1); + Thread::wait(1000); + } +} + +int main (void) { + Thread thread(queue_thread); + + Ticker ticker; + ticker.attach(queue_isr, 1.0); + + while (true) { + osEvent evt = queue.get(); + if (evt.status != osEventMessage) { + printf("queue->get() returned %02x status\n\r", evt.status); + } else { + printf("queue->get() returned %d\n\r", evt.value.v); + } + } +}