Test1

Dependencies:   mbed

main.cpp

Committer:
VASKO
Date:
2019-08-03
Revision:
3:7cdb20aac969
Parent:
2:56a194afd255
Child:
4:d461cadeb702

File content as of revision 3:7cdb20aac969:

#include "mbed.h"

#define ArrTxSize 16
#define ArrRxSize 16

Serial pc(USBTX,USBRX);

DigitalOut myled(LED1);

int nCharTx = 0;
int nCharRx = 0;

uint8_t ArrTx[ArrTxSize] = {0x20,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4b,0x4c,0x4d,0x4e,0x4f};
uint8_t ArrRx[ArrRxSize] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    
void IntrTx() {
    nCharTx++;
    if (nCharTx < ArrTxSize ){
    pc.putc(ArrTx[nCharTx]);
    }
    else{
        pc.attach(NULL, Serial::TxIrq);
        myled=0;  
        }
    }

void CopyUint8(uint8_t *src = &ArrRx[0], uint8_t *dst = &ArrTx[0], int qty = ArrTxSize){
    for ( ; qty > 0; src++,dst++,qty-- ) *dst = *src;
    }

void IntrRx() {
    ArrRx[nCharRx++] = pc.getc();
    if (nCharRx >= ArrRxSize ) {
        CopyUint8();
        nCharTx = 0;
        pc.putc(ArrTx[nCharTx]);                          
        pc.attach(&IntrTx, Serial::TxIrq);
        nCharRx = 0;
        myled=1;  
        }

    }
    

int main() {
            pc.attach(&IntrRx, Serial::RxIrq);
            pc.attach(NULL, Serial::TxIrq);//я УПЁРТЫЙ дебил
            
            //Exige Monumentum
            //Я дебил,потому что хотел выполнить действия,которые 
            //требуются постоянно,один раз и именно здесь.
            
    while(1) {
    }
}