[CAN-bus/DeviceNet] LPC2119 CAN发送中断疑问,用的是ZLG CAN Demo程序

[复制链接]
 楼主| 有意思 发表于 2007-8-14 17:18 | 显示全部楼层 |阅读模式
使用ZLG公司的Demo程序CAN驱动程序,调用CANSendData发送返回为0,说明发送成功,用示波器测了CANTXD一直是高电平,只有一个40us脉宽的低脉冲,<br />初始化设置<br />void&nbsp;caninit(eCANNUM&nbsp;CanNum,uint8&nbsp;Baud)<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;HwEnCAN(CanNum);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SoftRstCAN(CanNum);<br />&nbsp;&nbsp;&nbsp;&nbsp;CANEWL(CanNum).Bits.EWL_BIT&nbsp;=&nbsp;USE_EWL_CAN[CanNum];&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//初始化波特率<br />&nbsp;&nbsp;&nbsp;&nbsp;//CANBTR(CanNum).Word&nbsp;=&nbsp;USE_BTR_CAN[CanNum];&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(Baud)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANBTR(CanNum).Word&nbsp;=&nbsp;(uint32)BPS_12K;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;1:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANBTR(CanNum).Word&nbsp;=&nbsp;(uint32)BPS_20K;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;2:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANBTR(CanNum).Word&nbsp;=&nbsp;(uint32)BPS_20K;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;3:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANBTR(CanNum).Word&nbsp;=&nbsp;(uint32)BPS_50K;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANBTR(CanNum).Word&nbsp;=&nbsp;(uint32)BPS_12K;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//初始化中断为非向量中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VICDefVectAddr&nbsp;=(uint32)can_isr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VICIntEnable&nbsp;|=(1&lt&lt19)|(1&lt&lt(20+&nbsp;CanNum))|(1&lt&lt(26+CanNum));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//中断使能<br />&nbsp;&nbsp;&nbsp;&nbsp;CANIER(CanNum).Word=&nbsp;USE_INT_CAN[CanNum];&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//配置验收滤波器(旁路状态)<br />&nbsp;&nbsp;&nbsp;&nbsp;CANAFMR.Bits.AccBP_BIT&nbsp;=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;CANAFMR.Bits.eFCAN_BIT&nbsp;=&nbsp;0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//初始化模式<br />&nbsp;&nbsp;&nbsp;&nbsp;//CANMOD(CanNum).Bits.TPM_BIT&nbsp;=&nbsp;USE_TPM_CAN[CanNum];<br />&nbsp;&nbsp;&nbsp;&nbsp;//CANMOD(CanNum).Bits.&nbsp;LOM_BIT&nbsp;=&nbsp;USE_MOD_CAN[CanNum];<br />&nbsp;&nbsp;&nbsp;&nbsp;//CANCMR(CanNum).Bits.SRR_BIT&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;CANMOD(CanNum).Bits.TPM_BIT&nbsp;=&nbsp;USE_TPM_CAN1;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CANMOD(CanNum).Bits.&nbsp;LOM_BIT&nbsp;=&nbsp;USE_MODE_CAN1;<br />&nbsp;&nbsp;&nbsp;&nbsp;CANMOD(CanNum).Bits.STM_BIT&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;CANMOD(CanNum).Bits.RPM_BIT&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;//CANCMR(CanNum).Bits.SRR_BIT&nbsp;=&nbsp;1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//自测试模式<br />&nbsp;&nbsp;&nbsp;&nbsp;//CANMOD(CanNum).Bits.STM_BIT&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;//CANMOD(CanNum).Bits.TM_BIT&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//初始化接收环形缓冲区<br />&nbsp;&nbsp;&nbsp;&nbsp;CANRcvBufApp.FullFlag1&nbsp;=&nbsp;CANRcvBufApp.FullFlag2&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;CANRcvBufApp.ReadPoint1&nbsp;=&nbsp;CANRcvBufApp.ReadPoint2&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;CANRcvBufApp.WritePoint1&nbsp;=&nbsp;CANRcvBufApp.WritePoint2&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;//启动CAN<br />&nbsp;&nbsp;&nbsp;&nbsp;SoftEnCAN(CanNum);<br />}<br /><br />我的测试函数<br />void&nbsp;test(void)<br />{<br />&nbsp;&nbsp;&nbsp;uint8&nbsp;tmp[8]&nbsp;=&nbsp;{0};<br />&nbsp;&nbsp;&nbsp;uint8&nbsp;datanum&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;uint32&nbsp;id&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;uint8&nbsp;i&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;uint8&nbsp;tempid[4]&nbsp;=&nbsp;{0};<br />&nbsp;&nbsp;&nbsp;stcRxBUF&nbsp;cbuf;<br />&nbsp;&nbsp;&nbsp;if&nbsp;(ReadCANRcvCyBuf(CAN1,&cbuf)&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;datanum&nbsp;=&nbsp;cbuf.CANRcvFS.Bits.DLC_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt4;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;tempid&nbsp;&nbsp;=&nbsp;*((uint8&nbsp;*)&cbuf.RxCANID&nbsp;+&nbsp;3&nbsp;-&nbsp;i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send_buf(UART0,tempid,4);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(datanum&nbsp;&&nbsp;0x0F)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;1:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[0]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data1_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;2:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[0]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data1_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[1]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data2_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;3:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[0]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data1_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[1]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data2_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[2]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data3_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;4:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[0]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data1_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[1]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data2_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[2]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data3_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[3]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data4_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;5:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[0]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data1_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[1]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data2_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[2]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data3_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[3]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data4_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[4]&nbsp;=&nbsp;cbuf.CANRDB.Bits.Data1_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;6:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[0]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data1_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[1]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data2_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[2]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data3_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[3]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data4_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[4]&nbsp;=&nbsp;cbuf.CANRDB.Bits.Data1_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[5]&nbsp;=&nbsp;cbuf.CANRDB.Bits.Data2_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;7:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[0]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data1_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[1]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data2_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[2]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data3_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[3]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data4_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[4]&nbsp;=&nbsp;cbuf.CANRDB.Bits.Data1_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[5]&nbsp;=&nbsp;cbuf.CANRDB.Bits.Data2_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[6]&nbsp;=&nbsp;cbuf.CANRDB.Bits.Data3_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;8:<br />&nbsp;&nbsp;&nbsp;&nbsp;default:&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[0]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data1_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[1]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data2_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[2]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data3_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[3]&nbsp;=&nbsp;cbuf.CANRDA.Bits.Data4_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[4]&nbsp;=&nbsp;cbuf.CANRDB.Bits.Data1_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[5]&nbsp;=&nbsp;cbuf.CANRDB.Bits.Data2_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[6]&nbsp;=&nbsp;cbuf.CANRDB.Bits.Data3_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[7]&nbsp;=&nbsp;cbuf.CANRDB.Bits.Data4_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;send_buf(UART0,tmp,datanum);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />#if&nbsp;1<br />/*两块目标板,接收都调通,在测试发送时,其中一个在此处<br />&nbsp;&nbsp;用#if&nbsp;0屏蔽,只处理接收数据,另一个节点负责发送CAN数据*/<br />&nbsp;&nbsp;&nbsp;&nbsp;/*0成功,1失败*/<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(SendToCAN()&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char_SendBufByIrq(UART0,&quot;成功!
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char_SendBufByIrq(UART0,&quot;失败!
&quot;);<br />#endif&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(10000);<br />}<br /><br />/*向CAN发送数据*/<br />uint32&nbsp;SendToCAN(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;uint8&nbsp;SRCANBuf[16];<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;uint8&nbsp;CAN_NODE_ID&nbsp;=&nbsp;001;<br />&nbsp;&nbsp;&nbsp;&nbsp;uint32&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;stcTxBUF&nbsp;CTbuf;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//准备CAN帧数据<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[0]&nbsp;=&nbsp;CAN1;<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[1]&nbsp;=&nbsp;0x88;//帧信息:扩展帧&nbsp;数据帧&nbsp;DLC&nbsp;=8B<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[14]&nbsp;=&nbsp;0x02;<br />&nbsp;&nbsp;&nbsp;&nbsp;//计算标示符<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[2]&nbsp;=&nbsp;&nbsp;&nbsp;0x01&lt&lt4;&nbsp;&nbsp;//PRI&nbsp;&nbsp;28位置高<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[2]&nbsp;|=&nbsp;&nbsp;(uint8)((uint8)(CAN_NODE_ID&gt&gt6)&nbsp;&nbsp;&0x1);//24b<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[3]&nbsp;=&nbsp;&nbsp;&nbsp;(uint8)(CAN_NODE_ID&lt&lt2);//18~23b<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[4]&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[5]&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[6]&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[7]&nbsp;=&nbsp;2;<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[8]&nbsp;=&nbsp;3;<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[9]&nbsp;=&nbsp;4;<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[10]&nbsp;=&nbsp;5;<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[11]&nbsp;=&nbsp;6;<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[12]&nbsp;=&nbsp;7;<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[13]&nbsp;=&nbsp;8;<br />&nbsp;&nbsp;&nbsp;&nbsp;SRCANBuf[15]&nbsp;=&nbsp;10;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;CTbuf.TxFrameInfo.Bits.PRIO_BIT&nbsp;=SRCANBuf[0];//CAN通道号<br />&nbsp;&nbsp;&nbsp;&nbsp;CTbuf.TxFrameInfo.Bits.FF_BIT&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;//帧格式<br />&nbsp;&nbsp;&nbsp;&nbsp;CTbuf.TxFrameInfo.Bits.RTR_BIT&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;//帧类型<br />&nbsp;&nbsp;&nbsp;&nbsp;CTbuf.TxFrameInfo.Bits.DLC_BIT&nbsp;=&nbsp;SRCANBuf[1];&nbsp;//数据长度<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;&nbsp;i&lt4;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;*((uint8&nbsp;*)&CTbuf.TxCANID.Word&nbsp;+i)=SRCANBuf[5-i];<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;//memcpy((uint8&nbsp;*)&CTbuf.CANTDA&nbsp;,&SRCANBuf[6],4);<br />&nbsp;&nbsp;&nbsp;//memcpy((uint8&nbsp;*)&CTbuf.CANTDB&nbsp;,&SRCANBuf[10],4);<br />&nbsp;&nbsp;&nbsp;CTbuf.CANTDA.Bits.Data1_BIT&nbsp;=&nbsp;SRCANBuf[6];<br />&nbsp;&nbsp;&nbsp;CTbuf.CANTDA.Bits.Data2_BIT&nbsp;=&nbsp;SRCANBuf[7];<br />&nbsp;&nbsp;&nbsp;CTbuf.CANTDA.Bits.Data3_BIT&nbsp;=&nbsp;SRCANBuf[8];<br />&nbsp;&nbsp;&nbsp;CTbuf.CANTDA.Bits.Data4_BIT&nbsp;=&nbsp;SRCANBuf[9];<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;CTbuf.CANTDB.Bits.Data1_BIT&nbsp;=&nbsp;SRCANBuf[10];<br />&nbsp;&nbsp;&nbsp;CTbuf.CANTDB.Bits.Data2_BIT&nbsp;=&nbsp;SRCANBuf[11];<br />&nbsp;&nbsp;&nbsp;CTbuf.CANTDB.Bits.Data3_BIT&nbsp;=&nbsp;SRCANBuf[12];<br />&nbsp;&nbsp;&nbsp;CTbuf.CANTDB.Bits.Data4_BIT&nbsp;=&nbsp;SRCANBuf[13];<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;/*0成功,1失败*/<br />&nbsp;&nbsp;&nbsp;if&nbsp;(CANSendData(SRCANBuf[0],SRCANBuf[14],&CTbuf)==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br /><br />}<br /><br />/*ZLG提供的驱动函数*/<br />uint32&nbsp;CANSendData(eCANNUM&nbsp;CanNum,uint32&nbsp;Cmd,P_stcTxBUF&nbsp;Buf)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint32&nbsp;i,status=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(0&nbsp;!=&nbsp;CANSR(CanNum).Bits.TBS1_BIT)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;SEND_TX_BUF1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(0&nbsp;!=&nbsp;CANSR(CanNum).Bits.TBS2_BIT)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;SEND_TX_BUF2;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(0&nbsp;!=&nbsp;CANSR(CanNum).Bits.TBS3_BIT)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;SEND_TX_BUF3;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;0xFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*0成功,1失败*/<br />&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;=&nbsp;WriteCanTxBuf(CanNum,i,&nbsp;USE_TPM_CAN[CanNum],Buf);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(status&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;#if&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;if(CANMOD(CanNum).Bits.SM_BIT&nbsp;!=&nbsp;0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CanQuitSM(CanNum);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;#endif<br />&nbsp;&nbsp;&nbsp;&nbsp;CanSendCmd(CanNum,Cmd,i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(status);<br />}<br /><br />uint32&nbsp;WriteCanTxBuf(eCANNUM&nbsp;CanNum,uint32&nbsp;TxBufNum,uint32&nbsp;TPM,P_stcTxBUF&nbsp;Buf)<br />{<br />&nbsp;&nbsp;&nbsp;uint32&nbsp;status=0;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;switch&nbsp;(TxBufNum)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;SEND_TX_BUF1:<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((0&nbsp;==&nbsp;CANSR(CanNum).Bits.TS1_BIT)&nbsp;&&&nbsp;(0&nbsp;!=&nbsp;CANSR(CanNum).Bits.TBS1_BIT))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANTFI1(CanNum)=Buf-&gtTxFrameInfo;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANTID1(CanNum)=Buf-&gtTxCANID;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANTDA1(CanNum)=Buf-&gtCANTDA;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANTDB1(CanNum)=Buf-&gtCANTDB;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;=&nbsp;0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;SEND_TX_BUF2:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((0==&nbsp;CANSR(CanNum).Bits.TS2_BIT)&&(0&nbsp;!=CANSR(CanNum).Bits.TBS2_BIT))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANTFI2(CanNum)=Buf-&gtTxFrameInfo;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANTID2(CanNum)=Buf-&gtTxCANID;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANTDA3(CanNum)=Buf-&gtCANTDA;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANTDB2(CanNum)=Buf-&gtCANTDB;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;=&nbsp;0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;SEND_TX_BUF3:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((0==&nbsp;CANSR(CanNum).Bits.TS3_BIT)&&(0&nbsp;!=&nbsp;CANSR(CanNum).Bits.TBS3_BIT))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANTFI3(CanNum)=Buf-&gtTxFrameInfo;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANTID3(CanNum)=Buf-&gtTxCANID;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANTDA3(CanNum)=Buf-&gtCANTDA;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANTDB3(CanNum)=Buf-&gtCANTDB;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;=&nbsp;0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;=&nbsp;0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(TPM&nbsp;==&nbsp;1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CANMOD(CanNum).Bits.TPM_BIT&nbsp;=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return(status);<br />}<br />void&nbsp;__irq&nbsp;can_isr(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint32&nbsp;j&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;uCANICR&nbsp;k;<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;tmp=0;<br /><br />&nbsp;&nbsp;&nbsp;//ON_TCAN_LED();<br />&nbsp;&nbsp;&nbsp;if&nbsp;(CANLUTerr.Word&nbsp;!=&nbsp;0&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;//LUT&nbsp;Error&nbsp;Program<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//add&nbsp;or&nbsp;modify&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;=&nbsp;CANLUTerrAd.Word;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;for&nbsp;(j=0;&nbsp;j&ltCAN_MAX_NUM;&nbsp;j++)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;=&nbsp;CANICR(j);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(k.Bits.RI_BIT&nbsp;!=&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//add&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;RCAN_LEDGlint();<br />&nbsp;&nbsp;&nbsp;&nbsp;WriteCANRcvCyBuf(j);&nbsp;&nbsp;&nbsp;&nbsp;//CAN接收中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(k.Bits.TI1_BIT&nbsp;!=&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//add&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;//COMM_LEDGlint();<br />&nbsp;&nbsp;&nbsp;&nbsp;//CANCMR(j).Bits.TR_BIT&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(k.Bits.TI2_BIT&nbsp;!=&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//add&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(k.Bits.TI3_BIT&nbsp;!=&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;//add&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(k.Bits.BEI_BIT&nbsp;!=&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//uint32&nbsp;i&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//add&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//erro&nbsp;=&nbsp;k.Bits.ERRBIT_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;=&nbsp;k.Bits.ERRC_BIT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COMM_LEDGlint();/*led闪烁,取反,该灯一直闪烁不停*/<br />&nbsp;&nbsp;&nbsp;&nbsp;/*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(tmp)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;2:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCAN_LEDGlint();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COMM_LEDGlint();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;CanBufOffLinePrg(j);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(k.Bits.ALI_BIT&nbsp;!=&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//add&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ON_TCAN_LED();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(k.Bits.EPI_BIT&nbsp;!=&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//add&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ON_TCAN_LED();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(k.Bits.WUI_BIT&nbsp;!=&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//add&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(k.Bits.DOI_BIT&nbsp;!=&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//add&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClrCanDataOver(j);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;//ON_TCAN_LED();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />不知道问题出在哪,收,发节点一直进总线错误中断,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

331

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部