嵌入式技术william hill官网
直播中

fanB

8年用户 1458经验值
擅长:20615
私信 关注
[问答]

USB发送过程中USB_DeviceEhciTransfer死循环可能会是什么情况呢

大量数据发送过程中,程序死循环在 USB_DeviceEhciTransfer 中的下面这段代码里。可能会是什么情况呢?

/* If QH is empty or the endpoint is not primed, need to link current dtd head to the QH. */
/* When the endpoint is not primed if qhIdle is zero, it means the QH is empty. */
if ((qhIdle) || (!(epStatus & primeBit)))
{
    ehciState->qh[index].nextDtdPointer = (uint32_t)dtdHard;
    ehciState->qh[index].dtdTokenUnion.dtdToken = 0U;
    ehciState->registerBase->EPPRIME = primeBit;
    while (!(ehciState->registerBase->EPSR & primeBit))
    {
        if (ehciState->registerBase->EPCOMPLETE & primeBit)
        {
            break;
        }
        else
        {
            ehciState->registerBase->EPPRIME = primeBit;
        }
    }
}

回帖(1)

王萍

2022-9-28 09:58:53
可能:

硬件有问题
mcu usb主设备的ehci协议驱动有问题
举报

更多回帖

发帖
×
20
完善资料,
赚取积分