KEIS
Dependencies: C12832_lcd mbed-rtos mbed
main.cpp@0:b9a7a54d863b, 2013-09-28 (annotated)
- Committer:
- khayakawa
- Date:
- Sat Sep 28 07:11:02 2013 +0000
- Revision:
- 0:b9a7a54d863b
KEIS
Who changed what in which revision?
| User | Revision | Line number | New 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 | } |