发一个stm32f4的usb虚拟串口程序

2019-12-26 18:52发布

<p> &nbsp;&nbsp;最近在研究摄像头,需要传输图像到计算机,所以顺带研究了下usb虚拟串口。硬件平台是stm32f4_discovery.</p><p> 使用eclipse+gcc开发。本程序只是基于官方的例程修改的,所以没什么创新。接触stm32不久,程序当中有问题</p><p> 还请大家指出。</p><br> <br> <p>链接:https://pan.baidu.com/s/1z2_yZSYP90WDNNu-HcgKtg&nbsp;</p><p>提取码:1gdo</p><p> &nbsp; &nbsp;感觉USB是个比较复杂的东西,学起来很费劲(我这人比较浮躁,看一会就看不下去了),大家有比较好的学习方法没? </p><p><br></p>
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
22条回答
lngdzph
1楼-- · 2019-12-28 03:12
kalo425 发表于 2014-1-13 08:52
大哥。你用Eclipse 能编译么?具体的版本,jlink之类的没问题吧。如果没问题,我就试试啦。·····因为 ...

没问题,下载和调试请参考Jlink的文档
kalo425
2楼-- · 2019-12-28 04:24
--------------------------------------------------
你好,我看了你的 虚拟串口的例子。关于发送接收数据的问题,有点困惑。能指点下么?

  1. void USB_SEND(uint8_t* Buf, uint32_t Len)
  2. {
  3.         for( int i= 0;i<Len;i++)
  4.         {
  5.                 APP_Rx_Buffer[APP_Rx_ptr_in]=*(Buf++);
  6.                 APP_Rx_ptr_in++;
  7.                 // To avoid buffer overflow
  8.             if(APP_Rx_ptr_in == APP_RX_DATA_SIZE)
  9.                 {
  10.                  APP_Rx_ptr_in = 0;
  11.                 }
  12.         }


  13. }
复制代码
这个事你写的 发送的 函数,就是闹不明白·····,怎么把buffer 填充给 那个 APP_Rx_Buffer,它就发送出去了,他娘的,它不是 RX_Buffer么?
算了,不管了,能发送就行---------------------------->问题来了,

如何接收呀,

从网上查资料,说虚拟串口 和 波特率没啥大关系。那怎么控制它接收呢??

历程里面那个 出现的
VCP_DataRx

  1. static uint16_t VCP_DataRx (uint8_t* Buf, uint32_t Len)
  2. {
  3.   uint32_t i;
  4.   
  5.   for (i = 0; i < Len; i++)
  6.   {
  7.     USART_SendData(USART3, *(Buf + i) );
  8.     while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
  9.   }

  10.   return USBD_OK;
  11. }
复制代码

彻底晕了,怎么又用上串口接收了······

到底咋回事呀,咋发送,咋接受呀??

看了半天了,晕了···


lngdzph
3楼-- · 2019-12-28 06:39
kalo425 发表于 2014-3-3 16:24
--------------------------------------------------
你好,我看了你的 虚拟串口的例子。关于发送接收数据 ...

USB是主从机模式,只要你往Buffer里写数据,主机就会读过去。
至于接收,我的理解是,USB主机往Buffer写数据后,产生中断,单片机在中断中处理接到的数据。
你说的用串口接收,是用串口转发USB主机下发的数据。这样就可以把单片机作为U转串模块使用了。
kalo425
4楼-- · 2019-12-28 10:32
lngdzph 发表于 2014-3-3 16:54
USB是主从机模式,只要你往Buffer里写数据,主机就会读过去。
至于接收,我的理解是,USB主机往Buffer写 ...

2.jpg (36.29 KB, 下载次数: 0)

下载附件

2014-3-3 16:56 上传



再问你一下, 这个速度

317KB @ 152.8mb  啥意思呀?

lngdzph
5楼-- · 2019-12-28 12:39
 精彩回答 2  元偷偷看……
lngdzph
6楼-- · 2019-12-28 14:54
kalo425 发表于 2014-3-3 16:57
再问你一下, 这个速度

317KB @ 152.8mb  啥意思呀?

没用过这种软件,我调试时就用的普通串口助手

一周热门 更多>