请教下大家,用USB调试助手来调试USB所遇到的困惑。问题如下面截图; 在程序只找到一个MCU接收PC所发数据的函数(如下)。但这是EP1的,而非EP2的。但在调试时,确发现PC通过EP2下发的数据,mcu却能收得到。(因为在在程序里,是有EP2对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 } 程序是有EP2对PC的发送数据函数。但没找得到EP2接收PC所发数据的函数。 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; } 而且,看程序另一个地方的设置,#define EP2_OUT_Callback NOP_Process,这个也没加屏蔽,也就是 EP2接收PC所发数据的函数或功能也没使能 /* CTR service routines */ /* associated to defined endpoints */ //#define EP1_IN_Callback NOP_Process //#define EP2_IN_Callback NOP_Process #define EP3_IN_Callback NOP_Process #define EP4_IN_Callback NOP_Process #define EP5_IN_Callback NOP_Process #define EP6_IN_Callback NOP_Process #define EP7_IN_Callback NOP_Process //#define EP1_OUT_Callback NOP_Process #define EP2_OUT_Callback NOP_Process #define EP3_OUT_Callback NOP_Process #define EP4_OUT_Callback NOP_Process #define EP5_OUT_Callback NOP_Process #define EP6_OUT_Callback NOP_Process #define EP7_OUT_Callback NOP_Process 请高手们分析下,谢谢 |
如何用c#使用ST25R3911DISCOComm.dll来读取和写入NDEF区的数据,需要相关例程,感谢各位大佬拯救一下我啊!????
使用STM32G431做HID Keyboard与CDC符合设备,发现根本做不成,可能是ST提供的库的问题
STM32U073的usb问题。
STM32F103标准库配置的虚拟串口,设备描述符请求失败
STM32L4R9最大支持SD卡的容量是?支持SDXC 64G卡吗?
usb虚拟多个串口如何操作?
USBX在F407上创建CDC不能正常使用
stm32F407作为usb device时,PC发数据下去,为什么会收到一样的数据?
USB复合设备MSC+CDC,MSC异常影响CDC收发
STM32F407 作USB host 驱动 声卡 问题
读取数据,并发送
通过端点2发送出去
所以你端点2能发出数据。至于端点2能收到数据,不知道你怎么判断的
评分
查看全部评分
评分
查看全部评分
EP2能发送接收到的数据给到PC,这个流程我是请楚的。我就是弄不清,调试助手是通过EP2向MCU来发送数据,而我在例程里根本是没找到EP2的接收函数(EP1的接收函数倒是有的)。这个是买开发板送的例程,不是我自己写的。
而且从下面例程的设定来看,EP2的接收(这里的接收是指接收PC发的数据)压根就没打开,红体字所示。难道说,调试助手上PC通过EP2向MCU来发送数据,MCU其实是通过EP1来接收的吗?
/* EP1 */
/* tx buffer base address */
//地址为32位对其,位4的倍数,不能超过 bMaxPacketSize
#define ENDP1_RXADDR (0x98)
#define ENDP1_TXADDR (0xD8)
//EP2
//#define ENDP2_RXADDR (0x118)
#define ENDP2_TXADDR (0x118)
/* CTR service routines */
/* associated to defined endpoints */
//#define EP1_IN_Callback NOP_Process
//#define EP2_IN_Callback NOP_Process
#define EP3_IN_Callback NOP_Process
#define EP4_IN_Callback NOP_Process
#define EP5_IN_Callback NOP_Process
#define EP6_IN_Callback NOP_Process
#define EP7_IN_Callback NOP_Process
//#define EP1_OUT_Callback NOP_Process
#define EP2_OUT_Callback NOP_Process
#define EP3_OUT_Callback NOP_Process
#define EP4_OUT_Callback NOP_Process
#define EP5_OUT_Callback NOP_Process
#define EP6_OUT_Callback NOP_Process
#define EP7_OUT_Callback NOP_Process
评分
查看全部评分
在程序里,你找得到BUF被写入的内容吗?我每次连上USB,调试助手上,EP2接收区的数据是和发送区一致的,不过,若此后再改变发送区的数据,EP2接收区的数据就还是原来的,不会跟着发送区的数据而变化
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分