Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:6fad8486013f, 2017-09-28 (annotated)
- Committer:
- SMART_CLEO
- Date:
- Thu Sep 28 03:30:09 2017 +0000
- Revision:
- 0:6fad8486013f
SMART_CLEO
Who changed what in which revision?
| User | Revision | Line number | New 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 |