打印

USB库的疑惑

[复制链接]
1209|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

粉丝