对,要加一个中断电阻。现在发现程序还有问题,屏蔽寄存器开的时候就不能接受,关掉的话就可以接收了,id的话也对过了,没有问题,这是怎么回事呢?
这是初始化程序: void mscan08_init(void){ CMCR0=0x01; CMCR1=0x00; CBTR0=0x80; //Prescale value is 1 corresponding to BRP value-0 CBTR1=0X23; //Tq num. is 1+3+4=8 // clock is CMGXCLK/2=4MHz //baudrate = 4MHz/(Pre value(1)*Tq num(8))=500k CIDAC_IDAM=0; //single 32-bit acceptance filter CIDAR0=0x41;CIDAR1=0x9c;CIDAR2=0x98;CIDAR3=0x8e; //CIDMR0=0xff;CIDMR1=0xff;CIDMR2=0xff;CIDMR3=0xff; //Ignore ID CIDMR0=0x00;CIDMR1=0x00;CIDMR2=0x00;CIDMR3=0x00; //Match ID CMCR0=0x00; CRIER=0x01; }
下面是接收中断程序: void interrupt canrece_int(void){
id_send[0][0]=0xff; //只用DSR中的2,7位,其他是校验,自己定义的 id_send[0][1]=REC_DSR2; id_send[0][2]=REC_DSR7; id_send[0][3]=id_send[0][1]+id_send[0][2];
sci_flag=1; //触发串口程序 CRFLG_RXF=1;
}
[此贴子已经被作者于2006-8-19 21:30:27编辑过] |