Cc我用9S12DT128用CAN4发给CAN0,到老接收不到。自检模式又可以。(自发自收)。那位高人指点一下。程序如下:
///////////////////////////////////////////CAN初始化
void CAN_init(){
CAN0CTL0_INITRQ=1;
CAN4CTL0_INITRQ=1;
while((CAN0CTL1_INITAK==0)&&(CAN4CTL1_INITAK==0)) ;
CAN0IDAC=0X20;
CAN4IDAC=0X20;
CAN0IDMR0=0XFF;
CAN0IDMR1=0XFF;
CAN0IDMR2=0XFF;
CAN0IDMR3=0XFF;
CAN0IDMR4=0XFF;
CAN0IDMR5=0XFF;
CAN0IDMR6=0XFF;
CAN0IDMR7=0XFF;
CAN4IDMR0=0XFF;
CAN4IDMR1=0XFF;
CAN4IDMR2=0XFF;
CAN4IDMR3=0XFF;
CAN4IDMR4=0XFF;
CAN4IDMR5=0XFF;
CAN4IDMR6=0XFF;
CAN4IDMR7=0XFF;
CAN0BTR0=0X40;
CAN4BTR0=0X40;
CAN0BTR1=0X3F;
CAN4BTR1=0X3F;
CAN0CTL1=0X80;
CAN4CTL1=0X80;
CAN0CTL0_INITRQ=0;
CAN4CTL0_INITRQ=0;
while((CAN0CTL1_INITAK==1)&&(CAN4CTL1_INITAK==1));
CAN0RIER_RXFIE=1;
}
///////////////////////////发送
void CAN4_TX(){
uchar i;
i=CAN4TFLG;
CAN4TBSEL=i;
i=CAN4TBSEL;
CAN4TXIDR1=0X01;
CAN4TXIDR2=0X00;
CAN4TXDSR0=1;
CAN4TXDSR1=2;
CAN4TXDSR2=3;
CAN4TXDSR3=4;
CAN4TXDSR4=5;
CAN4TXDSR5=6;
CAN4TXDSR6=7;
CAN4TXDSR7=8;
CAN4TXDLR=8;
CAN4TFLG=i;
}
////////////////////////////中断接收
void interrupt 38 CAN0_RX(void){
CAN0CTL0_RXFRM=1;
rx[0]=CAN0RXDSR0;
rx[1]=CAN0RXDSR1;
rx[2]=CAN0RXDSR2;
rx[3]=CAN0RXDSR3;
rx[4]=CAN0RXDSR4;
rx[5]=CAN0RXDSR5;
rx[6]=CAN0RXDSR6;
rx[7]=CAN0RXDSR7;
CAN0RFLG=0X01;
}
void main(void) {
CAN_init();
CAN4_TX();
for(;;) {}}