单帧接收正常,多帧情况下分帧接收时,只能重复收到第一帧,程序如下,数组时分配的是一个足够大的静态数组,不知道怎么回事?
//ID号表示:主机, 控制1,查询1 表示接收的是查询1的数据
if (RxMessage.StdId == (0x7ff & ((DEV_HOST << 8) | (ORD1 << 4) | (CHK1 << 0)))) {
//GPIO_SetBits(GPIOC, GPIO_Pin_7 | GPIO_Pin_4);
if (RxMessage.Data[0]==0x00 ){//单帧发送
for (i = 1; i < 8; i++) {
USART_PutCh(USART1,RxMessage.Data[i]);}}
if (RxMessage.Data[0]&0x41==0x41) {//多帧的第一帧
for (i = 0; i < 8; i++) {
CanReBuff[l++]=RxMessage.Data[i]; }
}
if (RxMessage.Data[0]&0x80==0x80 ) {//多帧的中间帧
for (i = 0; i < 8; i++) {
CanReBuff[l++]=RxMessage.Data[i]; }
}
if (RxMessage.Data[0]&0xC0==0xC0) //多帧的最后一帧,接收完成后向串口发送该多帧
{
for (i = 0; i < 8; i++) {
CanReBuff[l++]=RxMessage.Data[i];
}
USART_PutStr(USART1,CanReBuff);
}
CAN_ClearITPendingBit(CAN_IT_FMP0); //清除挂起中断 }
} |