STM32 软件复位并模拟USB拔插

本文介绍了在STM32中如何通过软件复位以及模拟USB拔插来解决MCU复位后PC不重新枚举USB的问题。在复位前关闭中断,使用HAL库进行软件复位,然后在USB初始化前操作PA12引脚,模拟D+引脚电平变化以欺骗PC机检测到USB变化,从而触发重新枚举。
摘要由CSDN通过智能技术生成

  最近做了个USB跟上位机的通信,需要软件对MCU进行复位,复位后如果USB没有拔插,PC就不会重新枚举USB为了解决这个问题,我做了软件复位跟,软件模拟USB拔插。

  这里我用的是HAL库的软件复位,复位前先把中断关掉,再复位,代码如下:

__set_FAULTMASK(1); //关中断
NVIC_SystemReset(); //复位   

  至于怎么实现模拟USB拔插,则只需要在USB初始化前把PA12进行一个拉低——延时——拉高的操作即可,一般PC机可以通过检查USB的D+引脚来判断USB是否有变化的,对于STM32的PA12就对应了这个引脚,所以可以通过模拟这个引脚电平变化实现模拟USB拔插操作。先模拟拔插,再进行USB初始化,这样PC就可以重新枚举USB了,代码如下:

/** Configure pins as 
        * Analog 
        * Input 
        * Output
        * EVENT_OUT
        * EXTI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值