各位大侠!小弟自己搭了一块LM3S9L97板子,现在调到CAN模块遇到了点不懂的问题请教一下,
TX
就是在初始化过后然后设置ID和数据什么的
g_sCANMsgObject1.ulMsgID = 0x1001; //CAN报文ID g_sCANMsgObject1.ulMsgIDMask = 0; //报文ID屏蔽码 g_sCANMsgObject1.ulFlags = MSG_OBJ_TX_INT_ENABLE; g_sCANMsgObject1.ulMsgLen = sizeof(g_ucMsg1); g_sCANMsgObject1.pucMsgData = g_ucMsg1; //预置要发生的数据 ,4byte
然后是不是执行下面这一句就会把数据发送出去啊!?
CANMessageSet(CAN0_BASE, 1, &g_sCANMsgObject1, MSG_OBJ_TYPE_TX);
还有就是这个中断服务函数里面的这一句话
ulStatus = CANIntStatus(CAN0_BASE, CAN_INT_STS_CAUSE);
ulStatus的值在什么情况下会是状态中断(CAN_INT_INTID_STATUS),在什么情况下又会是挂起中断(1.2.3....)?
我在用我的一块板子(没有连接接收端)调试TX程序时,终端始终进不到else if(ulStatus == 1)里面!
希望哪位大侠能说下CAN这一点的详细工作步骤!非常感谢
void CANIntHandler(void) { unsigned long ulStatus;
ulStatus = CANIntStatus(CAN0_BASE, CAN_INT_STS_CAUSE);
if(ulStatus == CAN_INT_INTID_STATUS) { ulStatus = CANStatusGet(CAN0_BASE, CAN_STS_CONTROL);
g_bErrFlag = 1; }
else if(ulStatus == 1) { CANIntClear(CAN0_BASE, 1);
g_ulMsg1Count++;
g_bErrFlag = 0; }
else { } }
另外小弟只有一块板子有没有办法测试我的CAN通讯啊?
|