解决STM32单片机CAN通讯连续发送多包数据丢包问题

使用例程连续发送两三包数据时没有问题,发送多包数据时,发现丢包现象;

例程代码如下:

while((CAN_TransmitStatus(CAN1, mbox)==CAN_TxStatus_Failed)&&(m<0XFFF))m++;	//等待发送结束
if(m>=0XFFF)
{return 1;}
m = 0;

CAN_TxStatus_Failed :状态标志位,不足以判断发送完成,当发送多个数据包时,就会产生问题,修改代码如下:

while(1)
{
	if(CAN_TransmitStatus(CAN1, mbox)==CAN_TxStatus_Ok)
	{
		break;
	}
	else
	{
		m++;
		if(m>=0XFFF)
		{return 1;}
	}
}
m = 0;

改成 CAN_TxStatus_Ok 发送成功标志位后,可以连续发送多包数据

物联沃分享整理
物联沃-IOTWORD物联网 » 解决STM32单片机CAN通讯连续发送多包数据丢包问题

发表评论