Running multiple threads on mbed using RTOS

Dependencies:   4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player_appbd

Committer:
wschon
Date:
Sun Feb 28 22:40:13 2016 +0000
Revision:
1:2129bb91c172
Parent:
0:fdcdbc5499f7
Child:
2:f4ad69c44c7e
Added USB libraries;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wschon 0:fdcdbc5499f7 1 #include "mbed.h"
wschon 0:fdcdbc5499f7 2 #include "rtos.h"
wschon 0:fdcdbc5499f7 3 #include "uLCD_4DGL.h"
wschon 0:fdcdbc5499f7 4 #include "SDFileSystem.h"
wschon 1:2129bb91c172 5 #include "USBHostMSD.h"
wschon 0:fdcdbc5499f7 6
wschon 0:fdcdbc5499f7 7 SDFileSystem sd(p5, p6, p7, p8, "sd");
wschon 0:fdcdbc5499f7 8 Serial pc(USBTX, USBRX);
wschon 0:fdcdbc5499f7 9 Mutex ulcd_mutex;
wschon 0:fdcdbc5499f7 10 uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin;
wschon 0:fdcdbc5499f7 11 DigitalOut myled(LED1);
wschon 0:fdcdbc5499f7 12
wschon 0:fdcdbc5499f7 13 void ulcd2_thread(void const *args) {
wschon 1:2129bb91c172 14 int count = 0;
wschon 0:fdcdbc5499f7 15 while(true) {
wschon 0:fdcdbc5499f7 16 ulcd_mutex.lock();
wschon 0:fdcdbc5499f7 17 pc.printf("Activated mutex lock on uLCD screen: ulcd2_thread");
wschon 0:fdcdbc5499f7 18 uLCD.cls();
wschon 0:fdcdbc5499f7 19 uLCD.printf("\nECE 4180 L3: RTOS\n"); //Default Green on black text
wschon 0:fdcdbc5499f7 20 uLCD.printf("\nWes Schon Nick Liu");
wschon 1:2129bb91c172 21 uLCD.printf("\n\nThread 2 count: %d", count);
wschon 0:fdcdbc5499f7 22 uLCD.text_width(4); //4X size text
wschon 0:fdcdbc5499f7 23 uLCD.text_height(4);
wschon 0:fdcdbc5499f7 24 Thread::wait(3000);
wschon 0:fdcdbc5499f7 25 ulcd_mutex.unlock();
wschon 1:2129bb91c172 26 count++;
wschon 0:fdcdbc5499f7 27 }
wschon 0:fdcdbc5499f7 28 }
wschon 0:fdcdbc5499f7 29
wschon 0:fdcdbc5499f7 30 int main() {
wschon 0:fdcdbc5499f7 31 Thread thread(ulcd2_thread);
wschon 1:2129bb91c172 32 int count2 = 0;
wschon 0:fdcdbc5499f7 33 while(1) {
wschon 0:fdcdbc5499f7 34 myled = 1;
wschon 0:fdcdbc5499f7 35 Thread::wait(200);
wschon 0:fdcdbc5499f7 36 myled = 0;
wschon 0:fdcdbc5499f7 37 Thread::wait(200);
wschon 0:fdcdbc5499f7 38 ulcd_mutex.lock();
wschon 0:fdcdbc5499f7 39 uLCD.cls();
wschon 0:fdcdbc5499f7 40 //SD card needed with image and video files for last two demos
wschon 0:fdcdbc5499f7 41 uLCD.cls();
wschon 0:fdcdbc5499f7 42 uLCD.media_init();
wschon 1:2129bb91c172 43 uLCD.printf("\n\nThread 1 count: %d", count2);
wschon 1:2129bb91c172 44 Thread::wait(200);
wschon 0:fdcdbc5499f7 45 uLCD.set_sector_address(0x0000, 0x0000);
wschon 0:fdcdbc5499f7 46 uLCD.display_video(0,0);
wschon 1:2129bb91c172 47 Thread::wait(100);
wschon 0:fdcdbc5499f7 48 ulcd_mutex.unlock();
wschon 1:2129bb91c172 49 count2++;
wschon 0:fdcdbc5499f7 50 }
wschon 0:fdcdbc5499f7 51 }