Test1

Dependencies:   mbed

Revision:
0:5152e3f9df72
Child:
1:e5810b8734ec
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Aug 02 18:27:13 2019 +0000
@@ -0,0 +1,79 @@
+#include "mbed.h"
+
+#define ArrTxSize 16
+#define ArrRxSize 16
+
+#define LeadingEcho 1 //определить "1" для превращения программы 
+                              //в эхо  + вывод массива  
+#define RxInterruptEnable 1 //определить "0" для отслеживания приянятия символа поллингом
+
+//отправка массива по приему  символа
+Serial pc(USBTX,USBRX);
+//uint8_t a = pc.getc();
+DigitalOut myled(LED1);
+
+int nCharTx = 0;
+
+uint8_t ArrTx[ArrTxSize] = {0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4b,0x4c,0x4d,0x4e,0x20};
+uint8_t ArrRx[ArrRxSize];
+    
+void IntrTx() {
+    nCharTx++;
+    if (nCharTx < ArrTxSize ){
+    pc.putc(ArrTx[nCharTx]);
+    }
+    else{
+         pc.attach(NULL, Serial::TxIrq);
+        }
+    }
+
+void IntrRx() { 
+    
+#ifdef LeadingEcho
+#if LeadingEcho == 1  
+    uint8_t received_char;
+    received_char = pc.getc();
+    pc.putc(received_char);   //раскомментировать эту строку для превращения программы 
+                              //в эхо  + вывод массива  
+    nCharTx = -1;             //установить в -1 для превращения программы
+                              //в эхо  + вывод массива  
+#elif LeadingEcho == 0
+    (void) pc.getc();
+    nCharTx = 0;             //установить в -1 для превращения программы
+                              //в эхо  + вывод массива  
+    pc.putc(ArrTx[nCharTx]);//закомментировать эту строку для превращения программы  
+                              //в эхо  + вывод массива  (стилистически правльно)
+#endif                              
+#else
+  #error LeadingEcho not defined !!!!!!!
+#endif                             
+    pc.attach(&IntrTx, Serial::TxIrq);
+    }
+
+int main() {
+#ifdef RxInterruptEnable
+#if RxInterruptEnable == 1
+            pc.attach(&IntrRx, Serial::RxIrq);
+#endif                            
+#else
+  #error RxInterruptEnable not defined !!!!!!!
+#endif  
+            pc.attach(NULL, Serial::TxIrq);//я УПЁРТЫЙ дебил
+            
+            
+            //Я дебил,потому что хотел выполнить действия,которые требуются
+            //постоянно,один раз и именно здесь.
+            
+    while(1) {
+#ifdef RxInterruptEnable
+#if RxInterruptEnable == 0
+        (void) pc.getc();
+        nCharTx = 0;
+        pc.putc(ArrTx[nCharTx]);
+        pc.attach(&IntrTx, Serial::TxIrq); 
+#endif                            
+#else
+  #error RxInterruptEnable not defined !!!!!!!
+#endif     
+    }
+}