打印
[STM32F1]

STM32 USB HID通信 怎么把数据写进去

[复制链接]
1877|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
勇气高|  楼主 | 2015-5-21 11:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



USB_SendData(data,sizeof(data)); 通过USB发送数据函数


(USB_SendData(data,sizeof(data));)是这样写的:

/**
  * @brief  通过USB发送数据
  * @param  data 数据存储首地址
  * @param  dataNum 发送的数据字节数
  * @retval 发送的字节数
  */

uint32_t USB_SendData(uint8_t *data,uint32_t dataNum)
{
        #ifndef STM32F10X_CL
        //将数据通过USB发送出去
        UserToPMABufferCopy(data, ENDP2_TXADDR, dataNum);  //拷贝数据到PMA中
        SetEPTxCount(ENDP2, REPORT_COUNT);          //从端点2发送64字节数据
        SetEPTxValid(ENDP2);          //使能端点2的发送状态
        #else
        USB_SIL_Write(EP2_IN, data, dataNum);
        #endif
        return dataNum;  
}

请问一下,我自已的数据64字节 怎么写进去。请举个例说明一下吧。本人入门初级,对语法
不是很全面,请各位高手指教。。这个程序,是可以正常使用的。我测过了。如果改好了,
我贴出来,让大家分享。                                                           
沙发
wso75839840| | 2015-5-21 15:33 | 只看该作者
static void Update_USB_Send(UCHAR *pucBuf, UCHAR ucLength)
{
        ULONG ulLoop = LOGSENDDLAY;
        if(pucBuf == NULL)
        return;
    //while(GetEPTxStatus(USBCMDINEP) == EP_TX_VALID);
    if(ucLength <= UPDATE_COM_PORT_IN_DATA_SIZE)
    {
        USB_SIL_Write(CDCCMDINEP, pucBuf, ucLength);
                SetEPTxValid(CDCCMDEPN);
    }
    else
    {
        USB_SIL_Write(CDCCMDINEP, pucBuf, UPDATE_COM_PORT_IN_DATA_SIZE);
                SetEPTxValid(CDCCMDEPN);
                /*连续快速发送时可能会导致USB端点没有发送完成*/
                while(ulLoop)
                {
                        ulLoop--;
                }
        USB_SIL_Write(CDCCMDINEP, &pucBuf[UPDATE_COM_PORT_IN_DATA_SIZE], ucLength - UPDATE_COM_PORT_IN_DATA_SIZE + 1);
                SetEPTxValid(CDCCMDEPN);
    }
    return;
}


Update_USB_Send((UCHAR*)ucLog_buf, ucLen);

很简单的。初学应该多思考。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

1

粉丝