hqw 发表于 2019-1-12 11:31:25

usb 开发问题

请教大家USB问题。我初次用USB调试助手,不知是否是按截图那样去看?
如果,我上面的说法是对的话,也就是说EP2即可接收又可以发送(收发对mcu而言)
我买了个开发板,附了个例程。他是EP1只用来接收PC的数据,EP2只用来对PC发送数据
在这例程来看的话,好像EP1,EP2不能做得到有既接收又发送吗?(以MCU的视角来定义收发)。

void EP1_OUT_Callback(void){      #ifndef STM32F10X_CL      PMAToUserBufferCopy(USB_Receive_Buffer, ENDP1_RXADDR, REPORT_COUNT);          SetEPRxStatus(ENDP1, EP_RX_VALID);         USB_Received_Flag=1;      #else                   // USB_SIL_Read(EP1_OUT,USB_Receive_Buffer);                   // USB_Received_Flag=1;      #endif}
uint32_t USB_SendData(uint8_t *data,uint32_t dataNum){      #ifndef STM32F10X_CL      //数据通过USB送出去      UserToPMABufferCopy(data, ENDP2_TXADDR, dataNum);      SetEPTxCount(ENDP2, REPORT_COUNT);      SetEPTxValid(ENDP2);      #else      USB_SIL_Write(EP2_IN, data, dataNum);      #endif      return dataNum;}

我把例程。请高手们指点下。谢谢大家


西奥伟 发表于 2019-1-12 17:26:52

看你这个串口助手上面,发送和接收数据都未成功,换一个串口助手试一试,确定PC是否成功发送了数据

suuy79-281526 发表于 2019-1-12 20:35:22

确实是没有发送出去哦,EP1握手成功,应该使用EP1发送才对吧!

hqw 发表于 2019-1-14 17:52:17

suuy79-281526 发表于 2019-1-12 20:35
确实是没有发送出去哦,EP1握手成功,应该使用EP1发送才对吧!

在例程里,有EP1的接收PC发送来的函数:
void EP1_OUT_Callback(void){        #ifndef STM32F10X_CL        PMAToUserBufferCopy(USB_Receive_Buffer, ENDP1_RXADDR, REPORT_COUNT);        SetEPRxStatus(ENDP1, EP_RX_VALID);         USB_Received_Flag=1;        #else                   // USB_SIL_Read(EP1_OUT,USB_Receive_Buffer);                   // USB_Received_Flag=1;        #endif}但压根没有 EP1发送数据到PC的函数

hihi22 发表于 2019-1-24 13:44:03

红圈中的内容是通过中断发送上去的,不一定非要调用USB—SendData函数,这个函数也不是最底层函数

天臆弄人 发表于 2019-1-24 14:03:05

指点要钱的,我可以负责任说,是上位机问题
页: [1]
查看完整版本: usb 开发问题