hustd6zzg
驱动牛犊
驱动牛犊
  • 注册日期2003-03-22
  • 最后登录2005-01-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1008回复:1

高手看过来!

楼主#
更多 发布于:2004-03-03 11:46
void (*StandardDeviceRequest[])( void ) =
{
Get_Status,
Clear_Feature,
Reserved,
Set_Feature,
Reserved,
Set_Address,
Get_Descriptor,
Reserved,
Get_Configuration,
Set_Configuration,
Get_Interface,
Set_Interface,
Reserved,
Reserved,
Reserved,
Reserved
};


void (*VendorDeviceRequest[])( void ) =
{
Reserved,
Reserved,
Reserved,
Reserved,
Reserved,
Reserved,
Reserved,
Reserved,
Reserved,
Reserved,
Reserved,
Reserved,
Read_Write_Register,
Reserved,
Reserved,
Reserved
};

void Reserved(void)
{
Stall_Ep0();
}



这是周立功D12 SMART开发板里的程序,小弟Reserved在这的作用是什么?望各位仁兄指点指点!!! :)
MSN: hustd6zzg@hotmail.com
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-03 12:45
这是一个函数指针数组。
由于协议规范规定了一些必须相应的命令,如你代码中的Get_Status, Set_Address等等。另外还有一些你可能用不到。但依据规范,你也要给出默认响应,对于Usb系统而言就是stall_ep0().这样上层就知道你不支持该命令。

从另一个角度来说,指针使用之前必须要付初值,否则就不知道指到哪里去了。函数指针更是如此。否则,程序会飞掉。另外一种实现方法就是使用NULL作为初值,然后判别到NULL后,再作默认处理。但看起来不够直接。
A strong man can save himself. A great man can save another.
游客

返回顶部