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条回答
otto1230
1楼-- · 2019-07-21 03:32
你接收两次然后做个比较不就行了,接收第一帧→保存在数组1→接收第二帧→保存在数组2→比较数组1和数组2
正点原子
2楼-- · 2019-07-21 07:34
多个报文就读多次
Jayden
3楼-- · 2019-07-21 10:02
 精彩回答 2  元偷偷看……
正点原子
4楼-- · 2019-07-21 10:52
 精彩回答 2  元偷偷看……
Jayden
5楼-- · 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);
}
正点原子
6楼-- · 2019-07-21 18:54
Jayden 发表于 2019-4-10 19:29
写在一个条件语句中吗?
if (CAN1->RF0R&=0x10)
{

不,你查询有就读一次,如果fifo有,会一直提示你的。不是直接receive 两次,得按规矩来

一周热门 更多>