APS de Sistemas Operacionais / Controle 2

Dependencies:   mbed-rtos mbed HC_SR04_Ultrasonic_Library

Committer:
feupos
Date:
Sat Oct 21 21:13:13 2017 +0000
Revision:
0:8d53c4c11953
Child:
1:c07ed2436cd8
initial build

Who changed what in which revision?

UserRevisionLine numberNew contents of line
feupos 0:8d53c4c11953 1 #include "mbed.h"
feupos 0:8d53c4c11953 2 #include "rtos.h"
feupos 0:8d53c4c11953 3
feupos 0:8d53c4c11953 4 DigitalOut led1(LED1);
feupos 0:8d53c4c11953 5 InterruptIn sw2(SW2);
feupos 0:8d53c4c11953 6 uint32_t button_pressed;
feupos 0:8d53c4c11953 7 Thread *thread2;
feupos 0:8d53c4c11953 8
feupos 0:8d53c4c11953 9 void sw2_press(void)
feupos 0:8d53c4c11953 10 {
feupos 0:8d53c4c11953 11 thread2->signal_set(0x1);
feupos 0:8d53c4c11953 12 }
feupos 0:8d53c4c11953 13
feupos 0:8d53c4c11953 14 void led_thread(void const *argument)
feupos 0:8d53c4c11953 15 {
feupos 0:8d53c4c11953 16 while (true) {
feupos 0:8d53c4c11953 17 led1 = !led1;
feupos 0:8d53c4c11953 18 Thread::wait(1000);
feupos 0:8d53c4c11953 19 }
feupos 0:8d53c4c11953 20 }
feupos 0:8d53c4c11953 21
feupos 0:8d53c4c11953 22 void button_thread(void const *argument)
feupos 0:8d53c4c11953 23 {
feupos 0:8d53c4c11953 24 while (true) {
feupos 0:8d53c4c11953 25 Thread::signal_wait(0x1);
feupos 0:8d53c4c11953 26 button_pressed++;
feupos 0:8d53c4c11953 27 }
feupos 0:8d53c4c11953 28 }
feupos 0:8d53c4c11953 29
feupos 0:8d53c4c11953 30 int main()
feupos 0:8d53c4c11953 31 {
feupos 0:8d53c4c11953 32 Thread thread(led_thread);
feupos 0:8d53c4c11953 33 thread2 = new Thread(button_thread);
feupos 0:8d53c4c11953 34
feupos 0:8d53c4c11953 35 button_pressed = 0;
feupos 0:8d53c4c11953 36 sw2.fall(&sw2_press);
feupos 0:8d53c4c11953 37 while (true) {
feupos 0:8d53c4c11953 38 Thread::wait(5000);
feupos 0:8d53c4c11953 39 printf("SW2 was pressed (last 5 seconds): %d \n", button_pressed);
feupos 0:8d53c4c11953 40 fflush(stdout);
feupos 0:8d53c4c11953 41 button_pressed = 0;
feupos 0:8d53c4c11953 42 }
feupos 0:8d53c4c11953 43 }