解决 USB stall pid问题(mute问题)

点击静音按钮出现 USTS c0000004 stall pid问题。 

是因为数据没有收取,导致了数据的溢出。


int usbd_ep0_recv(uint16_t length, usbd_ep_xfer_callback_t callback)

static int uac_interface_class_request_out_handler(const usbd_interface_req_t *req)
{
    // only support SetCur()
    if (req->request != UAC_CLASS_REQ_SET_CUR) {
        return -1;
    }


    const uint8_t interface = req->index & 0xff;
    const uint8_t unit = req->index >> 8;
    switch (get_uac_interface(interface)) {
    case UAC_INTERFACE_HP_CONTROL:
        if (unit != UAC_FEATURE_UNIT_ID) {
            return -2;
        }

        m_hp_mute = req->value;

        int usbd_ep0_recv(uint16_t length, usbd_ep_xfer_callback_t callback); //添加这个函数进行收取数据

        return 0;
    case UAC_INTERFACE_MIC_CONTROL:
        if (unit != UAC_FEATURE_UNIT_ID) {
            return -2;
        }
        m_mic_mute = req->value;
        return 0;
    case UAC_INTERFACE_HP_DATA:
    case UAC_INTERFACE_MIC_DATA:
    case UAC_INTERFACE_UNKNOWN:
    default:
        return -1;
    }
}

总结:遇到这样的问题要学会类比。同样是contrl,道理是一样的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值