【问题标题】:Detect USB Connection Event on STM32在 STM32 上检测 USB 连接事件
【发布时间】:2014-09-02 11:47:29
【问题描述】:

我目前正在使用支持 USB 的低功耗设备,但遇到了一些麻烦。在正常操作期间,系统时钟设置为明显较慢的速度(因为这是一个数据记录器每隔几分钟才激活一次,这不是问题)。但是,当设备随后插入计算机上的 USB 端口时,它需要识别这一点,初始化 USB 堆栈(我可以这样做),并将系统时钟重置为全速(我也可以这样做) .

您可能已经注意到,我的问题是“USB 已连接”事件。我正在查看STM32评估材料,他们在IRQn表中有一个“USB_FS_WKUP_IRQn”,STM32评估板也有USB-5V电源路由到引脚PE6,它也可以充当WKUP3。

我是否需要为该引脚启用外部中断,或者是否有更好的方法来检测此类事件并根据需要设置/重置时钟?

提前致谢。

【问题讨论】:

  • 不同系列的STM32的USB实现有所不同——你可能需要更具体的STM32F0/1/2/3/4?我想知道这是否是 STM32Cube 工具处理的?
  • 哦,不好意思,是EVAL板上的STM32L152ZD,最后的uP会在同一个家族里。
  • 你用的是哪个类?疾控中心?
  • 这是一个 HID 设备,抱歉,应该说清楚。
  • @ThomSirveaux 首先你应该使用带有 USB 银行的隐藏设备,这个问题在大多数嵌入式设备中都存在,接下来如果有一个唤醒 irq 事件你应该这样配置它......

标签: events embedded usb interrupt


【解决方案1】:

根据你提到的中断名称,我找到了this 实现:

// Enable the USB Wake-up interrupt
NVICInit.NVIC_IRQChannel = USB_FS_WKUP_IRQn;
NVICInit.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_Init(&NVICInit);

看来你不需要更多了。实现可能与您使用的 STM32 系列不同。

【讨论】:

    【解决方案2】:

    我用的是stm32l4

    我在 Vbus 引脚上设置了一个中断。 不在 USB 模式下时,将引脚配置为下拉(因此它不浮动)。 您的引脚和中断线会有所不同,但是

    //Configure the pin
    
        GPIO_InitTypeDef GPIO_InitStruct = {0};
       __HAL_RCC_GPIOA_CLK_ENABLE();
    
        /*Configure GPIO pin : PA9 */
        GPIO_InitStruct.Pin = VBUS_Pin;
        GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
        GPIO_InitStruct.Pull = GPIO_PULLDOWN;
        HAL_GPIO_Init(VBUS_GPIO_Port, &GPIO_InitStruct);
    
        /* EXTI interrupt init*/
        HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
        HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
    

    //配置中断

          EXTI_ConfigTypeDef exti_conf;
          exti_conf.Line = EXTI_LINE_9;
          exti_conf.GPIOSel = EXTI_GPIOA;
          exti_conf.Mode = EXTI_MODE_INTERRUPT;
          exti_conf.Trigger = EXTI_TRIGGER_RISING; 
          HAL_EXTI_SetConfigLine(&hexti_vbus, &exti_conf);
    

    并确保您已处理好中断处理程序。在中断处理程序中设置一个进入 USB 的标志。你应该准备好了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多