求一个Can接收指定ID数据的例程,万谢!!!

2019-08-20 15:52发布

第一次Can通讯,做的协议按232格式做的,发现接收8帧数据开始就出现了异常。结果看Can通讯,说是接收ID报文,我初始程序也改了,接收中断中也判断了Rxceive.ExtId==0x1234,后面接着处理canbuf中的数据。但是发现接收不到数据。折腾几天了,不知问题出哪儿了? 哪位有例程,求一个,万谢!!!stm32F1或stm32f4的都可以,起码能调通,顺利接收指定ID的数据。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
challenger
2019-08-20 23:57
本帖最后由 challenger 于 2017-4-29 10:54 编辑
正点原子 发表于 2017-4-28 18:13
帮顶

               
        #define EXID1  0x4321
        #define EXID2  0x1234
               
        #define EXID3  0x2345
        #define EXID4  0x3456
               
               
CAN_FilterInitStructure.CAN_FilterIdHigh= ((((u32)EXID1<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF0000)>>16;                //òaé&#184;&#209;&#161;μ&#196;ID&#184;&#223;&#206;&#187;
CAN_FilterInitStructure.CAN_FilterIdLow= (((u32)EXID1<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //òaé&#184;&#209;&#161;μ&#196;IDμí&#206;&#187;

  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=((((u32)EXID2<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF0000)>>16;                //òaé&#184;&#209;&#161;μ&#196;ID&#184;&#223;&#206;&#187;
CAN_FilterInitStructure.CAN_FilterMaskIdLow= (((u32)EXID2<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //òaé&#184;&#209;&#161;μ&#196;IDμí&#206;&#187;


CAN_FilterInitStructure.CAN_FilterIdHigh= ((((u32)EXID3<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF0000)>>16;                //òaé&#184;&#209;&#161;μ&#196;ID&#184;&#223;&#206;&#187;
CAN_FilterInitStructure.CAN_FilterIdLow= (((u32)EXID3<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //òaé&#184;&#209;&#161;μ&#196;IDμí&#206;&#187;

  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=((((u32)EXID4<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF0000)>>16;                //òaé&#184;&#209;&#161;μ&#196;ID&#184;&#223;&#206;&#187;
CAN_FilterInitStructure.CAN_FilterMaskIdLow= (((u32)EXID4<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF; //òaé&#184;&#209;&#161;μ&#196;IDμí&#206;&#187;



CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0 ;                                //é&#184;&#209;&#161;&#198;÷±&#187;1&#216;áaμ&#189;FIFO0
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;                        //ê1&#196;üé&#184;&#209;&#161;&#198;÷

CAN_FilterInit(&CAN_FilterInitStructure);

原子哥,这样设置怎么只能收到0x2345,0x3456后面两组,0x4321,0x1234前面两组怎么收不到呢?求教,还有哪个地方没设置对?难道最多只能指定两组ID吗?

一周热门 更多>