Basic example showing the Queue API with a producer in an ISR and a consumer in a normal thread.
mbed 2 and mbed OS 5
This is an mbed 2 example. mbed OS 5 has integrated the mbed library with mbed-rtos. For an mbed-os example, please see:
Import programrtos_isr
isr example
main.cpp
- Committer:
- mbed_official
- Date:
- 2017-02-15
- Revision:
- 5:23a456bf0487
- Parent:
- 4:40078e697304
File content as of revision 5:23a456bf0487:
#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 *args) { 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); } } }