
Task 6.1.1 solution
Diff: main.cpp
- Revision:
- 0:e1ff9b3f13da
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Mar 08 11:47:10 2016 +0000 @@ -0,0 +1,65 @@ +#include "mbed.h" +#include "rtos.h" + +//Function declarations +void Function1(void const *args); +void Function2(void const *args); +void Function3(void const *args); + +//I/O +DigitalOut onBoardLED(LED1); +DigitalOut redLED(D7); +DigitalOut yellowLED(D6); +DigitalOut greenLED(D5); + +DigitalIn onBoardSwitch(USER_BUTTON); +DigitalIn SW1(D4); +DigitalIn SW2(D3); + +Thread* t1; +Thread* t2; +Thread* t3; + +void Function1(void const *args) +{ + while (true) { + redLED = !redLED; + Thread::wait(2000); + } +} + +void Function2(void const *args) +{ + while (true) { + yellowLED = !yellowLED; + Thread::wait(1000); + } +} + +//Green Flashing +void Function3(void const *args) +{ + while (true) { + greenLED = !greenLED; + Thread::wait(500); + } +} + + +//Main thread +int main() { + redLED = 0; + yellowLED = 0; + greenLED = 0; + + //Create and run threads + t1 = new Thread(Function1); + t2 = new Thread(Function2); + t3 = new Thread(Function3); //Dynamically allocated + + while(1) { + //Thread::wait(osWaitForever); + Thread::wait(5000); + printf("Awake\n"); //Should not happen + } +}