二.配置CAN总线上的信息
信息结构
#define <can.h>
typedef struct
{
// CAN报文标识符为11或29位标识符
unsigned long ulMsgID;
// 在使能标识符过滤器时所使用的报文标识符屏蔽。对应位为1时进行ID对应位的匹配检查(验收滤波),反之则不进行滤波。
unsigned long ulMsgIDMask;
// 此值保存多个状态标志和 tCANObjFlags 所指定的设置。
unsigned long ulFlags;
// 此值是报文对象中的数据字节数。
unsigned long ulMsgLen;
// 这是指向报文对象的数据的指针。
unsigned char *pucMsgData;
}
tCANMsgObject;
先配置发送或接收的类型,如配置按键:当按下按键是发送数据到CAN总线
/*-------------------BUTTON---------------------------------------*/
// 按键状态的更新,会触发传输
g_MsgObjectButton.ulMsgID = MSGOBJ_ID_BUTTON;
g_MsgObjectButton.ulMsgIDMask = 0;
// 传送中断的标志
g_MsgObjectButton.ulFlags = MSG_OBJ_TX_INT_ENABLE;
// 设置信息的长度,只能有两个byte ,而且一直在g_pucButtonMsg里面
g_MsgObjectButton.ulMsgLen = 2;
g_MsgObjectButton.pucMsgData = g_pucButtonMsg;
在而配置信息时,要注意
HOST主机的配置
#define MSGOBJ_ID_DATA_RX (MSGOBJ_ID_DATA_1)
#define MSGOBJ_ID_DATA_TX (MSGOBJ_ID_DATA_0)
g_MsgObjectTX.ulMsgID = MSGOBJ_ID_DATA_TX
SLAVER从机的配置
#define MSGOBJ_ID_DATA_RX (MSGOBJ_ID_DATA_0)
#define MSGOBJ_ID_DATA_TX (MSGOBJ_ID_DATA_1)
g_MsgObjectTX.ulMsgID = MSGOBJ_ID_DATA_RX
正好是相反的,一定不要搞错
|