中止通道
应用程序可以通过设置OTG_FS_HCCHARx寄存器的CHDIS和CHENA位为’1’来中止任何一个通道。这个操作将使OTG_FS主机控制器清除已递交的传输请求(如果存在的话),并产生一个通道中止中断。应用程序需要在重新分配此通道用于其他通讯前,等待OTG_FS_HCINTx寄存器的CHH位为’1’(指示此通道已中止)。OTG_FS的主机控制器不能打断已经开始的USB总线上的传输。
在中止通道前,应用程序需要确认在非周期性请求队列(中止的是非周期性通道时)、或周期性请求队列(中止的是周期性通道时)中至少有一个剩余空间。在请求队列已满时(执行通道中止操作前),可以通过写OTG_FS_HCCHARx寄存器的CHDIS位为’1’并等待CHENA位变为’0’,来清除已递交的传输请求。
请问这个是这么设置吗?我的怎么进不去通道禁止中断的。程序如下:
USB_OTG_HcHalt(&pdev , 1); //停止通道
np_rx_sts0 = pdev.regs.common_regs->np_tx_sts; //标志位 无用
while(OTG_FS_HCINT_Status(1 , CHH) == CLEAR);
是这么设置否? |