1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用NUC505 的U盘例子,可以识别U盘并读出扇区等,但不知道如何判断U盘已经拔出?
我做了下列尝试: 1. 使用下列断点办法判断USB设备拔出,但是没有效果: 该断点却可以感应到USB设备插入 for (;;) { if (USBH_ProcessHubEvents()) { put_rc(f_mount( FatFs[0], "", 0)); //设置断点 } } 2. 观察NUC505的相关寄存器来判断USB设备拔出,也无效果 寄存器:Host Controller Root Hub Port Status 此寄存器有一个 CSC 标志位 Connect Status Change 3. 拦截USBH的中断,无效果 在此设置断点 void USBH_IRQHandler(void) |
|
相关推荐
1个回答
|
|
判断U盘是否已拔出的方法可以通过监测USB设备的连接状态来实现。在NUC505 USB Host中,可以使用USBH_HUB_GetDeviceStatus函数来获取USB设备的连接状态。该函数返回值为USBH_HUB_PORT_STATE枚举类型,其中有一个标志位USBH_HUB_PORT_CONNECT表示设备是否连接。
以下是一个示例代码段,用于判断U盘是否已拔出: ```c for (;;) { if (USBH_ProcessHubEvents()) { USBH_HUB_PORT_STATE portState = USBH_HUB_GetDeviceStatus(USB_HOST_PORT_NUM); if (!(portState & USBH_HUB_PORT_CONNECT)) { // U盘已拔出 break; } // U盘仍然连接着 // 执行需要的操作 } } ``` 注意:上述示例代码中的USB_HOST_PORT_NUM需要替换为实际使用的USB端口号,通常为0或1,具体取决于NUC505的硬件设计。 通过轮询USB设备的连接状态,可以判断出U盘是否已拔出。当USBH_HUB_GetDeviceStatus函数返回的状态中不包含USBH_HUB_PORT_CONNECT标志位时,即表示U盘已拔出。此时可以中断循环,并执行对应的处理逻辑。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
195 浏览 0 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
172 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
453 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
697 浏览 2 评论
602 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11988 浏览 31 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 14:33 , Processed in 0.575880 second(s), Total 73, Slave 56 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号