日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32 USB增加端点总结

發布時間:2023/12/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32 USB增加端点总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

stm32 USB增加端點總結(端點用法)

?

在原有的端點1和端點2基礎上增加一個雙向端點3.

由于EP3端點緩沖區只有512-32-64*7=32字節大小,所以發送長度不能大于32,否則多余的數據會丟失

?

1. 修改usb_desc.c

?1)將端點數目改為6?

? /************** Descriptor of Custom HID interface ****************//* 09 */0x09,???????? /* bLength: Interface Descriptor size */USB_INTERFACE_DESCRIPTOR_TYPE,/* bDescriptorType: Interface descriptor type */0x00,???????? /* bInterfaceNumber: Number of Interface */0x00,???????? /* bAlternateSetting: Alternate setting */0x06,???????? /* bNumEndpoints */0xDC,???????? /* bInterfaceClass: Class code = 0DCH */0xA0,???????? /* bInterfaceSubClass : Subclass code = 0A0H */0xB0,???????? /* nInterfaceProtocol : Protocol code = 0B0H */0,??????????? /* iInterface: Index of string descriptor */

2)增加端點描述符

??? 0x07,???????? /* endpoint descriptor length = 07H */USB_ENDPOINT_DESCRIPTOR_TYPE, /* endpoint descriptor type = 05H */0x83,???????? /* endpoint 2 IN */0x02,????????????????????????????????????????????? /* bulk transfer = 02H */0x40,0x00,??? /* endpoint max packet size = 0040H */0x0A,???????? /* the value is invalid when bulk transfer */0x07,???????? /* endpoint descriptor length = 07H */USB_ENDPOINT_DESCRIPTOR_TYPE, /* endpoint descriptor type = 05H */0x03,???????? /* endpoint 2 OUT */0x02,????????????????????????????????????????????? /* bulk transfer = 02H */0x40,0x00,??? /* endpoint max packet size = 0040H */0x0A,???????? /* the value is invalid when bulk transfer */

?

2. 修改usb_prop.c

1)在void CustomHID_Reset(void)中初始化端點3

? /* Initialize Endpoint 3 */SetEPType(ENDP3, EP_BULK);SetEPRxAddr(ENDP3, ENDP3_RXADDR);SetEPTxAddr(ENDP3, ENDP3_TXADDR);SetEPRxCount(ENDP3, EP_SIZE);SetEPRxStatus(ENDP3, EP_RX_VALID);SetEPTxStatus(ENDP3, EP_TX_NAK);

?

3. 修改usb_conf.h

1)將端點書改為4

#define EP_NUM???? (4)

2)修改端點緩沖地址

/* buffer table base address */#define BTABLE_ADDRESS?? ???(0x00)/* EP0? *//* rx/tx buffer base address */#define ENDP0_RXADDR??????? (0x20)? //4*8=0x20,參照有道筆記“STM32 USB端點修改”#define ENDP0_TXADDR??????? (0x60)/* EP1? *//* tx buffer base address *///地址為32位對其,位4的倍數,不能超過 bMaxPacketSize//EP1#define ENDP1_RXADDR??????? (0xa0)? //每個緩沖區大小64#define ENDP1_TXADDR??????? (0xa0+64)EP2#define ENDP2_RXADDR??????? (0xa0+64+64)#define ENDP2_TXADDR??????? (0xa0+64+64+64)EP3#define ENDP3_RXADDR??????? (0xa0+64+64+64+64)#define ENDP3_TXADDR??????? (0xa0+64+64+64+64+64)

3)注釋回調函數

//#define? EP3_IN_Callback?? NOP_Process//#define? EP3_OUT_Callback?? NOP_Process

?

4. 修改usb_endp.c

1)在void EP3_OUT_Callback(void)中實現usb接收數據處理

2)void EP3_IN_Callback(void)可不用實現

?

5. 修改usbio.c

1)封裝上層接收與發送接口

?

總結

以上是生活随笔為你收集整理的stm32 USB增加端点总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。