vasko ozo
/
TxRxService
20190816
main.cpp
- Committer:
- VASKO
- Date:
- 2019-08-08
- Revision:
- 23:39d96e160cf1
- Parent:
- 22:1010cb11fb14
- Child:
- 24:fba9a58e6fbd
File content as of revision 23:39d96e160cf1:
#include "PrjDefs.h" DigitalOut myled(LED1); Serial dpc(USBTX,USBRX); Ticker tickTx; MsgType _msg; bool tick = 0; uint32_t ctr = 0; // счетчик обменов uint32_t ctro = 0; uint32_t Ectr = 0; // счетчик ошибок void dpc_func(){ (void) dpc.getc(); StartTx(&_msg.cmd); } void tickIntrFunc(void){ tick = 1; }//tickIntrFunc int main() { _msg.cmd=0x41; _msg.pars.ui32[0]=0; TxRxServiceInit(); tickTx.attach(&tickIntrFunc, 1); dpc.baud(115200); dpc.attach(dpc_func); //Exige Monumentum //Я дебил,потому что хотел выполнить действия,которые //требуются постоянно,один раз и именно здесь. //Для дебилов: в mbed типы "int" и "unsigned int" имеют размер 4 байта !!! //https://os.mbed.com/forum/bugs-suggestions/topic/4264/ проблема выравнивания данных while(1) { if ( RxBuffFull == 1 ) { RxBuffFull = 0; if(GetCheckSum(&RxBuff.cmd) == RxBuff.cs){ myled = !myled; ctr = RxBuff.pars.ui32[0] + 1; if(tick){ tick = 0; dpc.printf("ctr = %d, diff = %d, Ectr = %d\n\r", ctr, ctr - ctro, Ectr); ctro = ctr; } }else Ectr++; _msg.pars.ui32[0] = ctr; StartTx(&_msg.cmd); } }//while(1) }//main