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初始化操作之前。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值