μcos多任务中关于USB初始化的调度有关问题.
μ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();
请教各位一个问题:我在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();