原创 STM32 USB joystick程序 --usb_prop.c

2008-4-26 18:39 6120 7 8 分类: MCU/ 嵌入式

usb_prop.c  提供了Device_Property, Device_Table & USER_STANDARD_REQUEST 结构描述,这3个东东定义于usb_core.c。


在ST的例子中,USER_STANDARD_REQUESTS里面的成员全部定义为了空函数DEVICE_PROP的成员有具体的定义,详细的解读会再以后给出。


DEVICE Device_Table =
  {
    EP_NUM,   // defined in usb_conf.h  EP_NUM=2 代表USB应用使用的端点数量
    1         // 代表USB应用使用的配置数量
  };


DEVICE_PROP Device_Property =    //这些函数具体的描述在后面
  {
    Joystick_init,  //USB IP的初始化
    Joystick_Reset,
    Joystick_Status_In,  //回调函数,进入某个阶段状态结束时调用,用于执行类或应用相关的过程,本例中为空函数
    Joystick_Status_Out, //回调函数,退出某个阶段状态结束时调用,本例中为空函数
    Joystick_Data_Setup, //回调函数,
    Joystick_NoData_Setup, //回调函数
    Joystick_Get_Interface_Setting,  //回调函数,检测收到的设置接口的标准请求
    Joystick_GetDeviceDescriptor,    //内核获取设备描述符
    Joystick_GetConfigDescriptor,    //内核获取配置描述符
    Joystick_GetStringDescriptor,    //内核获取字符串描述符
    0,
    0x40 /*MAX PACKET SIZE*/
  };


//下面的ONE_DESCRIPTOR 即指向usb_desc.c中定义的各种描述符


ONE_DESCRIPTOR Device_Descriptor =     //设备描述符
  {
    (u8*)Joystick_DeviceDescriptor,     //描述符均在usb_desc中定义
    JOYSTICK_SIZ_DEVICE_DESC
  };


ONE_DESCRIPTOR Config_Descriptor =      //配置描述符
  {
    (u8*)Joystick_ConfigDescriptor,
    JOYSTICK_SIZ_CONFIG_DESC
  };


ONE_DESCRIPTOR Joystick_Report_Descriptor =  //报告描述符
  {
    (u8 *)Joystick_ReportDescriptor,
    JOYSTICK_SIZ_REPORT_DESC
  };


ONE_DESCRIPTOR Mouse_Hid_Descriptor =      //HID描述符
  {
    (u8*)Joystick_ConfigDescriptor + JOYSTICK_OFF_HID_DESC,
    JOYSTICK_SIZ_HID_DESC
  };


ONE_DESCRIPTOR String_Descriptor[4] =        //字符串描述符 defined in usb_desc.c
  {
    {(u8*)Joystick_StringLangID, JOYSTICK_SIZ_STRING_LANGID},
    {(u8*)Joystick_StringVendor, JOYSTICK_SIZ_STRING_VENDOR},
    {(u8*)Joystick_StringProduct, JOYSTICK_SIZ_STRING_PRODUCT},
    {(u8*)Joystick_StringSerial, JOYSTICK_SIZ_STRING_SERIAL}
  };

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户413685 2012-6-14 11:40

学习中
相关推荐阅读
用户1359586 2011-07-07 11:49
一个简单字符驱动
网上常见的一个linux字符驱动,见 http://www.dzsc.com/data/html/2009-5-31/76528.html insmod test.ko lsmod      就可...
用户1359586 2010-05-14 22:38
FPGA自己产生reset
遇到一个FPGA没有外部的reset,只能自己产生了,这么简单一个问题居然想了很久才实现。在modelsim仿真是对的,还没有实际操作,也希望和大家讨论一下module reset_generatio...
用户1359586 2010-05-10 22:27
SRAM的时序约束
http://blog.ednchina.com/ilove314/198969/message.aspx#85821  读SRAM时序约束分析分析了SRAM的IO计算,但是没有讲如何具体的计算和Ti...
用户1359586 2010-04-07 21:09
CCS6000安装问题
http://bbs.21ic.com/icview-39374-1-1.html在安装CCS6000的时候,运行ccs6000.exe的时候,碰到好几机子都装不上。主要问题是在安装到“compone...
用户1359586 2010-01-13 21:15
matlab 函数:sprintf
for i="1:20"     j="sprintf"('%03d',i)endj =001j =002j =003j =004j =005j =006j =007j =008j =009j =01...
用户1359586 2009-09-29 09:54
有着十三亿人众的孔孟之乡没有一个教育家
   耶鲁大学校长 小贝诺.施密德特  曾任耶鲁大学校长的小贝诺?施密德特,日前在耶鲁大学学报上公开撰文批判中国大学,引起了美国教育界人士对中国大学的激烈争论。 对中国大学近年来久盛不衰的“做大做强”...
EE直播间
更多
我要评论
1
7
关闭 站长推荐上一条 /3 下一条