你好,我想知道是否有方法分辨USB連接是否斷開。我現(xiàn)在正在使用suspend的事件,但一旦遇到需要遠(yuǎn)程喚醒的時候,suspend和斷開這兩種事件就無法分開了。想請問一下是否有什么方法可以分辨這兩種情況?
還有就是我這邊正在嘗試將藍(lán)牙低功耗模式和USB一起使用,具體的方案是在檢測到USB斷開后就進(jìn)入低功耗模式,而連接上后重新啟用USB并不再進(jìn)入低功耗模式。我現(xiàn)在使用的代碼片段如下,這段代碼在部分設(shè)備上可以正常工作而部分設(shè)備上無法正確識別USB設(shè)備,想請問一下代碼邏輯是否正確?
static?void?before_lowpower() { ????//?Disable?USB ????R8_UDEV_CTRL?=?0; ????R8_USB_CTRL?=?0; ????//?監(jiān)聽USB?GPIO狀態(tài),如果接入則喚醒設(shè)備 ????GPIO_ConfBit(USB_PIN,?GPIO_ModeIN_PU); ????GPIO_ItBit(USB_PIN,?GPIO_ITMode_FallEdge); } static?void?after_lowpower() { ????//?檢查USB是否接入,如果接入則嘗試重新初始化USB ????if?(!GPIO_ReadBit(USB_PIN))?{ ????????//?Reset?USB?SIE ????????R8_USB_CTRL?|=?RB_UC_RESET_SIE?|?RB_UC_CLR_ALL; ????????R8_USB_CTRL?&=?~(RB_UC_RESET_SIE?|?RB_UC_CLR_ALL); ????????USB_DeviceInit(); ????} } /** ?*?@brief?處理LowPower事件 ?*? ?*?@param?time? ?*?@return?uint32_t? ?*/ uint32_t?LowPowerHandler(uint32_t?time) { ????//?在USB工作的情況下,不能進(jìn)入芯片的睡眠模式 ????if?(!usb_is_connected)?{ ????????before_lowpower(); ????????uint32_t?fail?=?CH57X_LowPower(time); ????????//?睡眠后由于掉電,部分外設(shè)需要重新初始化。 ????????after_lowpower(); ????????return?fail; ????} ????//?沒有睡眠,ref:?http://www.findthetime.net/bbs/thread-73139-1.html ????return?1; }