Rtos API example

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "rtos.h"
00003 
00004 #if defined(MBED_RTOS_SINGLE_THREAD)
00005   #error [NOT_SUPPORTED] test not supported
00006 #endif
00007 
00008 Queue<uint32_t, 5> queue;
00009 
00010 DigitalOut myled(LED1);
00011 
00012 void queue_isr() {
00013     queue.put((uint32_t*)2);
00014     myled = !myled;
00015 }
00016 
00017 void queue_thread(void const *argument) {
00018     while (true) {
00019         queue.put((uint32_t*)1);
00020         Thread::wait(1000);
00021     }
00022 }
00023 
00024 int main (void) {
00025     Thread thread(queue_thread);
00026 
00027     Ticker ticker;
00028     ticker.attach(queue_isr, 1.0);
00029 
00030     while (true) {
00031         osEvent evt = queue.get();
00032         if (evt.status != osEventMessage) {
00033             printf("queue->get() returned %02x status\n\r", evt.status);
00034         } else {
00035             printf("queue->get() returned %d\n\r", evt.value.v);
00036         }
00037     }
00038 }