请问各位大侠,我在stm32 CAN过滤器组编号为什么只能到4,大于5就不管用了,为什么?

2019-07-20 12:08发布

请问各位大侠,我在stm32 CAN过滤器组编号为什么只能到4,大于5就不管用了,为什么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-20 15:29
 精彩回答 2  元偷偷看……
STM32新学习者
2楼-- · 2019-07-20 15:29
 精彩回答 2  元偷偷看……
jchj
3楼-- · 2019-07-20 16:39
STM32新学习者 发表于 2017-7-8 11:48
代码发出来看看呀!!!!

          GPIO_InitTypeDef GPIO_InitStructure;
          CAN_InitTypeDef        CAN_InitStructure;
          CAN_FilterInitTypeDef  CAN_FilterInitStructure1,CAN_FilterInitStructure2,CAN_FilterInitStructure3,CAN_FilterInitStructure4;
    CAN_FilterInitTypeDef  CAN_FilterInitStructure5,CAN_FilterInitStructure6;        
          NVIC_InitTypeDef  NVIC_InitStructure;
          unsigned short mask;
          unsigned short filter_data1[] = {0x500, 0x501, 0x502, 0x503, 0x504, 0x505, 0x506, 0x507, 0x508, 0x509, 0x50A, 0x50B, 0x50C, 0x50D, 0x50E, 0x50F};
          unsigned short filter_data2[] = {0x510, 0x511, 0x512, 0x513, 0x514, 0x515, 0x516, 0x517, 0x518, 0x519, 0x51A, 0x51B, 0x51C, 0x51D, 0x51E, 0x51F};
          unsigned short filter_data3[] = {0x520, 0x521, 0x522, 0x523, 0x524, 0x525, 0x526, 0x527, 0x528, 0x529, 0x52A, 0x52B, 0x52C, 0x52D, 0x52E, 0x52F};
          unsigned short filter_data4[] = {0x530, 0x531, 0x532, 0x533, 0x534, 0x535, 0x536, 0x537, 0x538, 0x539, 0x53A, 0x53B, 0x53C, 0x53D, 0x53E, 0x53F};
    unsigned short filter_data5[] = {0x4E0,0x4E3,0x5E8,0x540};
    //ê1ÄüÏà1Øê±Öó
          RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//ê1ÄüPORTAê±Öó                                                                                                                    
          RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);//ê1ÄüCAN1ê±Öó       
       
    //3õê¼»ˉGPIO
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11| GPIO_Pin_12;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//¸′óÃ1|Äü
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
    GPIO_Init(GPIOA, &GPIO_InitStructure);//3õê¼»ˉPA11,PA12
       
          //òy½Å¸′óÃó3éäÅäÖÃ
          GPIO_PinAFConfig(GPIOA,GPIO_PinSource11,GPIO_AF_CAN1); //GPIOA11¸′óÃÎaCAN1
          GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_CAN1); //GPIOA12¸′óÃÎaCAN1
          
          //CANμ¥ÔaéèÖÃ
           CAN_InitStructure.CAN_TTCM=DISABLE;        //·Çê±¼ä′¥·¢í¨DÅģ꽠  
          CAN_InitStructure.CAN_ABOM=DISABLE;        //èí¼t×Ô¶ˉàëÏß1üàí          
          CAN_InitStructure.CAN_AWUM=DISABLE;//ËˉÃßÄ£ê½í¨1yèí¼t»½DÑ(Çå3yCAN->MCRμÄSLEEPλ)
          CAN_InitStructure.CAN_NART=ENABLE;        //½ûÖ1±¨ÎÄ×Ô¶ˉ′«Ëí
          CAN_InitStructure.CAN_RFLM=DISABLE;        //±¨ÎÄ2»Ëø¶¨,DÂμĸ2¸Ç¾éμÄ  
          CAN_InitStructure.CAN_TXFP=DISABLE;        //óÅÏ輶ó鱨Îıê궷û¾ö¶¨
          CAN_InitStructure.CAN_Mode= CAN_Mode_Normal;         //Ä£ê½éèÖÃ
          CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;        //ÖØDÂí¬2½ìøÔ¾¿í¶è(Tsjw)Îatsjw+1¸öê±¼äμ¥λ CAN_SJW_1tq~CAN_SJW_4tq
          CAN_InitStructure.CAN_BS1=CAN_BS1_7tq; //Tbs1·¶Î§CAN_BS1_1tq ~CAN_BS1_16tq
          CAN_InitStructure.CAN_BS2=CAN_BS2_6tq;//Tbs2·¶Î§CAN_BS2_1tq ~        CAN_BS2_8tq
          CAN_InitStructure.CAN_Prescaler=6;  //·ÖÆμÏμêy(Fdiv)Îabrp+1       
          CAN_Init(CAN1, &CAN_InitStructure);   // 3õê¼»ˉCAN1
   
                //ÅäÖÃ1yÂËÆ÷
          CAN_FilterInitStructure1.CAN_FilterNumber=0;          //1yÂËÆ÷0
          CAN_FilterInitStructure1.CAN_FilterMode=CAN_FilterMode_IdMask;
          CAN_FilterInitStructure1.CAN_FilterScale=CAN_FilterScale_32bit; //32λ
          CAN_FilterInitStructure1.CAN_FilterIdHigh=filter_data1[0] << 5;////32&#206;&#187;ID
          CAN_FilterInitStructure1.CAN_FilterIdLow=0x0000;
       
           mask =0xff0;                      //
               
          CAN_FilterInitStructure1.CAN_FilterMaskIdHigh= (mask << 5);//32&#206;&#187;MASK
          CAN_FilterInitStructure1.CAN_FilterMaskIdLow=0x0000 | 0x02;
               
           CAN_FilterInitStructure1.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//1y&#194;&#203;&#198;÷01&#216;áaμ&#189;FIFO0
          CAN_FilterInitStructure1.CAN_FilterActivation=ENABLE; //&#188;¤&#187;&#238;1y&#194;&#203;&#198;÷0
          CAN_FilterInit(&CAN_FilterInitStructure1);//&#194;&#203;2¨&#198;÷3&#245;ê&#188;&#187;ˉ
               
                        //&#197;&#228;&#214;&#195;1y&#194;&#203;&#198;÷
          CAN_FilterInitStructure2.CAN_FilterNumber=1;          //1y&#194;&#203;&#198;÷1
          CAN_FilterInitStructure2.CAN_FilterMode=CAN_FilterMode_IdMask;
          CAN_FilterInitStructure2.CAN_FilterScale=CAN_FilterScale_32bit; //32&#206;&#187;
          CAN_FilterInitStructure2.CAN_FilterIdHigh=filter_data2[0] << 5;////32&#206;&#187;ID
          CAN_FilterInitStructure2.CAN_FilterIdLow=0x0000;
       
           mask =0xff0;                      //
               
          CAN_FilterInitStructure2.CAN_FilterMaskIdHigh= (mask << 5);//32&#206;&#187;MASK
          CAN_FilterInitStructure2.CAN_FilterMaskIdLow=0x0000 | 0x02;
               
           CAN_FilterInitStructure2.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//1y&#194;&#203;&#198;÷01&#216;áaμ&#189;FIFO0
          CAN_FilterInitStructure2.CAN_FilterActivation=ENABLE; //&#188;¤&#187;&#238;1y&#194;&#203;&#198;÷0
          CAN_FilterInit(&CAN_FilterInitStructure2);//&#194;&#203;2¨&#198;÷3&#245;ê&#188;&#187;ˉ
               
                        //&#197;&#228;&#214;&#195;1y&#194;&#203;&#198;÷
          CAN_FilterInitStructure3.CAN_FilterNumber=2;          //1y&#194;&#203;&#198;÷2
          CAN_FilterInitStructure3.CAN_FilterMode=CAN_FilterMode_IdMask;
          CAN_FilterInitStructure3.CAN_FilterScale=CAN_FilterScale_32bit; //32&#206;&#187;
          CAN_FilterInitStructure3.CAN_FilterIdHigh=filter_data3[0] << 5;////32&#206;&#187;ID
          CAN_FilterInitStructure3.CAN_FilterIdLow=0x0000;
       
           mask =0xff0;                      //
               
          CAN_FilterInitStructure3.CAN_FilterMaskIdHigh= (mask << 5);//32&#206;&#187;MASK
          CAN_FilterInitStructure3.CAN_FilterMaskIdLow=0x0000 | 0x02;
               
           CAN_FilterInitStructure3.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//1y&#194;&#203;&#198;÷01&#216;áaμ&#189;FIFO0
          CAN_FilterInitStructure3.CAN_FilterActivation=ENABLE; //&#188;¤&#187;&#238;1y&#194;&#203;&#198;÷0
          CAN_FilterInit(&CAN_FilterInitStructure3);//&#194;&#203;2¨&#198;÷3&#245;ê&#188;&#187;ˉ
               
                                        //&#197;&#228;&#214;&#195;1y&#194;&#203;&#198;÷
          CAN_FilterInitStructure4.CAN_FilterNumber=3;          //1y&#194;&#203;&#198;÷3
          CAN_FilterInitStructure4.CAN_FilterMode=CAN_FilterMode_IdMask;
          CAN_FilterInitStructure4.CAN_FilterScale=CAN_FilterScale_32bit; //32&#206;&#187;
          CAN_FilterInitStructure4.CAN_FilterIdHigh=filter_data4[0] << 5;////32&#206;&#187;ID
          CAN_FilterInitStructure4.CAN_FilterIdLow=0x0000;
       
           mask =0xff0;                      //
               
          CAN_FilterInitStructure4.CAN_FilterMaskIdHigh= (mask << 5);//32&#206;&#187;MASK
          CAN_FilterInitStructure4.CAN_FilterMaskIdLow=0x0000 | 0x02;
               
           CAN_FilterInitStructure4.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//1y&#194;&#203;&#198;÷01&#216;áaμ&#189;FIFO0
          CAN_FilterInitStructure4.CAN_FilterActivation=ENABLE; //&#188;¤&#187;&#238;1y&#194;&#203;&#198;÷0
          CAN_FilterInit(&CAN_FilterInitStructure4);//&#194;&#203;2¨&#198;÷3&#245;ê&#188;&#187;ˉ
//               
                                                        //&#197;&#228;&#214;&#195;1y&#194;&#203;&#198;÷
          CAN_FilterInitStructure5.CAN_FilterNumber=4;          //1y&#194;&#203;&#198;÷4
          CAN_FilterInitStructure5.CAN_FilterMode=CAN_FilterMode_IdList;
          CAN_FilterInitStructure5.CAN_FilterScale=CAN_FilterScale_16bit; //32&#206;&#187;
          CAN_FilterInitStructure5.CAN_FilterIdHigh=filter_data5[0] << 5;////32&#206;&#187;ID
          CAN_FilterInitStructure5.CAN_FilterIdLow=filter_data5[1] << 5;
               
          CAN_FilterInitStructure5.CAN_FilterMaskIdHigh= (filter_data5[2] << 5);//32&#206;&#187;MASK
          CAN_FilterInitStructure5.CAN_FilterMaskIdLow=filter_data5[3] << 5;
               
           CAN_FilterInitStructure5.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//1y&#194;&#203;&#198;÷01&#216;áaμ&#189;FIFO0
          CAN_FilterInitStructure5.CAN_FilterActivation=ENABLE; //&#188;¤&#187;&#238;1y&#194;&#203;&#198;÷0
          CAN_FilterInit(&CAN_FilterInitStructure5);//&#194;&#203;2¨&#198;÷3&#245;ê&#188;&#187;ˉ
               
//下面过滤器5就不行了 不清楚为什么
//           CAN_FilterInitStructure6.CAN_FilterNumber=5;          //1y&#194;&#203;&#198;÷1
//          CAN_FilterInitStructure6.CAN_FilterMode=CAN_FilterMode_IdList;
//          CAN_FilterInitStructure6.CAN_FilterScale=CAN_FilterScale_32bit; //32&#206;&#187;
//          CAN_FilterInitStructure6.CAN_FilterIdHigh=filter_data5[2] << 5;////32&#206;&#187;ID
//          CAN_FilterInitStructure6.CAN_FilterIdLow=0x0000 | CAN_ID_STD;
//               
//          CAN_FilterInitStructure6.CAN_FilterMaskIdHigh= (filter_data5[3] << 5);//32&#206;&#187;MASK
//          CAN_FilterInitStructure6.CAN_FilterMaskIdLow=0x0000 | CAN_ID_STD;
//               
//           CAN_FilterInitStructure6.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//1y&#194;&#203;&#198;÷01&#216;áaμ&#189;FIFO0
//          CAN_FilterInitStructure6.CAN_FilterActivation=ENABLE; //&#188;¤&#187;&#238;1y&#194;&#203;&#198;÷0
//          CAN_FilterInit(&CAN_FilterInitStructure6);//&#194;&#203;2¨&#198;÷3&#245;ê&#188;&#187;ˉ
               
               
          CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);//FIFO0&#207;&#251;&#207;¢1òo&#197;&#214;D&#182;&#207;&#212;êDí.               
  
          NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;     // &#214;÷ó&#197;&#207;è&#188;&#182;&#206;a1
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;            // ′&#206;ó&#197;&#207;è&#188;&#182;&#206;a0
          NVIC_InitStructure.NVIC_IRQChanne

一周热门 更多>