使用 usbd_core.c 检测 USB 设备何时断开连接
Detect when USB device was disconnected using usbd_core.c
所以在嵌入式系统上工作时,我有一个 USB 驱动器,用于为设备充电以及读取一些数据。
使用usbd_core.c
我可以查看状态,
- 当没有任何连接时,状态为
4
(USBD_STATE_SUSPENDED
)。
- 只要我连接上某些东西,状态就会变为
1
(USBD_STATE_DEFAULT
)。
- 但是当我断开它时,状态没有改变,它仍然是
1
(USBD_STATE_DEFAULT
)。
应该是这样还是我遗漏了什么?
我也尝试了 USBD_Stop()
和 USBD_Start()
看看它是否有任何不同,但当我断开连接时状态仍然没有改变。
有什么想法吗?
USB 规范定义了六种 USB 设备状态:
Attached:设备已连接到USB但未由USB供电。
Powered: 设备已连接到 USB 并已供电但尚未收到任何重置请求。
默认:设备连接到USB。它已通电并重置,但尚未为其分配唯一地址。
地址:设备已连接到 USB,已通电并重置,并分配了一个唯一的地址。
已配置:设备已处于地址状态并已配置。未处于挂起状态。
Suspended: 设备已连接并已配置,但至少 3 毫秒未在总线上检测到任何 activity。
如您所见,suspended 需要连接和配置的设备,但还要注意 所有 这些状态都需要连接的设备并且显然不能用来暗示物理上分离的设备。
断开连接是来自 USB 控制器的低级别事件 - 您的 API 可能会为此类事件提供回调。
所以在嵌入式系统上工作时,我有一个 USB 驱动器,用于为设备充电以及读取一些数据。
使用usbd_core.c
我可以查看状态,
- 当没有任何连接时,状态为
4
(USBD_STATE_SUSPENDED
)。 - 只要我连接上某些东西,状态就会变为
1
(USBD_STATE_DEFAULT
)。 - 但是当我断开它时,状态没有改变,它仍然是
1
(USBD_STATE_DEFAULT
)。
应该是这样还是我遗漏了什么?
我也尝试了 USBD_Stop()
和 USBD_Start()
看看它是否有任何不同,但当我断开连接时状态仍然没有改变。
有什么想法吗?
USB 规范定义了六种 USB 设备状态:
Attached:设备已连接到USB但未由USB供电。
Powered: 设备已连接到 USB 并已供电但尚未收到任何重置请求。
默认:设备连接到USB。它已通电并重置,但尚未为其分配唯一地址。
地址:设备已连接到 USB,已通电并重置,并分配了一个唯一的地址。
已配置:设备已处于地址状态并已配置。未处于挂起状态。
Suspended: 设备已连接并已配置,但至少 3 毫秒未在总线上检测到任何 activity。
如您所见,suspended 需要连接和配置的设备,但还要注意 所有 这些状态都需要连接的设备并且显然不能用来暗示物理上分离的设备。
断开连接是来自 USB 控制器的低级别事件 - 您的 API 可能会为此类事件提供回调。