回复【2楼】正点原子:
---------------------------------
谢谢原子哥。我进一步算是搞懂了这个表示符的设置。但是
这个标示符和滤波器一起设置还是出现了问题。还得麻烦您给解答一下。哈哈。
我现在
TxMessage.StdId=0x00; // 标准标识符为0
TxMessage.ExtId=0x1234; // 设置扩展标示符(29位)
TxMessage.IDE=1; // 使用标准标识符:0,标准;1,扩展
TxMessage.RTR=0; // 消息类型为数据帧:一帧8位
然后我在滤波过滤标示符的时候这样设置
CAN_FilterInitStructure.CAN_FilterNumber=0; //过滤器0
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; //32位
CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;////32位ID
CAN_FilterInitStructure.CAN_FilterIdLow=0x91a4;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xffff;//32位MASK
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xffff;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//过滤器0关联到FIFO0
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; //激活过滤器0
不知道按我的理解方式对不对??把CAN_FilterInitStructure.CAN_FilterIdLow=0x91a4;
0x91a4这样计算对么?我不是很确定,但是现在一直接受不到报文。而当我改为
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0xffff;//32位MASK
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0xfff0;
的时候,能接受到报文,但是读取的报文位乱码。这是什么情况?
万分感谢原子哥作答啊。
|