vasko ozo
/
F031K6_TxRxService
Test1
Diff: main.cpp
- 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 + } +}