lpc1343的USB源码问题

2019-03-25 20:35发布

在中断函数里面有一段 if (USB_P_EP[0]) {
         USB_P_EP[0](USB_EVT_SETUP);
         continue; } 原型在下面: #define P_EP(n) ((USB_EP_EVENT & (1 << (n))) ? USB_EndPoint##n : NULL) /* USB Endpoint Events Callback Pointers */
void (* const USB_P_EP[USB_LOGIC_EP_NUM]) (uint32_t event) = {
  P_EP(0),
  P_EP(1),
  P_EP(2),
  P_EP(3),
}; 寻高人解释下。 ---------------------------------- 好好分析了一下: void (* const USB_P_EP[USB_LOGIC_EP_NUM]) (uint32_t event) = {
  P_EP(0),
  P_EP(1),
  P_EP(2),
  P_EP(3),
};这个我知道是结构体函数指针,他指向的应该是4个逻辑端点中断处理函数的地址。   那么里面的 #define P_EP(n) ((USB_EP_EVENT & (1 << (n))) ? USB_EndPoint##n : NULL) 就应该是指向函数的指针,这个宏是一个判断语句。 主要还是这个USB_EndPoint##n 不知道什么含义。   结合上下文的意思。个人觉得就是也是一个MDK预处理类的命令。 编译的时候USB_EndPoint##n 就相当于USB_EndPointn。 (n编译的时候带入前面的数字)       不知道上面的理解对不对。 [ 本帖最后由 443799600 于 2010-6-7 14:07 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。