vasko ozo
/
F031K6_TxRxService
Test1
main.cpp
- Committer:
- VASKO
- Date:
- 2019-08-03
- Revision:
- 10:f7a320faef76
- Parent:
- 9:dcddb19ad551
- Child:
- 11:6519744c77f9
File content as of revision 10:f7a320faef76:
#include "PrjDefs.h" Serial pc(USBTX,USBRX); DigitalOut myled(LED1); uint8_t ArrTx[ArrTxSize] = ArrTxInitializer; uint8_t ArrRx[ArrRxSize] = ArrRxInitializer; uint8_t RxBuff[ArrRxSize]; uint8_t TxBuff[ArrTxSize]; uint8_t *pArrTx = &ArrTx[0]; uint8_t *pArrRx = &ArrRx[0]; bool ArrRxCmplt = 0; bool ArrTxBusy = 0; bool TxBuffFull = 0; void IntrTx() { if ( ++pArrTx <= &ArrTx[ArrTxSize-1] ) pc.putc(*pArrTx); else { pc.attach(NULL, Serial::TxIrq); ArrTxBusy = 0; } } void StartTx(){ memcpy(&ArrTx, &TxBuff, ArrTxSize); pArrTx = &ArrTx[0]; pc.putc(*pArrTx); pc.attach(&IntrTx, Serial::TxIrq); ArrTxBusy = 1; }//StartTx void IntrRx() { *pArrRx = pc.getc(); if ( pArrRx++ >= &ArrRx[ArrRxSize-1] ) { pArrRx = &ArrRx[0]; ArrRxCmplt = 1; memcpy(&RxBuff, &ArrRx, ArrTxSize); } }//IntrRx int main() { pc.attach(&IntrRx, Serial::RxIrq); pc.attach(NULL, Serial::TxIrq);//я УПЁРТЫЙ дебил //Exige Monumentum //Я дебил,потому что хотел выполнить действия,которые //требуются постоянно,один раз и именно здесь. while(1) { if ( ArrRxCmplt == 1 ){ memcpy(&TxBuff, &RxBuff, ArrTxSize); TxBuffFull = 1; ArrRxCmplt = 0; } if( !ArrTxBusy && TxBuffFull ) { StartTx(); TxBuffFull = 0; } // }//while(1) }//main