STM32-USB
+ -

STM32F407全速中断

2026-08-13 本文链接为:http://www.usbzh.com/article/detail-1785.html ,欢迎转载,转载请附上本文链接。

中断入口函数为OTG_FS_IRQHandler

//USB OTG中断服务函数,处理所有USB中断
extern USB_OTG_CORE_HANDLE  USB_OTG_dev;
void OTG_FS_IRQHandler(void)
{
      USBD_OTG_ISR_Handler(&USB_OTG_dev);
}

关键中断流程图

  主机插入USB → VBUS上电
       │
       ▼
  sessreqintr → DevConnected()
       │
       ▼
  usbreset   → Reset()          ← 设备复位,EP0准备接收
       │
       ▼
  enumdone   →                   ← 速度枚举完成,激活EP0
       │
       ▼
  outepintr(setup) → SetupStage() ← 收到SETUP包(获取描述符等)
       │
       ▼
  inepintr(xfercompl) → DataInStage()  ← 发送数据完成
  outepintr(xfercompl) → DataOutStage() ← 接收数据完成
       │
       ▼
  usbsuspend → Suspend()        ← 总线空闲>3ms
       │
       ▼
  wkupintr   → Resume()         ← 主机唤醒

中断处理函数

中断标志位 处理函数 触发条件 做了什么
outepintr DCD_HandleOutEP_ISR OUT 端点有事件 检查各 OUT 端点的 xfercompl(数据接收完成)→ 调 DataOutStage;setup(收到 SETUP 包)→ 调 SetupStage
inepint DCD_HandleInEP_ISR IN 端点有事件 检查各 IN 端点的 xfercompl(数据发送完成)→ 调 DataInStage;emptyintr(Tx FIFO 空)→ 填充下一包数据
modemismatch (内联处理) 模式不匹配 直接清除中断标志,无回调
wkupintr DCD_HandleResume_ISR 主机唤醒总线 恢复时钟 → 调 Resume 回调通知上层
usbsuspend DCD_HandleUSBSuspend_ISR 总线进入挂起 调 Suspend 回调 → 可选低功耗关时钟
sofintr DCD_HandleSof_ISR 每 1ms(FS) / 125μs(HS) 一帧 SOF 回调(帧同步)
rxstsqlvl DCD_HandleRxStatusQueueLevel_ISR Rx 状态队列非空 读 GRXSTSP 寄存器,根据 pktsts 状态码处理:收到 OUT 数据 → 从 FIFO 读包;收到 SETUP 包 → 存入 setup_packet 缓冲区
usbreset DCD_HandleUsbReset_ISR 主机发起 USB 复位 清 FIFO、清中断、设备地址归零 → EP0 准备接收 SETUP → 调 Reset 回调
enumdone DCD_HandleEnumDone_ISR 速度枚举完成 判断 FS/HS → 设置 mps 和 turn-around time → 激活 EP0
incomplisoin DCD_IsoINIncomplete_ISR ISO IN 传输不完整 调 IsoINIncomplete 回调(仅 ISO 模式)
incomplisoout DCD_IsoOUTIncomplete_ISR ISO OUT 传输不完整 调 IsoOUTIncomplete 回调(仅 ISO 模式)
sessreqintr DCD_SessionRequest_ISR VBUS 检测到连接 调 DevConnected 回调(需 VBUS_SENSING_ENABLED)
otgintr DCD_OTG_ISR OTG 事件(如会话结束) 检测 sesenddet → 调 DevDisconnected 回调
本文链接为:http://www.usbzh.com/article/detail-1785.html ,欢迎转载,转载请附上本文链接。

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936     USB技术交流3:1031974172

0 篇笔记 写笔记

关注公众号
  • HID人机交互
  • Linux&USB
  • Linux-USB百科
  • MIDI V1.0
  • TinyUSB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB3测试
  • USB3知识点
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • USB资源
  • XHCI 1.2b 规范
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!