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;}
我把例程。请高手们指点下。谢谢大家
看你这个串口助手上面,发送和接收数据都未成功,换一个串口助手试一试,确定PC是否成功发送了数据 确实是没有发送出去哦,EP1握手成功,应该使用EP1发送才对吧! 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的函数
红圈中的内容是通过中断发送上去的,不一定非要调用USB—SendData函数,这个函数也不是最底层函数 指点要钱的,我可以负责任说,是上位机问题
页:
[1]