STM32 usb 设备实现自动重枚举
生活随笔
收集整理的這篇文章主要介紹了
STM32 usb 设备实现自动重枚举
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在開發USB設備時可能會經常遇到燒錄程序后要重新拔插USB接口才能使USB設備正常工作,原因是因為重新燒錄后,PC沒有對USB設備進行重枚舉,導致無法正常工作,解決方法很簡單,我們只要在程序啟動后第一時間對USB接口的DP引腳進行一下拉低操作即可(模擬一下拔過程),當程序完成USB接口初始化后,相當于一直插入操作,這樣PC就會對設備進行重枚舉,設備就可以正常操作了:
?
例如可以有如下代碼:
// 以下操作加入是實現USB自動重枚舉
GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_RESET);
HAL_Delay(500);? ? //? 這里可以適當加點延時,可以保證有重枚舉有效
上面的代碼盡量放在上電后第一時間操作,如放在MAIN函數的GPIO操作部分,一定要放在USB 設備IO初始化操作之前。
總結
以上是生活随笔為你收集整理的STM32 usb 设备实现自动重枚举的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32f407 usb cdc设备无
- 下一篇: dw1000 配置无法通过