usb转为虚拟串口,请进!

sunzhil1987 2012-02-03 11:40:22
最近在做stm的USB的虚拟串口实验。如下面的程序,我要实现的是当某个.bit文件通过usb虚拟串口发送到真实串口“发送完后”,跳出while(1)这个死循环,试了好多种办法都不行。望大家指教。

下面是程序:
while(1)
{
if(bDeviceState == CONFIGURED)
{
if(Flag_USBDataReceive)
{
count_out = GetEPRxCount(ENDP3); //获得接收到的数据长度

PMAToUserBufferCopy(buffer_out, ENDP3_RXADDR, count_out); //将数据从USB EP3 RX的缓冲区拷贝到用户指定的数组中

for (i = 0; i < count_out; i++)
{
USART_SendData(USART1, *(buffer_out+i));

while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
//QueueWrite((void *)buf_usb_to_uart, *(buffer_out+i)); //add by sun zhilong. 2012.01.30
SetEPRxValid(ENDP3); //完成拷贝后置有效状态,从而EP3发送ACK,主机可以进行下一个数据包的发送
Flag_USBDataReceive = 0;
}

}
}
...全文
195 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunzhil1987 2012-02-06
  • 打赏
  • 举报
回复
其中buffer_out 的初始化:
u8 buffer_out[64] = {0};
sunzhil1987 2012-02-06
  • 打赏
  • 举报
回复
这种是每发完一个包后,再接着发下一个包,直到发完所有的包。
dontium 2012-02-03
  • 打赏
  • 举报
回复
用“文件结束标志”或者计算文件长度的办法跳出
sunzhil1987 2012-02-03
  • 打赏
  • 举报
回复
如果是一个.bit的文件,它的文件结束标志不好判断吧!

27,520

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧