Running multiple threads on mbed using RTOS

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

Committer:
wschon
Date:
Sun Feb 28 21:58:15 2016 +0000
Revision:
0:fdcdbc5499f7
Child:
1:2129bb91c172
So far two threads are running that use the uLCD display

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 0:fdcdbc5499f7 5
wschon 0:fdcdbc5499f7 6 SDFileSystem sd(p5, p6, p7, p8, "sd");
wschon 0:fdcdbc5499f7 7 Serial pc(USBTX, USBRX);
wschon 0:fdcdbc5499f7 8 Mutex ulcd_mutex;
wschon 0:fdcdbc5499f7 9 uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin;
wschon 0:fdcdbc5499f7 10 DigitalOut myled(LED1);
wschon 0:fdcdbc5499f7 11
wschon 0:fdcdbc5499f7 12 void ulcd2_thread(void const *args) {
wschon 0:fdcdbc5499f7 13 while(true) {
wschon 0:fdcdbc5499f7 14 ulcd_mutex.lock();
wschon 0:fdcdbc5499f7 15 pc.printf("Activated mutex lock on uLCD screen: ulcd2_thread");
wschon 0:fdcdbc5499f7 16 uLCD.cls();
wschon 0:fdcdbc5499f7 17 uLCD.printf("\nECE 4180 L3: RTOS\n"); //Default Green on black text
wschon 0:fdcdbc5499f7 18 uLCD.printf("\nWes Schon Nick Liu");
wschon 0:fdcdbc5499f7 19 uLCD.text_width(4); //4X size text
wschon 0:fdcdbc5499f7 20 uLCD.text_height(4);
wschon 0:fdcdbc5499f7 21 Thread::wait(3000);
wschon 0:fdcdbc5499f7 22 ulcd_mutex.unlock();
wschon 0:fdcdbc5499f7 23 }
wschon 0:fdcdbc5499f7 24 }
wschon 0:fdcdbc5499f7 25
wschon 0:fdcdbc5499f7 26 int main() {
wschon 0:fdcdbc5499f7 27 Thread thread(ulcd2_thread);
wschon 0:fdcdbc5499f7 28 while(1) {
wschon 0:fdcdbc5499f7 29 myled = 1;
wschon 0:fdcdbc5499f7 30 Thread::wait(200);
wschon 0:fdcdbc5499f7 31 myled = 0;
wschon 0:fdcdbc5499f7 32 Thread::wait(200);
wschon 0:fdcdbc5499f7 33 ulcd_mutex.lock();
wschon 0:fdcdbc5499f7 34 uLCD.cls();
wschon 0:fdcdbc5499f7 35 //SD card needed with image and video files for last two demos
wschon 0:fdcdbc5499f7 36 uLCD.cls();
wschon 0:fdcdbc5499f7 37 uLCD.media_init();
wschon 0:fdcdbc5499f7 38 uLCD.printf("\n\nAn SD card is needed for image and video data");
wschon 0:fdcdbc5499f7 39 uLCD.set_sector_address(0x0000, 0x0000);
wschon 0:fdcdbc5499f7 40 uLCD.display_video(0,0);
wschon 0:fdcdbc5499f7 41 Thread::wait(3000);
wschon 0:fdcdbc5499f7 42 ulcd_mutex.unlock();
wschon 0:fdcdbc5499f7 43 }
wschon 0:fdcdbc5499f7 44 }