USB入门总结
------------------------------------------------------------*/
usb_status.configuration = NULL;
usb_status.remote_wakeup = 0;
usb_status.address = 0;
usb_status.dvcstate = DEFAULT_STATE; /* Device state :DEFAULT */
usb_status.stall_req = 0;
#ifdef Debug
test[conters]='!';
conters++;
#endif
/*------------------------------------------------------------
Callback to application layer
------------------------------------------------------------*/
(*usb_status.callback)();
}
else if (SUSPENDED_INT())
{ /* suspended state */
/* forUSBRev.1.1
Transit to suspended state after detect theUSBline has kept idle over 3msec.
After resume detected, end suspend state in 3msec to be able to respond
the host request.
*/
CLR_SUSPENDED_STATE();
#ifdef Debug
test[conters]='@';
conters++;
#endif
}
else if (AWAKE_INT())
{ /* Deveice awake state */
/* AWAKE procedure */
CLR_AWAKE_STATE(); /* Request clear */
#ifdef Debug
test[conters]='#';
conters++;
#endif
}
else if (USB_BUSRESET_DES_INT())
{ /* USB bus reset deassert */
/* Procedure for USB bus reset de-assert */
CLR_BUS_RESET_DES_STATE(); /* Request clear */
#ifdef Debug
test[conters]='$';
conters++;
#endif
}
else if (SOF_INT())
{ /* SOF interrupt status */
CLR_B_SOF_STATE();
#ifdef Debug
test[conters]='%';
conters++;
#endif
/* SOF interrupt status clear */
} /* SOF interrupt status */
if (SETUP_RDY_INT())
{ /* setup ready */
#ifdef Debug
test[conters]='^';
conters++;
#endif
read_Device_Requests();
}
else if(EP1_PKTRDY_INT())
{ /* EP1 packet ready */
read_FIFO(EP1);
}
else if (EP2_PKTRDY_INT())
{ /* EP2 packet ready */
write_FIFO(EP2);
}
else if (EP0_RXPKTRDY_INT())
{ /* EP0 receive packet ready */
read_FIFO(EP0RX);
}
else if (EP0_TXPKTRDY_INT())
{ /* EP0 transmit packet ready */
write_FIFO(EP0TX);
}
}
计录的结果在变量查看中显示如下:
首先我解释一下,这段程序是我在做USB设备时的中断函数。主
评论