STM32 USB DEVICE 复位后 无法识别

解决方法:

在USB初始化前强制USB时钟复位。

 

void USB_Disconnected(void) {
    __HAL_RCC_USB_FORCE_RESET();
    HAL_Delay(200);
    __HAL_RCC_USB_RELEASE_RESET();

    GPIO_InitTypeDef GPIO_Initure;
    __HAL_RCC_GPIOA_CLK_ENABLE();

    GPIO_Initure.Pin = GPIO_PIN_11 | GPIO_PIN_12;
    GPIO_Initure.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_Initure.Pull = GPIO_PULLDOWN;
    GPIO_Initure.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOA, &GPIO_Initure);

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);
    HAL_Delay(300);
}

再USB初始化之前,执行一下这些就行了,相当于告诉电脑断开链接,

不同芯片、函数库之间,时钟的复位可能不同,但大体差不多

__HAL_RCC_USB_FORCE_RESET();
__HAL_RCC_USB_RELEASE_RESET();

我已经试过,STM32F429,STM32F303,STM32F205,STM32F105,STM32F103,STM32F042等等,产品级

解决问题了好开心,好开心!!

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要让电脑识别STM32 USB设备,需要进行以下步骤: 1. 安装必要的驱动程序:打开ST官方网站,下载最新的USB驱动程序并安装于电脑上。这些驱动程序可以确保电脑正确识别和与STM32 USB设备通信。 2. 设置STM32 USB设备:通过编程使用STM32USB库,配置STM32 USB设备的参数,例如USB连接模式、速度等。确保设备和电脑的USB协议一致。 3. 编写USB设备描述符:在STM32上编写USB设备描述符,它包含设备的基本信息,如制造商ID、产品ID等。这些信息将帮助电脑正确识别STM32 USB设备。 4. 编写USB应用程序:使用STM32USB库,编写应用程序以处理USB连接的数据传输和通信。确保应用程序正确访问STM32USB接口,以便和电脑进行数据交互。 5. 运行程序并连接电脑:编译和烧录STM32的固件后,将STM32通过USB连接到电脑上。电脑应该能够自动检测到STM32 USB设备,并在设备管理器中显示出来。 6. 检查问题和故障排除:如果电脑无法识别STM32 USB设备,可以通过以下途径排查问题:1)检查USB线缆是否正常连接;2)检查STM32USB连接设置是否正确;3)检查驱动程序是否正确安装;4)重新启动电脑等。 总结:要让电脑正确识别STM32 USB设备,需要安装驱动程序、配置STM32 USB设备参数、编写USB设备描述符和应用程序,并确保连接正确无误。如果出现问题,可以通过排查问题的方式解决。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值