Stage-1 Students SoCEM
/
Task632-mbedos54
Demonstration of a message queue + memory pool
Diff: main.cpp
- Revision:
- 6:2e463846b575
- Parent:
- 5:31707531f715
- Child:
- 7:cd015e83995a
diff -r 31707531f715 -r 2e463846b575 main.cpp --- a/main.cpp Wed Mar 09 17:55:53 2016 +0000 +++ b/main.cpp Mon Mar 14 16:30:25 2016 +0000 @@ -23,67 +23,32 @@ //Thread ID for the Main function (CMSIS API) osThreadId tidMain; -//Thread sychronisation primatives -Mutex lock1; -Mutex lock2; -unsigned long sw1Count = 0; -unsigned long sw2Count = 0; - void thread1( const void* arg ) { pc.printf("Entering thread 1\n"); while (true) { yellowLED = 1; - - //Start critical section - lock1.lock(); - - sw1Count++; - printf("\nCount1 = %lu", sw1Count); - - Thread::wait(1); //1ms - - //End critical section - lock1.unlock(); - - if (SW1 == 1) { - lock2.lock(); - sw2Count--; - lock2.unlock(); - } - + Thread::wait(DELAY); yellowLED = 0; - Thread::wait(DELAY); + Thread::wait(DELAY); } } +//This thread has higher priority void thread2( const void* arg ) { pc.printf("Entering thread 2\n"); while (true) { redLED = 1; - - //Start critical section - lock2.lock(); - - sw2Count++; - printf("\nCount2 = %lu", sw2Count); - - Thread::wait(1); //1ms - - //End critical section - lock2.unlock(); - - if (SW2 == 1) { - lock1.lock(); - sw1Count--; - lock1.unlock(); - } - + if (SW1 == 1) { + //wait_ms(osWaitForever); + Thread::wait(osWaitForever); + } else { + Thread::wait(DELAY); + } redLED = 0; - Thread::wait(DELAY); - - } + Thread::wait(DELAY); + } } @@ -97,8 +62,9 @@ tidMain = Thread::gettid(); //Threads - Thread t1(thread1); - Thread t2(thread2); + Thread t1(thread1, NULL, osPriorityNormal); + //Thread t2(thread2, NULL, osPriorityNormal); + Thread t2(thread2, NULL, osPriorityAboveNormal); pc.printf("Main Thread\n"); while (true) {