Uan Dung / Mbed OS threads-test
Committer:
Uan
Date:
Sat Jul 20 09:28:34 2019 +0000
Revision:
0:30eb5c705d7f
Cambios

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Uan 0:30eb5c705d7f 1 #include "mbed.h"
Uan 0:30eb5c705d7f 2
Uan 0:30eb5c705d7f 3 AnalogIn ain0(A0);
Uan 0:30eb5c705d7f 4 AnalogIn ain1(A1);
Uan 0:30eb5c705d7f 5
Uan 0:30eb5c705d7f 6 DigitalOut dout(D7);
Uan 0:30eb5c705d7f 7 DigitalOut led1(LED1);
Uan 0:30eb5c705d7f 8 DigitalOut led2(LED2);
Uan 0:30eb5c705d7f 9 DigitalOut led3(LED3);
Uan 0:30eb5c705d7f 10 Serial pc(USBTX,USBRX);
Uan 0:30eb5c705d7f 11
Uan 0:30eb5c705d7f 12 Mutex stdio_mutex; // Para ver el efecto de mutex: poner wait_us a 1us y quitarlo o ponerlo, provoca errores en el envio muy frecuentemente.
Uan 0:30eb5c705d7f 13
Uan 0:30eb5c705d7f 14
Uan 0:30eb5c705d7f 15 Thread thread2;
Uan 0:30eb5c705d7f 16 Thread thread3;
Uan 0:30eb5c705d7f 17 Thread thread4;
Uan 0:30eb5c705d7f 18
Uan 0:30eb5c705d7f 19 Ticker parpadea1;
Uan 0:30eb5c705d7f 20 Ticker parpadea2;
Uan 0:30eb5c705d7f 21 Ticker parpadea3;
Uan 0:30eb5c705d7f 22
Uan 0:30eb5c705d7f 23
Uan 0:30eb5c705d7f 24 void parpadear1()
Uan 0:30eb5c705d7f 25 {
Uan 0:30eb5c705d7f 26 led1=!led1;
Uan 0:30eb5c705d7f 27 }
Uan 0:30eb5c705d7f 28
Uan 0:30eb5c705d7f 29 void parpadear2()
Uan 0:30eb5c705d7f 30 {
Uan 0:30eb5c705d7f 31 led2=!led2;
Uan 0:30eb5c705d7f 32 }
Uan 0:30eb5c705d7f 33
Uan 0:30eb5c705d7f 34 void parpadear3()
Uan 0:30eb5c705d7f 35 {
Uan 0:30eb5c705d7f 36 led3=!led3;
Uan 0:30eb5c705d7f 37 }
Uan 0:30eb5c705d7f 38
Uan 0:30eb5c705d7f 39
Uan 0:30eb5c705d7f 40 void leds()
Uan 0:30eb5c705d7f 41 {
Uan 0:30eb5c705d7f 42 while (1) {
Uan 0:30eb5c705d7f 43
Uan 0:30eb5c705d7f 44 if(ain0 > 0.3f) {
Uan 0:30eb5c705d7f 45 dout = 1;
Uan 0:30eb5c705d7f 46 } else {
Uan 0:30eb5c705d7f 47 dout = 0;
Uan 0:30eb5c705d7f 48 }
Uan 0:30eb5c705d7f 49
Uan 0:30eb5c705d7f 50 wait_ms(200);
Uan 0:30eb5c705d7f 51 }
Uan 0:30eb5c705d7f 52 }
Uan 0:30eb5c705d7f 53
Uan 0:30eb5c705d7f 54
Uan 0:30eb5c705d7f 55
Uan 0:30eb5c705d7f 56
Uan 0:30eb5c705d7f 57
Uan 0:30eb5c705d7f 58 void parpadeo2()
Uan 0:30eb5c705d7f 59 {
Uan 0:30eb5c705d7f 60 parpadea2.attach(&parpadear2, 0.5);
Uan 0:30eb5c705d7f 61 while(1)
Uan 0:30eb5c705d7f 62 {
Uan 0:30eb5c705d7f 63 wait_us(500);
Uan 0:30eb5c705d7f 64 stdio_mutex.lock();
Uan 0:30eb5c705d7f 65 printf("%f \n", ain1.read()*3.3f);
Uan 0:30eb5c705d7f 66 stdio_mutex.unlock();
Uan 0:30eb5c705d7f 67 }
Uan 0:30eb5c705d7f 68 }
Uan 0:30eb5c705d7f 69
Uan 0:30eb5c705d7f 70
Uan 0:30eb5c705d7f 71
Uan 0:30eb5c705d7f 72 void parpadeo3()
Uan 0:30eb5c705d7f 73 {
Uan 0:30eb5c705d7f 74 parpadea3.attach(&parpadear3, 0.25);
Uan 0:30eb5c705d7f 75 while(1){wait_ms(300);}
Uan 0:30eb5c705d7f 76 }
Uan 0:30eb5c705d7f 77
Uan 0:30eb5c705d7f 78
Uan 0:30eb5c705d7f 79
Uan 0:30eb5c705d7f 80 int main(void)
Uan 0:30eb5c705d7f 81 {
Uan 0:30eb5c705d7f 82
Uan 0:30eb5c705d7f 83 pc.baud(2000000);
Uan 0:30eb5c705d7f 84 parpadea1.attach(&parpadear1, 1.0);
Uan 0:30eb5c705d7f 85 thread2.start(parpadeo2);
Uan 0:30eb5c705d7f 86 thread3.start(parpadeo3);
Uan 0:30eb5c705d7f 87 thread4.start(leds);
Uan 0:30eb5c705d7f 88
Uan 0:30eb5c705d7f 89
Uan 0:30eb5c705d7f 90 while (1)
Uan 0:30eb5c705d7f 91 {
Uan 0:30eb5c705d7f 92 stdio_mutex.lock();
Uan 0:30eb5c705d7f 93 printf("%f , ", ain0.read()*3.3f);
Uan 0:30eb5c705d7f 94 stdio_mutex.unlock();
Uan 0:30eb5c705d7f 95 wait_us(500);
Uan 0:30eb5c705d7f 96 }
Uan 0:30eb5c705d7f 97 }
Uan 0:30eb5c705d7f 98
Uan 0:30eb5c705d7f 99
Uan 0:30eb5c705d7f 100
Uan 0:30eb5c705d7f 101