/*************************虚拟示波器底层驱动*********************************/ # include "common.h" # include "MK60_uart.h" //# include "zjjm.h" # include "sbq.h" extern uint16 ADresult; float OutData[4] = { 0 }; /*配合串口示波器的校验协议*/ unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT) { unsigned short CRC_Temp; unsigned char i,j; CRC_Temp = 0xffff; for (i=0;i>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(UART3,databuf[i]); } void sbq(float a, float b, float c, float d) { OutData[0]=a; OutData[1]=b; OutData[2]=c; OutData[3]=d; OutPut_Data(); }