当前位置: 代码迷 >> 单片机 >> 小弟刚刚入手stm32,关于结构体以及指针的理解,恳请大神指教~
  详细解决方案

小弟刚刚入手stm32,关于结构体以及指针的理解,恳请大神指教~

热度:279   发布时间:2016-04-28 14:44:58.0
小弟刚入手stm32,关于结构体以及指针的理解,恳请大神指教~~~
typedef struct _DEVICE_PROP  
{                           
  void (*Init)(void); //以这个函数指针为例:这个指针包含了
  void (*Reset)(void); // (*Init)(void)这个函数的入口地址  
  void (*Process_Status_IN)(void);
  void (*Process_Status_OUT)(void);
  RESULT (*Class_Data_Setup)(uint8_t RequestNo);
  RESULT (*Class_NoData_Setup)(uint8_t RequestNo);
  RESULT  (*Class_Get_Interface_Setting)(uint8_t Interface, uint8_t AlternateSetting);

  uint8_t* (*GetDeviceDescriptor)(uint16_t Length);
  uint8_t* (*GetConfigDescriptor)(uint16_t Length);
  uint8_t* (*GetStringDescriptor)(uint16_t Length);
  void* RxEP_buffer;  
  uint8_t MaxPacketSize;
} DEVICE_PROP;//按小弟理解:这里的DEVICE_PROP是一种数据类型(例如char类型)
              //该数据类型包含很多函数指针而已~这样理解正确吗???


DEVICE_PROP Device_Property =
  {//这里DEVICE_PROP类型的Device_Propety,我是把它理解成结构体变量?还是该理解成结构体指针(地址)?
    MASS_init,//小弟愚钝,恳请大神指教~~~
    MASS_Reset,//这里的地址与上面的函数指针一一对应???
    MASS_Status_In,
    MASS_Status_Out,
    MASS_Data_Setup,
    MASS_NoData_Setup,
    MASS_Get_Interface_Setting,
    MASS_GetDeviceDescriptor,
    MASS_GetConfigDescriptor,
    MASS_GetStringDescriptor,
    0,0x40//那这里的0,0x40该如何理解?请大神指教~~~
  };

------解决思路----------------------
引用
0,0x40//那这里的0,0x40该如何理解?请大神指教~~~


对应最后2个成员的值,也就是
  void* RxEP_buffer;  置NULL(0), 一般这样置零是为了程序里知道buffer有没有初始化,或者说在这个结构体初始化的过程中暂时无法给出buffer值, 所以先空着
  uint8_t MaxPacketSize; 一包最大64字节

看来楼主最近在也在研究USB,