发送的是标准数据帧,但是为啥要配置这个ExtId ?
/* Transmit */
TxMessage.StdId = 0x321;
TxMessage.ExtId = 0x01;
TxMessage.RTR = CAN_RTR_DATA;
TxMessage.IDE = CAN_ID_STD;
TxMessage.DLC = 1;
还有就是在中断接受里需要初始化TxMessage.ExtId = 0x00;么?
在中断接受里面
void CAN1_RX0_IRQHandler(void)
{
CAN_ITConfig(CAN1, CAN_IT_FMP0, DISABLE); //这里为啥一开始需要关闭中断?
CAN_ClearFlag(CAN1,CAN_FLAG_FF0);
CanRxMsg RxMessage;
RxMessage.StdId=0x00; //这些初始化有必要么?
// RxMessage.ExtId=0x00; //这句话是要还是不要?我看到过有些程序是不要的。。。
RxMessage.IDE=0;
RxMessage.DLC=0;
// RxMessage.FMI=0; //FMI设定为消息将要通过的过滤器索引,这些消息存储于邮箱中 //这句话怎么理解?是不是只有死拓展祯的时候才配置???
RxMessage.Data[0]=0x00;
CAN_Receive(CAN1,CAN_FIFO0, &RxMessage);
if ((RxMessage.StdId == 0x321)&&(RxMessage.IDE == CAN_ID_STD)&&(RxMessage.DLC == 1)&&(RxMessage.Data[0] == 0x55))
{
printf("\n\rCAN1 Receive Data is:0x%02x",RxMessage.Data[0]);
printf("\n\rCAN1 Receive Msg Passed!\n\r");
}
else
{
printf("\n\rCAN1 Receive Msg Failed!\n\r");
}
CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
}
以上是我的多日总结的问题,希望论坛里的各位高手可以给学弟一个好的答复~~~
谢谢!!!!
|