stm32f103c8t6CAN不进入接收中断,本人菜鸟一个广大莫友帮帮忙

2020-01-01 17:54发布

void RCC_Config()
{
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|                  //CAN_GPIO,LED_GPIO,232_GPIO
                                             RCC_APB2Periph_GPIOB|                  //IIC_GPIO
                                             RCC_APB2Periph_AFIO,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1|
                                             RCC_APB1Periph_I2C1|
                                             RCC_APB1Periph_USART2,ENABLE);
}

u8 CAN_Mode_Init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp)
{

                GPIO_InitTypeDef       GPIO_InitStructure;
                CAN_InitTypeDef        CAN_InitStructure;
                CAN_FilterInitTypeDef  CAN_FilterInitStructure;
#if CAN_RX0_INT_ENABLE
           NVIC_InitTypeDef  NVIC_InitStructure;
#endif
// GPIO_PinRemapConfig(GPIO_Remap1_CAN1,ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;       
    GPIO_Init(GPIOA, &GPIO_InitStructure);               
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
          
        CAN_DeInit(CAN1);
       
        CAN_InitStructure.CAN_TTCM=DISABLE;                                               
        CAN_InitStructure.CAN_ABOM=DISABLE;                                               
          CAN_InitStructure.CAN_AWUM=DISABLE;                                               
          //CAN_InitStructure.CAN_NART=ENABLE;                                       
        CAN_InitStructure.CAN_NART=DISABLE;                                               
          CAN_InitStructure.CAN_RFLM=DISABLE;                                               
          CAN_InitStructure.CAN_TXFP=DISABLE;                                               
          CAN_InitStructure.CAN_Mode= CAN_Mode_Normal;                   
          //ÉèÖò¨ÌØÂÊ
          CAN_InitStructure.CAN_SJW=tsjw;                                        
          CAN_InitStructure.CAN_BS1=tbs1;              
          CAN_InitStructure.CAN_BS2=tbs2;               
          CAN_InitStructure.CAN_Prescaler=brp;           
          CAN_Init(CAN1, &CAN_InitStructure);            

        CAN_FilterInitStructure.CAN_FilterNumber=0;          
        CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
          CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
          CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
          CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
          CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
          CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
          CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FilterFIFO0;
        CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
               
          CAN_FilterInit(&CAN_FilterInitStructure);     
#if CAN_RX0_INT_ENABLE            
                 
        CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);         
          NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;     
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;           
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
          NVIC_Init(&NVIC_InitStructure);
#endif
        return 0;
}   

#if CAN_RX0_INT_ENABLE       
                    
void USB_LP_CAN1_RX0_IRQHandler(void)
{
        CanRxMsg RxMessage;
        int i=0;
        LEDOn();
        CAN_Receive(CAN1, 0, &RxMessage);
        for(i=0;i<8;i++)
        printf("rxbuf[%d]:%d ",i,RxMessage.Data[i]);

        if(RxMessage.ExtId==IIC)    FLAG_IIC=1;
        if(RxMessage.ExtId==RS232) FLAG_232=1;       
       
       
}
#endif
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
venus5712
1楼-- · 2020-01-01 22:24
  1.        
  2.         /*CAN通信中断使能*/
  3.         CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
复制代码
乔木9
2楼-- · 2020-01-02 03:14
venus5712 发表于 2016-7-20 17:22

使能了中断,帖子里有
venus5712
3楼-- · 2020-01-02 03:50
乔木9 发表于 2016-7-20 19:33
使能了中断,帖子里有

抱歉,没注意到。
设备波特率查下看看。
乔木9
4楼-- · 2020-01-02 04:36
venus5712 发表于 2016-7-21 09:32
抱歉,没注意到。
设备波特率查下看看。

是我请求帮忙,没有什么可道歉的,应该是我向你致谢
leonliu_1128
5楼-- · 2020-01-02 06:25
 精彩回答 2  元偷偷看……

一周热门 更多>