1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
float OutData[4] = { 0 };
unsigned short (unsigned char *Buf, unsigned char CRC_CNT) { unsigned short CRC_Temp; unsigned char i,j; CRC_Temp = 0xffff;
for (i=0;i<CRC_CNT; i++){ CRC_Temp ^= Buf[i]; for (j=0;j<8;j++) { if (CRC_Temp & 0x01) CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001; else CRC_Temp = CRC_Temp >> 1; } } return(CRC_Temp); }
void OutPut_Data(void) { int temp[4] = {0}; unsigned int temp1[4] = {0}; unsigned char databuf[10] = {0}; unsigned char i; unsigned short CRC16 = 0; for(i=0;i<4;i++) { temp[i] = (int)OutData[i]; temp1[i] = (unsigned int)temp[i]; } for(i=0;i<4;i++) { databuf[i*2] = (unsigned char)(temp1[i]%256); databuf[i*2+1] = (unsigned char)(temp1[i]/256); } CRC16 = CRC_CHECK(databuf,8);
databuf[8] = CRC16%256; databuf[9] = CRC16/256; for(i=0;i<10;i++) uart_putchar(UART4,databuf[i]); } void data_send(int32 data1,int32 data2,int32 data3,int32 data4 ) { OutData[0]=data1; OutData[1]=data2; OutData[2]=data3; OutData[3]=data4; OutPut_Data(); }
|
近期评论