USB的中断说明

STM32的USB模块可以产生三种中断:USB唤醒中断、USB高优先级中断和USB低优先级中断,在STM32的参考手册中没有详细说明这三种中断对应哪些事件,现说明如下:

1)USB唤醒中断:在中断向量表中的位置是42。这个中断在USB设备从暂停模式唤醒时产生,唤醒事件由USB_ISTR寄存器的WKUP位标识。

2)USB高优先级中断:在中断向量表中的位置是19。这个中断仅由USB同步(Isochronous)模式传输或双缓冲块(Bulk)传输模式下的正确传输事件产生,正确传输事件由USB_ISTR寄存器的CTR位标识。

3)USB低优先级中断:在中断向量表中的位置是20。这个中断由所有其它的USB事件产生,例如正确传输(不包括同步模式和双缓冲块模式)、USB复位等,事件标志位在USB_ISTR寄存器中。

在STM32的USB开发包的例子中包含了上述中断的处理,例如在USB扬声器的例子中,CTR_HP函数处理USB高优先级中断;在所有例子中都有USB_Istr()函数处理USB低优先级中断。

usb中断产生之后通过在usb中断处理函数中查看USB中断状态寄存器USB_ISTR确认产生中断请求的事件

以F103为例:

端点在成功完成一次传输后, CTR位会被硬件置起,如果USB_CNTR上的相应位也被设置的话,就会产生中断。与端点相关的中断标志和USB_CNTR寄存器的CTRM位无关。这两个中断标志位将一直保持有效,直到应用程序清除了USB_EpnR寄存器中的相关中断挂起位(CTR位是个只读位)

时间: 2024-10-01 01:59:52

USB的中断说明的相关文章

CC2541蓝牙学习——通用I/O口中断

学习目标:掌握中断使能寄存器IEN0.IEN1.IEN2,中断标志寄存器PxIFG.IRCON.IRCON2,端口中断触发沿控制寄存器PICTL CC2541有18个中断源,每个中断源都可以产生中断请求,这18个中断源如下 中断请求通过SFR寄存器IEN0.IEN1.IEN2使能或禁止,定义如下: 其中IEN0和IEN1可以位寻址,寄存器IEN2不可以位寻址 EA:1开总中断 IEN1.P0IE:P0端口中断使能 IEN2.P1IE:P1端口中断使能 IEN2.P2IE:P2端口中断使能 IEN

LPC1768的USB使用--宏定义

#ifndef __USBREG_H #define __USBREG_H /* usb设备中断定义 usb_devintst usb_devinten usb_devintclr usb_devintdet*/ #define FRAME_INT           0x00000001  //每隔1MS产生一次帧中断,该中断用在同步包的传输中 #define EP_FAST_INT         0x00000002  //端点的快速中断,在端点中断优先级中设置端点优先级别 #define

DFU工作过程中USB机制

在一级bootloader运行进入USB启动方式之后,设备进行枚举.枚举过程中会通过PC端发送命令对连接的USB设备进行枚举.当枚举成功之后,在PC端能够看到设备的盘符. 当设备能够被PC正确识别之后,接下来就可以通过烧写工具完成设备的扫描如果成功找到设备,则可以通过USB传输数据到SRAM中,这时候的数据主要包括2k infor文件.一级bootloader在成功的解析2kinfor 之后,PC端会将DFU文件传输到初始化好的DRAM中.并且PC指针跳转到DFU地址处执行,执行过程中会跳转到U

(转)USB体系结构

转载地址:http://blog.ednchina.com/zenhuateng/203584/Message.aspx USB总线接口层:物理连接.电气信号环境.信息包传输机制:主机一方由USB主控制器和根集线器组成,而USB方则由设备中的USB接口组成. USB设备层:由主机方的USB系统软件和设备方的USB设备逻辑视图组成. USB功能层:代表客户软件和一个给定的设备功能接口之间的关系. USB系统软件执行很多关键的功能,包括: 设备的连接/断开检测:设备配置:带宽分配:管理客户程序和设备

STM32F4中USB与PC双向通信

STM32F4系列处理器内部集成了USB-OTG控制器,在不要外部USB IC下就可以实现USB通信,最近两天看了下如何利用STM32的USB实现通信,记录下关键步骤: 1. 从http://www.stmcu.org/document/list/index/category-524下载所需要的USB_OTG主机和设备库: 2. 新建STM32工程,并把STM32_USB-Host-Device_Lib下的Libraries中的3个USB库放到工程文件中: 3.在Keil中建立USB相关文件夹,

usb驱动的基本结构和函数简介【转】

转自:http://blog.csdn.net/jeffade/article/details/7698404 几个重要的结构 struct--接口 [plain] view plaincopy struct usb_interface { /* array of alternate settings for this interface, * stored in no particular order */ struct usb_host_interface *altsetting; stru

STM32 USB 问题汇总(转)

源:STM32 USB 问题汇总 汇总1:STM32的USB例程修改步骤,来自http://blog.csdn.net/cy757/archive/2010/01/01/5117610.aspx 以下是笔者将ST的Custom_HID例程修改为“自定义USB设备”例程时总结出来的,因为笔者也是刚刚学USB开发不久,某些方面理解错误在所难免,请各位大虾指正. 一.usb_desc.c文件 根据你程序使用的通信方式修改.usb_desc.h文件中定义要根据usb_desc.c文件中的数组的大小:Co

USB设备驱动开发之远程访问USB设备(一)

By Fanxiushu 2016 05-15  转载或引用本文,请注明原始作者. 使用过vmware的人都应该知道,vmware虚拟机有这样的一个功能, 当在宿主机上插入一个USB设备的时候,通过设置,可以在vmware的虚拟机系统里边能访问到这个USB设备, 而且访问这个USB设备,就跟真的把这个USB设备插入到这个虚拟系统中一样,跟真实的几乎没任何区别. 再看一种情况,假设有两台机器C和S,C 机器是你正在使用的机器, S机器在远端,你只能通过远程控制S. S机器的配置和功能都很强大,大部

USB Mass Storage学习笔记-STM32+FLASH实现U盘

一.内容概述 采用STM32内部自带USB控制器外加大页NAND FLASH K9F1G08U0A实现一个128M的U盘. 1.STM32的USB控制器 STM32F103的MCU自带USB从控制器,符合USB规范的通信连接:PC主机和微控制器之间的数据传输是通过共享一专用的数据缓冲区来完成的,该数据缓冲区能被USB外设直接访问.这块专用数据缓冲区的大小由所使用的端点数目和每个端点最大的数据分组大小所决定,每个端点最大可使用512字节缓冲区,最多可用于16个单向或8个双向端点.USB模块同PC主