阅读:1008回复:1
高手看过来!
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 |
|
沙发#
发布于:2004-03-03 12:45
这是一个函数指针数组。
由于协议规范规定了一些必须相应的命令,如你代码中的Get_Status, Set_Address等等。另外还有一些你可能用不到。但依据规范,你也要给出默认响应,对于Usb系统而言就是stall_ep0().这样上层就知道你不支持该命令。 从另一个角度来说,指针使用之前必须要付初值,否则就不知道指到哪里去了。函数指针更是如此。否则,程序会飞掉。另外一种实现方法就是使用NULL作为初值,然后判别到NULL后,再作默认处理。但看起来不够直接。 |
|
|