USB库的疑惑

[复制链接]
1497|3
 楼主| pkrn 发表于 2013-9-18 09:38 | 显示全部楼层 |阅读模式
USB, se, ST, TI, ic
STM32的USB库里定义了这样的一个结构体
typedef struct _USER_STANDARD_REQUESTS
{
  void (*User_GetConfiguration)(void);       /* Get Configuration */
  void (*User_SetConfiguration)(void);       /* Set Configuration */
  void (*User_GetInterface)(void);           /* Get Interface */
  void (*User_SetInterface)(void);           /* Set Interface */
  void (*User_GetStatus)(void);              /* Get Status */
  void (*User_ClearFeature)(void);           /* Clear Feature */
  void (*User_SetEndPointFeature)(void);     /* Set Endpoint Feature */
  void (*User_SetDeviceFeature)(void);       /* Set Device Feature */
  void (*User_SetDeviceAddress)(void);       /* Set Device Address */
}USER_STANDARD_REQUESTS;

但是在调用时似乎是一个数组的形式
USER_STANDARD_REQUESTS User_Standard_Requests =
  {
    Joystick_GetConfiguration,
    Joystick_SetConfiguration,
    Joystick_GetInterface,
    Joystick_SetInterface,
    Joystick_GetStatus,
    Joystick_ClearFeature,
    Joystick_SetEndPointFeature,
    Joystick_SetDeviceFeature,
    Joystick_SetDeviceAddress
  };

可以这样调用的吗,
hithms 发表于 2013-9-18 19:38 | 显示全部楼层
下半部分是定义USER_STANDARD_REQUESTS 的变量User_Standard_Requests ,也就是这个类型结构体的变量,并且给这个变量赋值。这些值是一些函数指针。
rtgchym 发表于 2013-9-18 22:35 | 显示全部楼层
2楼正解,这个就是填充结构体变量的过程,你看看Linux驱动里很多这样的代码,通过给这些变量赋值来确定各个函数的入口地址
cjhk 发表于 2013-9-20 09:42 | 显示全部楼层
不是很懂这一块   帮你顶一个   楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

211

主题

273

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部