您的位置:首页 > 其它

USB那点事3 -使用端口2作为custom HID的传输

2013-01-24 14:50 260 查看
USB custom HID例子中是使用了端口1作为通信,那么现在我使用端口2作为通信端了,该如何修改呢?如下所示:

首先修改:usb_desc.c中的const u8 CustomHID_ConfigDescriptor[CUSTOMHID_SIZ_CONFIG_DESC]这个字符数组里面的内容:如下红色的为修改部分,未列出的不用修改:

USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: */

0x82, /* bEndpointAddress: Endpoint Address (IN) */

0x03, /* bmAttributes: Interrupt endpoint */

0x02, /* wMaxPacketSize: 2 Bytes max */

0x00,

0x20, /* bInterval: Polling Interval (32 ms) */

/* 34 */

/*********OUT endpoint******/

0x07, /* bLength: Endpoint Descriptor size */

USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: */

/*Endpoint descriptor type */

0x02, /*bEndpointAddress: */

/*Endpoint Address (OUT) */

0x03, /*bmAttributes: Interrupt endpoint */

0x02, /*wMaxPacketSize: 2 Bytes max */

0x00,

0x20, /* bInterval: Polling Interval (20 ms) */

/* 41 */

其次修改usb_conf.h文件,如下:

/*-------------------------------------------------------------*/

#define EP_NUM (3)//这个很重要的。我改了好久都没主要这个这是指定设备所支持的端点数量,由于用到了端点2所以我使用3,当然的>=3

/*-------------------------------------------------------------*/

/* -------------- Buffer Description Table -----------------*/

/*-------------------------------------------------------------*/

/* buffer table base address */

/* buffer table base address */

#define BTABLE_ADDRESS (0x00)

#define EPxByte 0x2//端点传输的最大字节数

/* EP0 */

/* rx/tx buffer base address */

#define ENDP0_RXADDR (0x18)

#define ENDP0_TXADDR (0x58)

/* EP1 */

/* tx buffer base address */

#define ENDP1_TXADDR (0x100)

#define ENDP1_RXADDR (0x104)

/* EP2 */

#define ENDP2_TXADDR ENDP1_RXADDR + EPxByte//定义端点2的接收和发送地址

#define ENDP2_RXADDR ENDP2_TXADDR + EPxByte

最后修改usb_prop.c,如下:

void CustomHID_Reset(void)这个函数中添加对端口2的复位如下:

SetEPType(ENDP2, EP_INTERRUPT);

SetEPTxAddr(ENDP2, ENDP2_TXADDR);

SetEPRxAddr(ENDP2, ENDP2_RXADDR);

SetEPTxCount(ENDP2,EPxByte );

SetEPRxCount(ENDP2, EPxByte );

SetEPRxStatus(ENDP2, EP_RX_VALID);

SetEPTxStatus(ENDP2, EP_TX_NAK);

整体完成了。

PS:USB HID例子在keil里面安装目录的Examples目录下有这个例子,是基于STM32的例子!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: