stm32can接收

2019-07-21 02:58发布

走过路过的朋友:FIFO有两个报文,怎么同时处理这两个数据,要根据两个报文数据内容进行下一步动作,调用两次CAN_Receive吗?还是一次就行?一次调用结构体是一样的不会混淆嘛?if (CAN1->RF0R&=0x10)
{
CAN_Receive(CAN1,CAN_FIFO0,&RxMessage);
if((RxMessage.ExtId==xxxxxx,RxMessage.Data[0]==0x20)&&(RxMessage.ExtId==xxxxxx,RxMessage.Data[0]==0x20))
{
  TxMessage.Data[0]=0x20;
  TransmitMailbox=CAN_Transmit(CAN1,&TxMessage);
}
}这样能行吗?请求指教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
Jayden
2019-07-21 15:40
正点原子 发表于 2019-4-10 01:40
FIFO是先入先出,你有多组数据,读多次就行了,没有什么毛病

写在一个条件语句中吗?
if (CAN1->RF0R&=0x10)
{
CAN_Receive(CAN1,CAN_FIFO0,&RxMessage);
CAN_Receive(CAN1,CAN_FIFO0,&RxMessage);
if((RxMessage.ExtId==xxxxxx,RxMessage.Data[0]==0x20)&&(RxMessage.ExtId==xxxxxx,RxMessage.Data[0]==0x20))
{
  TxMessage.Data[0]=0x20;
  TransmitMailbox=CAN_Transmit(CAN1,&TxMessage);
}

一周热门 更多>