STM32F042的USB虚拟串口接收不到数据

2019-07-14 16:13发布

一开始移置的标准库官方例程
单片机接收数据的地方增加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的代码来测试,问题还是一模一样
  1. static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
  2. {
  3.   /* USER CODE BEGIN 6 */
  4.   USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
  5.   USBD_CDC_ReceivePacket(&hUsbDeviceFS);
  6.         
  7.         LED_TOGGLE;
  8.         
  9.   return (USBD_OK);
  10.   /* USER CODE END 6 */
  11. }
复制代码
有经验的朋友,给点意见,查这个问题应该从哪儿入手,谢谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
皮皮鲁鲁鲁皮
1楼-- · 2019-07-14 19:49
是很亮还是不太亮,如果不太亮,那就是切换频率太快,如果一直有数据接收,那么还一直亮着。那就是频率太快。
nhonglan
2楼-- · 2019-07-14 22:27
 精彩回答 2  元偷偷看……
ROSE1017
3楼-- · 2019-07-14 23:09
问题已找到,是”串口调试助手V2.2“这个上软件可能在USB虚拟串口的情况下工作不正常,换成sscom42或ACCESSPORT137之后可以了,谢谢楼上两位!
yvochen
4楼-- · 2019-07-15 03:27
示波器能卡到波形吗
sfafa
5楼-- · 2019-07-15 09:08
一般这种低级错误总是不能避免 即便是老手也是如此

一周热门 更多>