我现在用的是STM32F103单片机,使用两个单片机CAN模块相互连接通讯。采用的正常模式、标准标识符、FIFO0消息挂号中断使能。程序如下:
现在的问题是:目前程序发送和接收邮箱的标识符TxMessage.stdid和RxMessage.stdid为0x0001时,
能正常接收和发送数据;但只要把发送和接收邮箱的标识符TxMessage.stdid和RxMessage.stdid;由0x0001改为其他数,如0x0002就不能正常接收了,请高手指教。
[mw_shl_code=c,true]void CAN_send(void)
{
if(!KEY1())
{
CanTxMsg TxMessage;
TxMessage.StdId=0x0001; // ?è?¨±ê×?±ê??·??¨11???©
TxMessage.IDE=CAN_ID_STD; // ????±ê??·????é±ê×?±ê??·?
TxMessage.RTR=CAN_RTR_DATA; // ?????????????à??????????
//TxMessage.DLC=1; // ·?????????????8??
//TxMessage.Data[0]=0x32; // ??????????
TxMessage.DLC=2;
TxMessage.Data[0]=0xCA;
TxMessage.Data[1]=0xFE;
CAN_Transmit(CAN1,&TxMessage); //????·???????
LED1_ON; //°???S1?ó??LED??DS1?á??????
}
}
void USB_LP_CAN1_RX0_IRQHandler(void)
{
CanRxMsg RxMessage;
CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);
if((RxMessage.StdId==0x0001) && (RxMessage.IDE==CAN_ID_STD)
&& (RxMessage.DLC==2) &&((RxMessage.Data[0]<<8|RxMessage.Data[1])==0xCAFE))//(RxMessage.Data[0]==0x32))
{
test = 1; //????????
}
else
{
test =0; //?????§°?
}
CAN_ClearITPendingBit(CAN1,CAN_IT_FMP0);
}[/mw_shl_code]
|