发 帖  
原厂入驻New
[问答] STM32F105 CAN设置
3107 CAN STM32F105
分享
使用标准库函数。硬件为STM32F105芯片,外部晶振8M,CAN收发器为TJA1050,CAN_RX-PB8,CAN_TX-PB9。
CAN初始化失败。
贴上初始化代码:
    SystemInit();
    RCC_APB2PeriphclockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);

    GPIO_PinRemapConfig(GPIO_Remap1_CAN1, ENABLE);

   /* GPIOB */     
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);     

   //CAN1 TXD -> PB9
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
   GPIO_Init(GPIOB, &GPIO_InitStructure);   
  //CAN1 RXD -> PB8
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
   GPIO_Init(GPIOB, &GPIO_InitStructure);   
   CAN_DeInit(CAN1);
   CAN_Structinit(&CAN_InitStructure);

   CAN_InitStructure.CAN_TTCM=DISABLE;                          
   CAN_InitStructure.CAN_ABOM=DISABLE;                           
   CAN_InitStructure.CAN_AWUM=DISABLE;                          
   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=CAN_SJW_1tq;                  
   CAN_InitStructure.CAN_BS1=CAN_BS1_6tq;                  
   CAN_InitStructure.CAN_BS2=CAN_BS2_1tq;                  
   CAN_InitStructure.CAN_Prescaler=18;                           
   CAN_Init(CAN1, &CAN_InitStructure);                        
      
         /* CAN filter init */
   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_Filter_FIFO0;                                 
   CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;                                 
   CAN_FilterInit(&CAN_FilterInitStructure);

程序中没有定义STM32F10X_CL。自己计算得到的波特率为250K,可是以250K无法通信

求大神帮忙看看程序有啥问题


0
已退回10积分
2018-1-23 18:01:46   评论 分享淘帖 邀请回答

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

我要提问
关闭

站长推荐 上一条 /5 下一条

快速回复 返回顶部 返回列表