summaryrefslogtreecommitdiff
path: root/tmk_core/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/isr/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/isr/main.cpp')
-rw-r--r--tmk_core/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/isr/main.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/tmk_core/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/isr/main.cpp b/tmk_core/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/isr/main.cpp
new file mode 100644
index 0000000000..52c7da3d8c
--- /dev/null
+++ b/tmk_core/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/isr/main.cpp
@@ -0,0 +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);
+ }
+ }
+}