硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5406|回复: 5
收起左侧

[有问必答] STM32 USB使用疑问

[复制链接]

34

主题

83

回帖

185

积分

初级会员

积分
185
发表于 2016-10-11 14:35:21 | 显示全部楼层 |阅读模式
        使用STM32的USB模拟U盘,电脑向STM32模拟的U盘写入文件数据后程序如何在STM32中判断这个文件已经写结束了?对USB底层协议不清楚,麻烦大虾指点。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2016-10-11 14:43:32 | 显示全部楼层
不用在STM32中判断,电脑端不是你有个复制粘贴进度么,这个就足够用了。跟你插拔U盘没区别。
回复

使用道具 举报

34

主题

83

回帖

185

积分

初级会员

积分
185
 楼主| 发表于 2016-10-11 15:03:52 | 显示全部楼层

回 eric2013 的帖子

eric2013:不用在STM32中判断,电脑端不是你有个复制粘贴进度么,这个就足够用了。跟你插拔U盘没区别。 (2016-10-11 14:43)
我的目的是想在电脑向STM32的U盘传送文件数据结束后,STM32需要做一些收尾的工作跟PC端无关,请问可以根据STM32的USB寄存器来判断USB最后一次传输是否结束了吗? 我记得在USB协议中数据最后一次传送有一个0长度的数据包或者发送数据小于端点缓冲区大小对吧?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2016-10-11 15:08:45 | 显示全部楼层

回 shuaigew88 的帖子

shuaigew88:我的目的是想在电脑向STM32的U盘传送文件数据结束后,STM32需要做一些收尾的工作跟PC端无关,请问可以根据STM32的USB寄存器来判断USB最后一次传输是否结束了吗? (2016-10-11 15:03) 
电脑端点击退出模拟U盘,
usbd_usr.c文件有断开函数的,你在里面加个变量标志即可。
回复

使用道具 举报

34

主题

83

回帖

185

积分

初级会员

积分
185
 楼主| 发表于 2016-10-11 15:10:38 | 显示全部楼层

回 eric2013 的帖子

eric2013:电脑端点击退出模拟U盘,
usbd_usr.c文件有断开函数的,你在里面加个变量标志即可。 (2016-10-11 15:08)

void usbd_OpenMassStorage(void);
void usbd_CloseMassStorage(void) ;


usbd_usr.c中有以上两个主要函数,USB连接时USB库调用了usbd_OpenMassStorage();函数,但是电脑端移除USB设备时usbd_CloseMassStorage();函数没有被调用,这样就没办法判断传输结束了。还是有其他原因?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2016-10-12 10:04:43 | 显示全部楼层
usbd_usr.c文件
函数
  USBD_USR_DeviceConnected,
  USBD_USR_DeviceDisconnected,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 17:32 , Processed in 0.044092 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表