请问如何用stm32 CAN实现stm32与电脑通信?

2019-07-14 18:19发布

急求 如何用STM32 CAN实现stm32与电脑传输数据!!!!!! 知道麻烦回复一下,将非常感谢!有代码更好。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
爱雪爱雪
1楼-- · 2019-07-14 21:23
同意楼上的说话,应该要转换模块的
雨小了111
2楼-- · 2019-07-15 01:34
2楼正解,
雨小了111
3楼-- · 2019-07-15 03:10
 精彩回答 2  元偷偷看……
twerfwerw
4楼-- · 2019-07-15 07:37
回复第 2 楼 于2013-08-31 10:07:37发表:
PC机上没有CAN接口,直接通信不可行的,必须用一个转换模块,比如232转CAN接口, USB转CAN接口,这样才能让计算机和你的STM32 CAN接口通信,买了这样的接口后,只需要实现CAN协议代码即可
不好意思 很久没有进来了,这个问题已经解决了,谢谢!但是现在又出现一个新的问题了,STM32 CAN 通信中发送邮箱空中断,不管怎么样配置都进不去主要代码如下:
void Can_Normal(void)
{
  CAN_InitTypeDef   CAN_InitStructure;
  CAN_FilterInitTypeDef   CAN_FilterInitStructure;
 CanTxMsg          TxMessage;
  volatile    u8 TransmitMailbox = 0;
    /* CAN register init */
  CAN_DeInit(CAN1);
  CAN_StructInit(&CAN_InitStructure);
  /* CAN cell init */                                  
  CAN_InitStructure.CAN_TTCM=DISABLE; //???1ê±??′¥·¢í¨???£ê?
  CAN_InitStructure.CAN_ABOM=DISABLE; //???1×??ˉà????£ê?
  CAN_InitStructure.CAN_AWUM=DISABLE; //???1×??ˉ??D??£ê?
  CAN_InitStructure.CAN_NART=DISABLE; //???1·?×??ˉ??′??£ê?
  CAN_InitStructure.CAN_RFLM=DISABLE; //???1?óê?FIFO???¨?£ê?
  CAN_InitStructure.CAN_TXFP=DISABLE; //???1·¢?íFIFOó??è??
  CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;                         // CAN_Mode_Normal;
       
  CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
  CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; //ò??-????o?á?
  CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;
  CAN_InitStructure.CAN_Prescaler=5;
  CAN_Init(CAN1,&CAN_InitStructure);
  CAN_OperatingModeRequest( CAN1, CAN_OperatingMode_Normal);
       
  /* 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_FIFO0;
        CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
        CAN_FilterInit(&CAN_FilterInitStructure);
                                 
  /* transmit 1 message */
/*          TxMessage.StdId=0x11;
          //TxMessage.ExtId=0x1234;
          TxMessage.IDE=CAN_ID_STD;  //à??1??ê?
          TxMessage.RTR=CAN_RTR_DATA; //′?ê????¢μ???ààDí?aêy?Y??£¨?1óD??3ì??£?
          TxMessage.DLC=6;                            
        //        TxMessage.Data[0]='?';          
           TxMessage.Data[0]=0x55;
          TxMessage.Data[1]=0x55;
          TxMessage.Data[2]=0x55;
          TxMessage.Data[3]=0x55;
          TxMessage.Data[4]=0x55;
          TxMessage.Data[5]=0x55;
*/         
          CAN_ITConfig(CAN1,CAN_IT_TME,ENABLE);
 
    TransmitMailbox = CAN_Transmit(CAN1,&TxMessage);
//        printf("receive data:0X%X,0X%X,0X%X,0X%X,0X%X,0X%X",TxMessage.Data[0], TxMessage.Data[1], TxMessage.Data[2], TxMessage.Data[3], TxMessage.Data[4], TxMessage.Data[5]);       
}
是不是哪里配置错了呢?求指教
 

一周热门 更多>