本帖最后由 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 上传
点击文件名下载附件
你好,我看了你们 的历程,跟我使用的usb库的版本不同,如果需要使用你们的历程,usb库需要更改
你好,我在
HAL_PCD_DisconnectCallback() 这个函数里面设置了,只要进入这个函数就会使用串口就会打印信息出来,但是始终都没有信息出来
另外 HAL_PCD_ConnectCallback() 这个里面也是
目前程序的收发都还比较正常,波特率设置为 1392400 ,工作也很稳定,
一周热门 更多>