Leonardo Iandiorio
/
BlinkThreadCallback2LED
2 leds blinking with 2 different threads
main.cpp@0:05b174e27260, 2018-11-15 (annotated)
- Committer:
- iandil
- Date:
- Thu Nov 15 13:56:51 2018 +0000
- Revision:
- 0:05b174e27260
Finished threads synchronization
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
iandil | 0:05b174e27260 | 1 | #include "mbed.h" |
iandil | 0:05b174e27260 | 2 | |
iandil | 0:05b174e27260 | 3 | |
iandil | 0:05b174e27260 | 4 | DigitalOut led2(LED2); |
iandil | 0:05b174e27260 | 5 | DigitalOut led3(LED3); |
iandil | 0:05b174e27260 | 6 | |
iandil | 0:05b174e27260 | 7 | // Blink function toggles the led in a long running loop |
iandil | 0:05b174e27260 | 8 | void blink_led(DigitalOut *led) { |
iandil | 0:05b174e27260 | 9 | *led = !*led; |
iandil | 0:05b174e27260 | 10 | wait(1); |
iandil | 0:05b174e27260 | 11 | *led = !*led; |
iandil | 0:05b174e27260 | 12 | } |
iandil | 0:05b174e27260 | 13 | |
iandil | 0:05b174e27260 | 14 | |
iandil | 0:05b174e27260 | 15 | |
iandil | 0:05b174e27260 | 16 | // Spawns a thread to run blink for 5 seconds |
iandil | 0:05b174e27260 | 17 | int main() { |
iandil | 0:05b174e27260 | 18 | while(1) { |
iandil | 0:05b174e27260 | 19 | Thread thread1; |
iandil | 0:05b174e27260 | 20 | Thread thread2; |
iandil | 0:05b174e27260 | 21 | thread1.start(callback(blink_led, &led2)); |
iandil | 0:05b174e27260 | 22 | thread1.join(); |
iandil | 0:05b174e27260 | 23 | thread2.start(callback(blink_led, &led3)); |
iandil | 0:05b174e27260 | 24 | thread2.join(); |
iandil | 0:05b174e27260 | 25 | } |
iandil | 0:05b174e27260 | 26 | } |