智能车制作

标题: visual scope [打印本页]

作者: 看见    时间: 2018-1-31 18:29
标题: visual scope
visual scope 怎样用,哪位知道,谢谢

作者: 920082177    时间: 2018-1-31 22:15
如果选择CRC16模式的话,一共用到两个函数,一个是CRC_CHECK,一个是OutPut_Data,在OutPut_Data里调用CRC_CHECK并把想要发的数据用串口发送就好了,下面是这两个函数:
/************************CRC检验函数************************************/
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<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);
}
/****************************输出符合协议的数据*************************/
//参数*OutData为需要显示的数字,长度为4
void OutPut_Data(int* OutData)
{
  int temp[4] = {0};
  unsigned int templ[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);
          templ[i] = (unsigned int)temp[i];
  }
  for(i = 0; i < 4; i++)
  {
          databuf[i*2]  = (unsigned char)(templ[i]%256);
          databuf[i*2+1]= (unsigned char)(templ[i]/256);
  }

  CRC16 = CRC_CHECK(databuf,8);
  databuf[8] = CRC16%256;
  databuf[9] = CRC16/256;
  for(i = 0; i < 10; i++)
  {
   //uart_putchar(UARTn,(char)databuf[i]);
    Uart_SendChar(UARTR2,databuf[i]);
  }
}
作者: 看见    时间: 2018-2-1 11:13
谢谢,能告诉怎样添加到IAR工程中吗

作者: 920082177    时间: 2018-2-1 14:11
看见 发表于 2018-2-1 11:13
谢谢,能告诉怎样添加到IAR工程中吗

新建一个.c文件,把函数加到里面,然后在想调用的地方调用的可以了

作者: 看见    时间: 2018-2-1 14:44
哦,谢谢




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2