打印
[STM32F0]

STM32F042 USB 虚拟串口收不到数据

[复制链接]
1722|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
BitFu|  楼主 | 2018-11-1 08:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一开始移置的标准库官方例程
在单片机接收数据的地方增加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(&hUsbDeviceFS, &Buf[0]);
  USBD_CDC_ReceivePacket(&hUsbDeviceFS);
       
        LED_TOGGLE;
       
  return (USBD_OK);
  /* USER CODE END 6 */
}


有经验的朋友,给点意见,查这个问题应该从哪儿入手,谢谢!
沙发
yiyigirl2014| | 2018-11-3 21:29 | 只看该作者
不加LED闪烁是不是可以正常收

使用特权

评论回复
板凳
xuanhuanzi| | 2018-11-4 14:39 | 只看该作者
是很亮还是不太亮,如果不太亮,那就是切换频率太快,如果一直有数据接收,那么还一直亮着。那就是频率太快。

使用特权

评论回复
地板
xuanhuanzi| | 2018-11-4 14:40 | 只看该作者
你可以弄个全局变量,比如100次执行一下翻转指令,超过100清零,重新计数。

使用特权

评论回复
5
BitFu|  楼主 | 2018-11-4 21:34 | 只看该作者
问题已找到,是”串口调试助手V2.2“这个上软件可能在USB虚拟串口的情况下工作不正常,换成sscom42或ACCESSPORT137之后可以了,谢谢楼上两位!

使用特权

评论回复
6
labasi| | 2018-11-6 14:40 | 只看该作者
示波器能卡到波形吗

使用特权

评论回复
7
xiaoqizi| | 2018-11-7 14:36 | 只看该作者
一般这种低级错误总是不能避免 即便是老手也是如此

使用特权

评论回复
8
晓伍| | 2018-11-8 12:18 | 只看该作者
有时候重启电脑也好使

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

194

主题

1053

帖子

3

粉丝