STM32F042的USB虚拟串口接收不到数据
一开始移置的标准库官方例程在单片机接收数据的地方增加LED状态控制来观察
static uint16_t VCP_DataRx (uint8_t* Buf, uint32_t Len)
{
uint32_t i;
for (i = 0; i < Len; i++)
{
USART_SendData(USART1, *(Buf + i) );
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
LED_TOGGLE;//LED状态翻转
return USBD_OK;
}从上位机串口软件发送数据时第一次LED状态变化,再发就不动作了,也收不到数据,
串口工具关闭串口再重新打开后第一次发送还能变化一次,再发送就不变了。
开始以为标准版的固件不兼容最新的上位机驱动(我的系统是WIN7 X86 32位)又用CUBE生成了一个基于HAL的代码来测试,问题还是一模一样
[*]static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
[*]{
[*]/* USER CODE BEGIN 6 */
[*]USBD_CDC_SetRxBuffer(&hU***DeviceFS, &Buf);
[*]USBD_CDC_ReceivePacket(&hU***DeviceFS);
[*]
[*] LED_TOGGLE;
[*]
[*]return (USBD_OK);
[*]/* USER CODE END 6 */
[*]}
复制代码
有经验的朋友,给点意见,查这个问题应该从哪儿入手,谢谢!
你看看usb是不是问题? 只变化了一次,可能是usb toggle位的问题 可能是usb的问题 你这个用的不是串口的吗? 重新插拔一下usb试试。 看看usb,是不是这的问题 是usb吗?感觉像 虚拟串口有问题的吗? 之前测试过可以接受数据的。 如果下载程序以后,需要让usb线拉低才行。 虚拟串口使用中断了吗? 为什么要在虚拟串口中使用真是串口呢? 把你的代码上传看看是什么原因
这个串口的问题的吗? 这个网上有教程可以使用 。 虚拟串口驱动兼容不 好像新版本的CubeMX生成的USB串口有问题。 你用的是哪个版本的CubeMX? 你可以试试别的USB虚拟串口的程序,看看会不会出现这个问题。