KEIS

Dependencies:   C12832_lcd mbed-rtos mbed

Committer:
khayakawa
Date:
Sat Sep 28 07:11:02 2013 +0000
Revision:
0:b9a7a54d863b
KEIS

Who changed what in which revision?

UserRevisionLine numberNew contents of line
khayakawa 0:b9a7a54d863b 1 #include "mbed.h"
khayakawa 0:b9a7a54d863b 2 #include "rtos.h"
khayakawa 0:b9a7a54d863b 3 #include "C12832_lcd.h"
khayakawa 0:b9a7a54d863b 4
khayakawa 0:b9a7a54d863b 5 C12832_LCD lcd;
khayakawa 0:b9a7a54d863b 6 Mutex lcd_mutex;
khayakawa 0:b9a7a54d863b 7
khayakawa 0:b9a7a54d863b 8 void lcd_thread1(void const *argument) {
khayakawa 0:b9a7a54d863b 9 int count1;
khayakawa 0:b9a7a54d863b 10 while (true) {
khayakawa 0:b9a7a54d863b 11 Thread::signal_wait(0x1);
khayakawa 0:b9a7a54d863b 12 lcd_mutex.lock();
khayakawa 0:b9a7a54d863b 13 lcd.locate(0,3);
khayakawa 0:b9a7a54d863b 14 lcd.printf("%thread2 count: %d\n\r", count1);
khayakawa 0:b9a7a54d863b 15 lcd_mutex.unlock();
khayakawa 0:b9a7a54d863b 16 count1++;
khayakawa 0:b9a7a54d863b 17 }
khayakawa 0:b9a7a54d863b 18 }
khayakawa 0:b9a7a54d863b 19
khayakawa 0:b9a7a54d863b 20 void count_thread1(void const *argument){
khayakawa 0:b9a7a54d863b 21 Thread thread2(lcd_thread1);
khayakawa 0:b9a7a54d863b 22 while (true) {
khayakawa 0:b9a7a54d863b 23 Thread::wait(1000);
khayakawa 0:b9a7a54d863b 24 thread2.signal_set(0x1);
khayakawa 0:b9a7a54d863b 25 }
khayakawa 0:b9a7a54d863b 26 }
khayakawa 0:b9a7a54d863b 27
khayakawa 0:b9a7a54d863b 28 void lcd_thread2(void const *argument) {
khayakawa 0:b9a7a54d863b 29 int count2=0;
khayakawa 0:b9a7a54d863b 30 while (true) {
khayakawa 0:b9a7a54d863b 31 Thread::signal_wait(0x1);
khayakawa 0:b9a7a54d863b 32 // lcd_mutex.lock();
khayakawa 0:b9a7a54d863b 33 lcd.locate(0,15);
khayakawa 0:b9a7a54d863b 34 lcd.printf("%thread4 count: %d\n\r", count2);
khayakawa 0:b9a7a54d863b 35 // lcd_mutex.unlock();
khayakawa 0:b9a7a54d863b 36 count2++;
khayakawa 0:b9a7a54d863b 37 }
khayakawa 0:b9a7a54d863b 38 }
khayakawa 0:b9a7a54d863b 39
khayakawa 0:b9a7a54d863b 40 void count_thread2(void const *argument){
khayakawa 0:b9a7a54d863b 41 Thread thread4(lcd_thread2);
khayakawa 0:b9a7a54d863b 42 while (true) {
khayakawa 0:b9a7a54d863b 43 Thread::wait(2000);
khayakawa 0:b9a7a54d863b 44 thread4.signal_set(0x1);
khayakawa 0:b9a7a54d863b 45 }
khayakawa 0:b9a7a54d863b 46 }
khayakawa 0:b9a7a54d863b 47
khayakawa 0:b9a7a54d863b 48 int main() {
khayakawa 0:b9a7a54d863b 49 lcd.cls();
khayakawa 0:b9a7a54d863b 50 Thread thread1(count_thread1);
khayakawa 0:b9a7a54d863b 51 // Thread thread2(lcd_thread1);
khayakawa 0:b9a7a54d863b 52 Thread thread3(count_thread2);
khayakawa 0:b9a7a54d863b 53 // Thread thread4(lcd_thread2);
khayakawa 0:b9a7a54d863b 54 Thread::wait(osWaitForever);
khayakawa 0:b9a7a54d863b 55 }