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