OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3729|回复: 1

关于usb_init函数中的pInformation->ControlState = 2;

[复制链接]

17

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1280
金钱
1280
注册时间
2013-12-14
在线时间
567 小时
发表于 2015-7-21 15:04:57 | 显示全部楼层 |阅读模式
5金钱
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();//实际上是指向程序第三行的Device_Property结构体,
}
以上为函数内容,
问下这里的pInformation->ControlState = 2;是为什么等于2呢,看st自带的几个不同设备类的例程都是等于2。
指向的结构体为
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;
可以看到注释写的是控制状态类型,是什么意思呢?我的理解是不是意味着这里把设备初始化为控制传输来进行设备的枚举呢?不知道我的理解对不对?

最佳答案

查看完整内容[请看2#楼]

哦,看到了usb_core.h中的结构体了 /* Exported types ------------------------------------------------------------*/ typedef enum _CONTROL_STATE {   WAIT_SETUP,       /* 0 */   SETTING_UP,       /* 1 */   IN_DATA,     &nb ...
半导体->模拟电路->数字电路->单片机->汇编->C->操作系统->java
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1280
金钱
1280
注册时间
2013-12-14
在线时间
567 小时
 楼主| 发表于 2015-7-21 15:04:58 | 显示全部楼层
哦,看到了usb_core.h中的结构体了
/* Exported types ------------------------------------------------------------*/
typedef enum _CONTROL_STATE
{
  WAIT_SETUP,       /* 0 */
  SETTING_UP,       /* 1 */
  IN_DATA,          /* 2 */
  OUT_DATA,         /* 3 */
  LAST_IN_DATA,     /* 4 */
  LAST_OUT_DATA,    /* 5 */
  WAIT_STATUS_IN,   /* 7 */
  WAIT_STATUS_OUT,  /* 8 */
  STALLED,          /* 9 */
  AUSE             /* 10 */
} CONTROL_STATE;    /* The state machine states of a control pipe */
原来2代表的是IN_DATA,从设备向主机发数据。
半导体->模拟电路->数字电路->单片机->汇编->C->操作系统->java
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 16:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表