LM3S9L97 CAN模块

2019-03-24 12:52发布

各位大侠!小弟自己搭了一块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通讯啊? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
azhiking
2019-03-24 20:12
< g_sCANMsgObject1.ulMsgLen = sizeof(g_ucMsg1);
MsgLen指的是数据域的长度,最长8字节.而不是msg结构体的size
    g_sCANMsgObject1.pucMsgData = g_ucMsg1;  //预置要发生的数据 ,4byte
pucMsgData是指向Msg数据域的指针。

一周热门 更多>

相关问题

    相关文章