发一个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>
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
23条回答
kalo425
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. }
复制代码

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

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

看了半天了,晕了···


一周热门 更多>