- u8 j=0;
- u8 sun2=0; // 数据包数
- u8 buf2[CAN_BUF_LENGTH]={0}; //记录can2接收到的原始数据
- u8 temp2[CAN_BUF_LENGTH]={0}; //记录can2重组后的有效数据
- u8 k=0;
- int count2=0; //有效数据个数
- void CAN2_RX0_IRQHandler(void)
- {
- CanRxMsg RxMessage;
- int i=0;
- CAN_ClearITPendingBit(CAN2,CAN_IT_FMP0);
- CAN_Receive(CAN2, 0, &RxMessage);
- if(RxMessage.Data[1]==0x01)
- {
- sun2= RxMessage.Data[2] ;
- }
- //接收can的原始数据
- for(i=0;i<8;i++)
- {
- buf2[j] =RxMessage.Data;
- // printf("rxbuf2[%d]:%0x\r\n",j, buf2[j]);
- j++;
- }
- //重新组包数据
- if(j>7)
- {
- memTomem(temp2+k,buf2+j,8);
- for(i=0;temp2[k]!=0&&i<8;i++)
- {
- printf("rxbuf3[%d]:%0x\r\n",k, temp2[k]); //开发板断电在上电,这里每次第一次打印temp2时都是空,就是什么都不输出,是什么原因呢? </font>
- k++;
- count2++;
- }
- }
- if(sun2==0)//是否接收完当前报文帧数
- {
- j=0;//将数组下标还原为0
- k=0;
- count2=0;
- }
- sun2--;
- }
[color=rgb(51, 102, 153) !important]复制代码
|
|
|
|