usb 转 vcp 中断回调函数与接收请教 ??

2019-07-20 18:27发布

本帖最后由 hpdell 于 2016-12-1 10:56 编辑


请教下,使用 usb 转 vcp 中断回调函数与接收问题 ??

具体如下:

1、现在可以使用 vcp 发送数据到 pc机上显示了,
uint8_t  USBH_Tx_Buffer[255];        //usb_printf发送缓冲区
//usb虚拟串口,printf 函数
//确保一次发送数据不超 255 字节
void USBH_printf(char* fmt,...)  
{  
        uint16_t i;

        va_list ap;
        va_start(ap,fmt);
        vsprintf((char *)USBH_Tx_Buffer,fmt,ap);
        va_end(ap);
        i = strlen((const char*)USBH_Tx_Buffer);//此次发送数据的长度

  CDC_Transmit_HS((uint8_t *) USBH_Tx_Buffer,  i);

}


int main()

{

     ..........

   USBH_printf( “USB VCP Send OK 0x%x”, 0x2e)  ;

}

// *************************************************************************************************
2、中断回调函数

/**
  * @brief  Connect callback.
  * @param  hpcd: PCD handle
  * @retval None
  */
void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd)
{
  USB_bDeviceState = 1;     // 连接成功
  USBD_LL_DevConnected(hpcd->pData);

  printf("HAL_PCD_ConnectCallback ==== %d", USB_bDeviceState);
}

/**
  * @brief  Disconnect callback.
  * @param  hpcd: PCD handle
  * @retval None
  */
void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd)
{
  USB_bDeviceState = 0;   // 断开连接
  USBD_LL_DevDisconnected(hpcd->pData);

  printf("HAL_PCD_DisconnectCallback ==== %d", USB_bDeviceState);
}


上面的两个中断函数始终都没有进入,是怎么个情况啊 ???   程序发送是正常的



// *************************************************************************************************
3、函数接收

static int8_t CDC_Receive_HS (uint8_t* Buf, uint32_t *Len)
{
  /* USER CODE BEGIN 11 */
  USBD_CDC_SetRxBuffer(&hUsbDeviceHS, &Buf[0]);
  USBD_CDC_ReceivePacket(&hUsbDeviceHS);
  return (USBD_OK);
  /* USER CODE END 11 */
}


这个函数接收 要如何处理啊,???
// *************************************************************************************************
4、测试程序
USBH_USB3300_VCP.rar (3.85 MB, 下载次数: 145) 2016-12-1 10:54 上传 点击文件名下载附件

















友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-20 21:21
 精彩回答 2  元偷偷看……
hpdell
2楼-- · 2019-07-21 02:26
正点原子 发表于 2016-12-1 18:49
请参考我们的VCP例程

你好,我看了你们 的历程,跟我使用的usb库的版本不同,如果需要使用你们的历程,usb库需要更改
sammy902583
3楼-- · 2019-07-21 05:17
 精彩回答 2  元偷偷看……
hpdell
4楼-- · 2019-07-21 06:05
sammy902583 发表于 2016-12-2 10:47
1. HAL_PCD_DisconnectCallback() 应该在Host下reset的时候会被回call, 只是在Windows底下可能不容易出现,  ...

你好,我在
HAL_PCD_DisconnectCallback() 这个函数里面设置了,只要进入这个函数就会使用串口就会打印信息出来,但是始终都没有信息出来

另外 HAL_PCD_ConnectCallback() 这个里面也是


目前程序的收发都还比较正常,波特率设置为 1392400 ,工作也很稳定,


一周热门 更多>