han back / Mbed OS CLEO_UART_BUZZER
Committer:
SMART_CLEO
Date:
Thu Sep 28 03:30:09 2017 +0000
Revision:
0:6fad8486013f
SMART_CLEO

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SMART_CLEO 0:6fad8486013f 1 #include "mbed.h"
SMART_CLEO 0:6fad8486013f 2
SMART_CLEO 0:6fad8486013f 3 struct UART_buf
SMART_CLEO 0:6fad8486013f 4 {
SMART_CLEO 0:6fad8486013f 5 uint8_t STA;
SMART_CLEO 0:6fad8486013f 6 uint8_t MODE;
SMART_CLEO 0:6fad8486013f 7 uint8_t CMD;
SMART_CLEO 0:6fad8486013f 8 uint8_t LEN;
SMART_CLEO 0:6fad8486013f 9 uint8_t DATA[32];
SMART_CLEO 0:6fad8486013f 10 uint8_t END;
SMART_CLEO 0:6fad8486013f 11 };
SMART_CLEO 0:6fad8486013f 12
SMART_CLEO 0:6fad8486013f 13 PinName pin_BUZZER = PD_2;
SMART_CLEO 0:6fad8486013f 14
SMART_CLEO 0:6fad8486013f 15 DigitalOut Buzzer(pin_BUZZER);
SMART_CLEO 0:6fad8486013f 16
SMART_CLEO 0:6fad8486013f 17 Serial SerialUART(PA_2, PA_3);
SMART_CLEO 0:6fad8486013f 18
SMART_CLEO 0:6fad8486013f 19 UART_buf RX_BUF;
SMART_CLEO 0:6fad8486013f 20
SMART_CLEO 0:6fad8486013f 21 void SerialUARTRX_ISR(void);
SMART_CLEO 0:6fad8486013f 22
SMART_CLEO 0:6fad8486013f 23 int main() {
SMART_CLEO 0:6fad8486013f 24
SMART_CLEO 0:6fad8486013f 25 SerialUART.baud(115200);
SMART_CLEO 0:6fad8486013f 26
SMART_CLEO 0:6fad8486013f 27 SerialUART.attach(&SerialUARTRX_ISR);
SMART_CLEO 0:6fad8486013f 28
SMART_CLEO 0:6fad8486013f 29 Buzzer = 0;
SMART_CLEO 0:6fad8486013f 30
SMART_CLEO 0:6fad8486013f 31 while(1)
SMART_CLEO 0:6fad8486013f 32 {
SMART_CLEO 0:6fad8486013f 33 }
SMART_CLEO 0:6fad8486013f 34 }
SMART_CLEO 0:6fad8486013f 35
SMART_CLEO 0:6fad8486013f 36 void SerialUARTRX_ISR(void)
SMART_CLEO 0:6fad8486013f 37 {
SMART_CLEO 0:6fad8486013f 38 static uint8_t RX_count = 0, RX_Len = 32, RX_Status = 0;
SMART_CLEO 0:6fad8486013f 39 uint8_t rx_da = SerialUART.getc();
SMART_CLEO 0:6fad8486013f 40 switch(RX_Status)
SMART_CLEO 0:6fad8486013f 41 {
SMART_CLEO 0:6fad8486013f 42 case 0:
SMART_CLEO 0:6fad8486013f 43 if(rx_da == 0x76)
SMART_CLEO 0:6fad8486013f 44 {
SMART_CLEO 0:6fad8486013f 45 RX_BUF.STA = rx_da;
SMART_CLEO 0:6fad8486013f 46 RX_Status++;
SMART_CLEO 0:6fad8486013f 47 }
SMART_CLEO 0:6fad8486013f 48 break;
SMART_CLEO 0:6fad8486013f 49 case 1:
SMART_CLEO 0:6fad8486013f 50 RX_BUF.MODE = rx_da;
SMART_CLEO 0:6fad8486013f 51 RX_Status++;
SMART_CLEO 0:6fad8486013f 52 break;
SMART_CLEO 0:6fad8486013f 53 case 2:
SMART_CLEO 0:6fad8486013f 54 RX_BUF.CMD = rx_da;
SMART_CLEO 0:6fad8486013f 55 RX_Status++;
SMART_CLEO 0:6fad8486013f 56 break;
SMART_CLEO 0:6fad8486013f 57 case 3:
SMART_CLEO 0:6fad8486013f 58 RX_BUF.LEN = rx_da;
SMART_CLEO 0:6fad8486013f 59 RX_Len = RX_BUF.LEN;
SMART_CLEO 0:6fad8486013f 60 RX_Status++;
SMART_CLEO 0:6fad8486013f 61 if(RX_Len == 0)
SMART_CLEO 0:6fad8486013f 62 RX_Status++;
SMART_CLEO 0:6fad8486013f 63 break;
SMART_CLEO 0:6fad8486013f 64 case 4:
SMART_CLEO 0:6fad8486013f 65 RX_BUF.DATA[RX_count] = rx_da;
SMART_CLEO 0:6fad8486013f 66 RX_count++;
SMART_CLEO 0:6fad8486013f 67 if(RX_count == RX_Len)
SMART_CLEO 0:6fad8486013f 68 {
SMART_CLEO 0:6fad8486013f 69 RX_Status++;
SMART_CLEO 0:6fad8486013f 70 RX_count = 0;
SMART_CLEO 0:6fad8486013f 71 RX_Len = 32;
SMART_CLEO 0:6fad8486013f 72 }
SMART_CLEO 0:6fad8486013f 73 break;
SMART_CLEO 0:6fad8486013f 74 case 5:
SMART_CLEO 0:6fad8486013f 75 if(rx_da == 0x3E)
SMART_CLEO 0:6fad8486013f 76 {
SMART_CLEO 0:6fad8486013f 77 RX_BUF.END = rx_da;
SMART_CLEO 0:6fad8486013f 78 RX_Status = 0;
SMART_CLEO 0:6fad8486013f 79 switch(RX_BUF.MODE)
SMART_CLEO 0:6fad8486013f 80 {
SMART_CLEO 0:6fad8486013f 81 case 0x01:
SMART_CLEO 0:6fad8486013f 82 if(RX_BUF.CMD == 0x16)
SMART_CLEO 0:6fad8486013f 83 {
SMART_CLEO 0:6fad8486013f 84 Buzzer = RX_BUF.DATA[0];
SMART_CLEO 0:6fad8486013f 85 }
SMART_CLEO 0:6fad8486013f 86 break;
SMART_CLEO 0:6fad8486013f 87 }
SMART_CLEO 0:6fad8486013f 88 }
SMART_CLEO 0:6fad8486013f 89 break;
SMART_CLEO 0:6fad8486013f 90 }
SMART_CLEO 0:6fad8486013f 91 }
SMART_CLEO 0:6fad8486013f 92