示例#1
0
文件: usb.c 项目: olatief/Headstage
void usb_irq(void)
{
    P0_4 = 1;
	//
    // Split case into an if and a switch to force Keil into not using a library function:
    if (ivec == INT_USBRESET)
    {
        usbirq = 0x10;
        usb_state = DEFAULT;
        usb_current_config = 0;
        usb_current_alt_interface = 0;
        usb_bm_state = 0;
    }
    else
    {
        switch(ivec)
        {
            case INT_SUDAV:
                usbirq = 0x01;
                isr_sudav();
                break;
            case INT_SOF:
                usbirq = 0x02;
                break;
            case INT_SUTOK:
                usbirq = 0x04;
                packetizer_data_ptr = NULL;
                packetizer_data_size = 0;
                packetizer_pkt_size = 0;
                break;
            case INT_SUSPEND:
                usbirq = 0x08;
                break;
            case INT_EP0IN:
                in_irq = 0x01;
                packetizer_isr_ep0_in();
                break;
            case INT_EP0OUT:
                out_irq = 0x01;
                packetizer_data_size = 0;
                //        req.misc_data = out0buf;
                USB_EP0_HSNAK();
                break;
            case INT_E21IN:
                // Clear interrupt 
                in_irq = 0x04;
                 
                break;
            case INT_EP2OUT:
                // Clear interrupt
                out_irq = 0x04;     
                packet_received = true;
                out2bc = 0xff;
                break;
            default:
                break;
        }
    }
	P0_4 = 0;
}
示例#2
0
void usb_irq(void)
{
        switch(IVEC)
        {
	case INT_USBRESET:
		USBIRQ = 0x10;
		usb_state = DEFAULT;
		usb_current_config = 0;
		usb_current_alt_interface = 0;
		usb_bm_state = 0;
		break;		
	case INT_SUDAV:
                USBIRQ = 0x01;
                isr_sudav();
                break;
	case INT_SOF:
                USBIRQ = 0x02;
                break;
	case INT_SUTOK:
                USBIRQ = 0x04;
                packetizer_data_ptr = NULL;
                packetizer_data_size = 0;
                packetizer_pkt_size = 0;
                break;
	case INT_SUSPEND:
                USBIRQ = 0x08;
                break;
	case INT_EP0IN:
                IN_IRQ = 0x01;
                packetizer_isr_ep0_in();
                break;
	case INT_EP0OUT:
		usb_handle_data(OUT0BUF, OUT0BC);
                OUT_IRQ = 0x01;
		OUT0BC=0xff;
		USB_EP0_HSNAK();
                break;
	case INT_EP1IN:
                // Clear interrupt 
                IN_IRQ = 0x02;
                IN1CS = 0x02;
                break;
	case INT_EP1OUT:
                // Clear interrupt
                OUT_IRQ = 0x02;     
                OUT1BC = 0xff;
                break;
	default:
                break;
        }
}