当前位置: 代码迷 >> VxWorks >> μcos多任务中关于USB初始化的调度有关问题.
  详细解决方案

μcos多任务中关于USB初始化的调度有关问题.

热度:2689   发布时间:2013-02-26 00:00:00.0
μcos多任务中关于USB初始化的调度问题...
请教各位一个问题:我在DE2-70中使用了多任务来处理多个事件。之前的都OK,但是在引入USB之后却出现了问题,将USB初始化作为一个新的优先级最高的任务引入之后,并不能完成初始化的功能。具体代码如下:

void USB_Task(void *p_arg)//完成数初始化工作
{
    p_arg = p_arg;
    disable();   
    disconnect_USB();     
    usleep(1000000);
    Hal4D13_ResetDevice();
    bUSBCheck_Device_State.State_bits.DEVICE_DEFAULT_STATE = 1;
    bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE = 0;
    bUSBCheck_Device_State.State_bits.DEVICE_CONFIGURATION_STATE = 0;
    bUSBCheck_Device_State.State_bits.RESET_BITS = 0;  
    usleep(1000000);
    reconnect_USB();   
    CHECK_CHIP_ID();  
    Hal4D13_AcquireD13(ISP1362_DC_IRQ,(void*)usb_isr);
    enable();  
    bD13flags.bits.verbose=1;
    while (1)
    {
      if (bUSBCheck_Device_State.State_bits.RESET_BITS == 1)
      {
        disable();
        break;  
      }
      if (bD13flags.bits.suspend)
      {
        disable();
        bD13flags.bits.suspend= 0;
        enable();
        suspend_change();   
      } // Suspend Change Handler
      if (bD13flags.bits.DCP_state == USBFSM4DCP_SETUPPROC)
      {
        disable();
        SetupToken_Handler();
        enable();
      } // Setup Token Handler
      if ((bD13flags.bits.DCP_state == USBFSM4DCP_REQUESTPROC) && !ControlData.Abort)
      {
        disable();
        bD13flags.bits.DCP_state = 0x00;
        DeviceRequest_Handler();
        enable();
      } // Device Request Handler
      usleep(1000000);
      if (usb_Ep01Done)
      {
        unsigned char * bbuf = usb_buf;
        usb_Ep01Done = 0;      
        //scpi(bbuf);
      }
     OSTimeDlyHMSM(0, 0, 0, 3);
    }
}

其中使用了中断,代码如下:

void usb_isr(void)  //注册的中断服务程序
{
    ULONG   i_st;
    //IOWR(PIO_SEG7_B_BASE,0, 0xAAAAAAAA);
    disable();
  相关解决方案