
Shared event example. Instead of creating special thread user can use shared event queue and dispatch the global event queue from main thread.
Fork of Shared_Events_1 by
Diff: main.cpp
- Revision:
- 0:7c7d5b625e59
- Child:
- 1:154179bdc39d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Dec 18 16:50:19 2017 +0000 @@ -0,0 +1,26 @@ +#include "mbed.h" +#include "mbed_events.h" + +DigitalOut led1(LED1); +InterruptIn sw(SW2); + +void rise_handler(void) { + // Toggle LED + led1 = !led1; +} + +void fall_handler(void) { + printf("fall_handler in context %p\r\n", Thread::gettid()); + // Toggle LED + led1 = !led1; +} + +int main() { + // Request the shared queue + EventQueue *queue = mbed_event_queue(); + printf("Starting in context %p\r\n", Thread::gettid()); + // The 'rise' handler will execute in IRQ context + sw.rise(rise_handler); + // The 'fall' handler will execute in the context of the shared queue thread + sw.fall(queue->event(fall_handler)); +}