isr example

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);
+        }
+    }
+}