打印
[应用相关]

STM32 的USB中断,请教大侠

[复制链接]
7043|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fabest|  楼主 | 2009-6-1 17:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
USB控制器有两个中断,一个高优先级一个低优先级,在什么情况下响应高优先级中断,在什么情况下响应低优先级中断呢

是不是在初始化的时候就要配制好响应哪个中断

初学USB,请大家不要笑话。
沙发
香水城| | 2009-6-1 18:19 | 只看该作者

STM32的USB中断说明

这个问题确实没有在STM32的手册中说清楚,请看我的博客中的解释:
相关链接:http://blog.**/STM32/234049/message.aspx

使用特权

评论回复
板凳
fabest|  楼主 | 2009-6-1 23:17 | 只看该作者

谢谢香主,原来是这样。。。

STM32的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低优先级中断。


使用特权

评论回复
地板
fabest|  楼主 | 2009-6-1 23:40 | 只看该作者

在USB初始化中是不是就要确定它采用哪种传输模式

  如果USB传输采用双缓冲传输模式,是不是在USB初始化里就要配制好。

typedef struct _DEVICE_INFO
{
  u8 USBbmRequestType;       /* bmRequestType */
  u8 USBbRequest;            /* bRequest */
  u16_u8 USBwValues;         /* wValue */
  u16_u8 USBwIndexs;         /* wIndex */
  u16_u8 USBwLengths;        /* wLength */

  u8 ControlState;           /* of type CONTROL_STATE */
  u8 Current_Feature;
  u8 Current_Configuration;   /* Selected configuration */
  u8 Current_Interface;       /* Selected interface of current configuration */
  u8 Current_AlternateSetting;/* Selected Alternate Setting of current
                                     interface*/

  ENDPOINT_INFO Ctrl_Info;
}DEVICE_INFO;

DEVICE_INFO *pInformation;
/*******************************************************************************
* Function Name  : USB_Init
* Description    : USB system initialization
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void USB_Init(void)
{
  pInformation = &Device_Info;
  pInformation->ControlState = 2;
  pProperty = &Device_Property;
  pUser_Standard_Requests = &User_Standard_Requests;
  /* Initialize devices one by one */
  pProperty->Init();
}

光盘里的程序真是看不懂,

这段里面能不能体现出它是用的哪种传输模式??

使用特权

评论回复
5
fabest|  楼主 | 2009-6-1 23:42 | 只看该作者

USB初始化要包括哪些内容呢。。

使用特权

评论回复
6
zhiwei| | 2012-7-28 11:58 | 只看该作者
问几个问题:
1.如果只有单缓冲区的bulk传输,是不是就不需要HP中断了?
2.如果我不用中断来处理数据传输,用轮询的方式来查询CTR、等标志继而做相关处理是否可以?ISTR中只有一个端点域描述当前传输完成的端点,是否会丢失其他传输完毕的端点标志和端点号?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

174

帖子

0

粉丝