然后是查询发送的方式
TestStatus CAN_Polling(void)
{
CanTxMsg TxMessage;
CanRxMsg RxMessage;
uint32_t i = 0;
uint8_t TransmitMailbox = 0;
/* transmit */
TxMessage.StdId=0x6f1;
TxMessage.RTR=CAN_RTR_DATA;
TxMessage.IDE=CAN_ID_STD;
TxMessage.DLC=4;
TxMessage.Data[0]=0x40;
TxMessage.Data[1]=0x02;
TxMessage.Data[2]=0x1a;
TxMessage.Data[3]=0x80;
TransmitMailbox=CAN_Transmit(CAN1, &TxMessage);
i = 0;
// while((CAN_TransmitStatus(CAN1, TransmitMailbox) != CANTXOK) && (i != 0xFF))
while((CAN_TransmitStatus(CAN1, TransmitMailbox) != CANTXOK) && (i <= 1000))
{
i++;
}
printf("1i is %d\r\n",i);
i = 0;
while((CAN_MessagePending(CAN1, CAN_FIFO0) < 1) && (i != 0xFF))
{
i++;
}
printf("2i is %d\r\n",i);
/* receive */
RxMessage.StdId=0x00;
RxMessage.IDE=CAN_ID_STD;
RxMessage.DLC=0;
RxMessage.Data[0]=0x00;
RxMessage.Data[1]=0x00;
CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);
// printf("RxMessage.StdId is 0x%x,RxMessage.DLC is 0x%x,RxMessage.Data[0] is 0x%x,RxMessage.Data[1] is 0x%x\r\n",
// RxMessage.StdId,RxMessage.DLC,RxMessage.Data[0],RxMessage.Data[1]);
if (RxMessage.StdId!=0x6f1)
{
return FAILED;
}
if (RxMessage.IDE!=CAN_ID_STD)
{
return FAILED;
}
if (RxMessage.DLC!=4)
{
return FAILED;
}
if ((RxMessage.Data[0]<<8|RxMessage.Data[1])!=0x4002)
{
return FAILED;
}
return PASSED; /* Test Passed */
}
|