|
本帖最后由 Mark 于 2020-12-26 11:00 编辑
- 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[i];
- // 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时都是空,就是什么都不输出,是什么原因呢?
- k++;
- count2++;
- }
-
- }
-
- if(sun2==0)//是否接收完当前报文帧数
- {
- j=0;//将数组下标还原为0
- k=0;
- count2=0;
- }
- sun2--;
- //问题在37行,请大佬们帮忙看下,是不是我哪里写的不对?
- }
复制代码
|
|