<p>
最近在研究摄像头,需要传输图像到计算机,所以顺带研究了下usb虚拟串口。硬件平台是stm32f4_discovery.</p><p>
使用eclipse+gcc开发。本程序只是基于官方的例程修改的,所以没什么创新。接触stm32不久,程序当中有问题</p><p>
还请大家指出。</p><br>
<br>
<p>链接:https://pan.baidu.com/s/1z2_yZSYP90WDNNu-HcgKtg </p><p>提取码:1gdo</p><p>
感觉USB是个比较复杂的东西,学起来很费劲(我这人比较浮躁,看一会就看不下去了),大家有比较好的学习方法没? </p><p><br></p>
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
没问题,下载和调试请参考Jlink的文档
你好,我看了你的 虚拟串口的例子。关于发送接收数据的问题,有点困惑。能指点下么?
- void USB_SEND(uint8_t* Buf, uint32_t Len)
- {
- for( int i= 0;i<Len;i++)
- {
- APP_Rx_Buffer[APP_Rx_ptr_in]=*(Buf++);
- APP_Rx_ptr_in++;
- // To avoid buffer overflow
- if(APP_Rx_ptr_in == APP_RX_DATA_SIZE)
- {
- APP_Rx_ptr_in = 0;
- }
- }
- }
复制代码这个事你写的 发送的 函数,就是闹不明白·····,怎么把buffer 填充给 那个 APP_Rx_Buffer,它就发送出去了,他娘的,它不是 RX_Buffer么?
算了,不管了,能发送就行---------------------------->问题来了,
如何接收呀,
从网上查资料,说虚拟串口 和 波特率没啥大关系。那怎么控制它接收呢??
历程里面那个 出现的
VCP_DataRx
- static uint16_t VCP_DataRx (uint8_t* Buf, uint32_t Len)
- {
- uint32_t i;
-
- for (i = 0; i < Len; i++)
- {
- USART_SendData(USART3, *(Buf + i) );
- while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
- }
-
- return USBD_OK;
- }
复制代码彻底晕了,怎么又用上串口接收了······
到底咋回事呀,咋发送,咋接受呀??
看了半天了,晕了···
USB是主从机模式,只要你往Buffer里写数据,主机就会读过去。
至于接收,我的理解是,USB主机往Buffer写数据后,产生中断,单片机在中断中处理接到的数据。
你说的用串口接收,是用串口转发USB主机下发的数据。这样就可以把单片机作为U转串模块使用了。
2.jpg (36.29 KB, 下载次数: 0)
下载附件
2014-3-3 16:56 上传
再问你一下, 这个速度
317KB @ 152.8mb 啥意思呀?
没用过这种软件,我调试时就用的普通串口助手
一周热门 更多>