勇气01 发表于 2015-5-21 12:00:11

STM32 USB HID 写入自已的数据




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


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

/**
* @brief通过USB发送数据
* @paramdata 数据存储首地址
* @paramdataNum 发送的数据字节数
* @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字节 怎么写进去。请举个例说明一下吧。本人入门初级,对语法
不是很全面,请各位高手指教。。这个程序,是可以正常使用的。我测过了。如果改好了,
我贴出来,让大家分享。                                                         

mark0668 发表于 2015-5-21 12:07:28

你的HID 是不是描术了64字节的了,如果不是你描了多少就发多少

逍遥李 发表于 2015-5-21 12:13:52

楼主的意思是你的数据如何通过这个函数来发送是吗?你的数据是怎么存储的呢?把数据首地址给data即可,比如一个数组table[]={,,,};
data =&table;即可
大神们我这样写对不对?我也没用过……:P

mark0668 发表于 2015-5-21 12:21:11

就是传个数组的首地址指针给他,因为数组都是在连续的内存里的,所以只要知道首地址就可以读全部的数组了。去了解一下C 的指针

勇气01 发表于 2015-5-21 12:38:20

mark0668 发表于 2015-5-21 12:21
就是传个数组的首地址指针给他,因为数组都是在连续的内存里的,所以只要知道首地址就可以读全部的数组了。 ...

能帮我虽便写个样式嘛。。你自已定义64个数据。。然后通过函数发送出去。

mark0668 发表于 2015-5-21 12:42:59

本帖最后由 mark0668 于 2015-5-21 12:44 编辑

main(void){
u8 a={0,1,2,3};
dd(a);
}

void dd(u8 *bbb){
u8 ee;
ee=bbb;
ee=bbb;
}



这是一种,

勇气01 发表于 2015-5-21 12:48:39

mark0668 发表于 2015-5-21 12:42
main(void){
u8 a={0,1,2,3};
dd(a);


你能不能用我那个函数,虽便写几个数据调用,发送出去。。mian,直接调用的USB_SendData(data,sizeof(data));   发送。   

子函数才是这样写的
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;
}

勇气01 发表于 2015-5-21 12:58:23

mark0668 发表于 2015-5-21 12:42
main(void){
u8 a={0,1,2,3};
dd(a);


好像你是对的,,main主程序   里面定义了一个,uint8_t data;
然后,调用 uint32_t USB_SendData(uint8_t *data,uint32_t dataNum) 发数据
是不是应该,这样写,data=22;   .......   直接把数据写入,然后调用
uint32_t USB_SendData(uint8_t *data,uint32_t dataNum)
把数据发送去。

mark0668 发表于 2015-5-21 20:48:43

说了你去了解下C 的指针就明白了,数据传递

mark0668 发表于 2015-5-21 20:49:34

要想深入编程就得会用指针
页: [1]
查看完整版本: STM32 USB HID 写入自已的数据