PC - NUCLEO USB Polling Communication

Dependencies:   mbed

Fork of Nucleo-COMM-Protocol by Giuseppe Falagario

Committer:
pinofal
Date:
Mon May 07 07:08:30 2018 +0000
Revision:
3:788597ccf179
Amaldi 1 Exercise

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pinofal 3:788597ccf179 1 // Tested: NUCLEO-L476RG
pinofal 3:788597ccf179 2 // Tested: NUCLEO-F207ZG
pinofal 3:788597ccf179 3 #include "mbed.h"
pinofal 3:788597ccf179 4
pinofal 3:788597ccf179 5 // genera un oggetto serial collegato al PC
pinofal 3:788597ccf179 6 Serial pc(USBTX, USBRX);
pinofal 3:788597ccf179 7
pinofal 3:788597ccf179 8 // genera un oggetto DigitalOut collegato al Led
pinofal 3:788597ccf179 9 DigitalOut MyLed1(LED1); // verde
pinofal 3:788597ccf179 10 DigitalOut MyLed2(LED2); // blu
pinofal 3:788597ccf179 11 DigitalOut MyLed3(LED3); // rosso
pinofal 3:788597ccf179 12
pinofal 3:788597ccf179 13
pinofal 3:788597ccf179 14 // indice per i cicli
pinofal 3:788597ccf179 15 int nIndex;
pinofal 3:788597ccf179 16
pinofal 3:788597ccf179 17 // carattere ricevuto dal PC
pinofal 3:788597ccf179 18 char cReadChar;
pinofal 3:788597ccf179 19 // carattere inviato al PC
pinofal 3:788597ccf179 20 char cWriteChar;
pinofal 3:788597ccf179 21
pinofal 3:788597ccf179 22
pinofal 3:788597ccf179 23 /********/
pinofal 3:788597ccf179 24 /* MAIN */
pinofal 3:788597ccf179 25 /********/
pinofal 3:788597ccf179 26 int main()
pinofal 3:788597ccf179 27 {
pinofal 3:788597ccf179 28 // configura velocità della comunicazione seriale su USB-VirtualCom e invia messaggio di benvenuto
pinofal 3:788597ccf179 29 pc.baud(921600); //921600 bps
pinofal 3:788597ccf179 30
pinofal 3:788597ccf179 31 // inizializza variabili
pinofal 3:788597ccf179 32 cReadChar = '\0';
pinofal 3:788597ccf179 33 MyLed1=0; // spegni il Led1
pinofal 3:788597ccf179 34 MyLed2=0; // spegni il Led2
pinofal 3:788597ccf179 35 MyLed3=0; // spegni il Led3
pinofal 3:788597ccf179 36
pinofal 3:788597ccf179 37
pinofal 3:788597ccf179 38 pc.printf("\r\n> Hallo Amaldi Students - Start Exercise 1 \r\n");
pinofal 3:788597ccf179 39
pinofal 3:788597ccf179 40 /******* INIZIO ESEMPIO CON POLLING ***/
pinofal 3:788597ccf179 41 // ciclo infinito
pinofal 3:788597ccf179 42 while(true)
pinofal 3:788597ccf179 43 {
pinofal 3:788597ccf179 44 // spegne il Led per 0.5 sec
pinofal 3:788597ccf179 45 MyLed1 = 0;
pinofal 3:788597ccf179 46 MyLed2 = 0;
pinofal 3:788597ccf179 47 MyLed3 = 0;
pinofal 3:788597ccf179 48 wait_ms(500);
pinofal 3:788597ccf179 49
pinofal 3:788597ccf179 50 // verifica se è arrivato un carattere dal PC
pinofal 3:788597ccf179 51 if(pc.readable())
pinofal 3:788597ccf179 52 {
pinofal 3:788597ccf179 53 // cattura il carattere ricevuto
pinofal 3:788597ccf179 54 cReadChar = pc.getc();
pinofal 3:788597ccf179 55
pinofal 3:788597ccf179 56 //accendi il Led per 500ms
pinofal 3:788597ccf179 57 // Accende il Led solo se invio carattere corretto
pinofal 3:788597ccf179 58 if(cReadChar == 'p')
pinofal 3:788597ccf179 59 {
pinofal 3:788597ccf179 60 MyLed1 = 1;
pinofal 3:788597ccf179 61 MyLed2 = 1;
pinofal 3:788597ccf179 62 MyLed3 = 1;
pinofal 3:788597ccf179 63 wait_ms(500);
pinofal 3:788597ccf179 64 }
pinofal 3:788597ccf179 65
pinofal 3:788597ccf179 66 // restituisci messaggio al PC su carattere ricevuto
pinofal 3:788597ccf179 67 cWriteChar = cReadChar+1;
pinofal 3:788597ccf179 68 pc.printf("Rx Char= %c; Tx Char = %c\n\r", cReadChar, cWriteChar);
pinofal 3:788597ccf179 69 }
pinofal 3:788597ccf179 70 }
pinofal 3:788597ccf179 71
pinofal 3:788597ccf179 72 /******* FINE ESEMPIO CON POLLING ***** */
pinofal 3:788597ccf179 73
pinofal 3:788597ccf179 74 }