Edwin Kadavy
/
multi-thread-edwin
none
Fork of thread-example2 by
main.cpp@1:82ceca58478b, 2018-01-18 (annotated)
- Committer:
- edwinkad
- Date:
- Thu Jan 18 17:25:58 2018 +0000
- Revision:
- 1:82ceca58478b
- Parent:
- 0:83abbbeb9a3d
lol
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
WilliamMarshQMUL | 0:83abbbeb9a3d | 1 | // Simple Example fo use of Threads on mbed OS 5 |
WilliamMarshQMUL | 0:83abbbeb9a3d | 2 | // Only need to include mbed.h |
WilliamMarshQMUL | 0:83abbbeb9a3d | 3 | |
WilliamMarshQMUL | 0:83abbbeb9a3d | 4 | #include "mbed.h" |
WilliamMarshQMUL | 0:83abbbeb9a3d | 5 | |
WilliamMarshQMUL | 0:83abbbeb9a3d | 6 | // Variable for a second thread |
WilliamMarshQMUL | 0:83abbbeb9a3d | 7 | Thread thread; |
edwinkad | 1:82ceca58478b | 8 | volatile int speed; |
WilliamMarshQMUL | 0:83abbbeb9a3d | 9 | |
edwinkad | 1:82ceca58478b | 10 | DigitalOut ledR(LED1); // Red LED |
edwinkad | 1:82ceca58478b | 11 | //DigitalOut ledG(LED2); // Green LED |
edwinkad | 1:82ceca58478b | 12 | //DigitalOut ledB(LED3); // Blue LED |
edwinkad | 1:82ceca58478b | 13 | |
edwinkad | 1:82ceca58478b | 14 | Serial pc(USBTX, USBRX); // tx, rx |
WilliamMarshQMUL | 0:83abbbeb9a3d | 15 | |
WilliamMarshQMUL | 0:83abbbeb9a3d | 16 | // This method is run in the second thread |
edwinkad | 1:82ceca58478b | 17 | void led_default() { |
WilliamMarshQMUL | 0:83abbbeb9a3d | 18 | while (true) { |
edwinkad | 1:82ceca58478b | 19 | Thread::wait(speed); |
edwinkad | 1:82ceca58478b | 20 | ledR = !ledR; |
WilliamMarshQMUL | 0:83abbbeb9a3d | 21 | } |
WilliamMarshQMUL | 0:83abbbeb9a3d | 22 | } |
WilliamMarshQMUL | 0:83abbbeb9a3d | 23 | |
WilliamMarshQMUL | 0:83abbbeb9a3d | 24 | // This is the main thread |
WilliamMarshQMUL | 0:83abbbeb9a3d | 25 | int main (void) { |
edwinkad | 1:82ceca58478b | 26 | char c; |
edwinkad | 1:82ceca58478b | 27 | speed=250; |
edwinkad | 1:82ceca58478b | 28 | ledR=1; |
edwinkad | 1:82ceca58478b | 29 | thread.start(callback(led_default)); |
edwinkad | 1:82ceca58478b | 30 | while(1) { |
edwinkad | 1:82ceca58478b | 31 | pc.printf("\npress f or s>"); |
edwinkad | 1:82ceca58478b | 32 | //ledR_thread(speed); |
edwinkad | 1:82ceca58478b | 33 | c = pc.getc(); |
edwinkad | 1:82ceca58478b | 34 | if (c=='f'){ |
edwinkad | 1:82ceca58478b | 35 | speed-=10; |
edwinkad | 1:82ceca58478b | 36 | }else if(c=='s'){ |
edwinkad | 1:82ceca58478b | 37 | speed+=10; |
edwinkad | 1:82ceca58478b | 38 | } |
WilliamMarshQMUL | 0:83abbbeb9a3d | 39 | // start the second thread |
WilliamMarshQMUL | 0:83abbbeb9a3d | 40 | } |
WilliamMarshQMUL | 0:83abbbeb9a3d | 41 | } |
edwinkad | 1:82ceca58478b | 42 |