搞STM32 CAN 有一段时间了,因为收的数据比较多,所以用FIFO0和FIFO1来接收。其中FIFO1是用来接收指定的CAN ID的,需求是发一个请求,接收一个数据,再发下一个数据,连续收发5次,接收的数据的CAN ID是一样的。我的问题是 CAN_Receive里的释放收件箱FIFO1好像没起作用,所以我手动加了 CAN_FIFORelease,但是还是没起作用。所以导致我读到的数据有时候其实是上一次的值。
我的程序如下,欢迎各位大神助我一臂之力,在此谢过!
if( CAN_MessagePending(CAN1,CAN_FIFO1)!=0)
{
CAN_FIFORelease(CAN1, CAN_FIFO1);
CAN_Receive(CAN1, CAN_FIFO1, &RxMessage);//读取数据
}
if(RxMessage.DLC)
{
if(RxMessage.StdId==0x700)
{
for(i=0;i<RxMessage.DLC;i++)
{
sendBuffer[i+109]=RxMessage.Data;
}
break;
}
}
|