STM32
直播中

哥儿

9年用户 988经验值
擅长:嵌入式技术
私信 关注
[问答]

用USB调试助手来调试USB所遇到的困惑求解

请教下大家,用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



请高手们分析下,谢谢

回帖(1)

笑过就走

2024-5-9 16:50:12
从您提供的信息来看,您在使用USB调试助手时遇到了一些困惑。您提到在程序中只找到了一个MCU接收PC所发数据的函数(EP1_OUT_Callback),但实际调试时发现PC通过EP2下发的数据,MCU却能收得到。这可能是因为您的程序中还有其他与EP2相关的函数或配置。

为了解决这个问题,您可以尝试以下步骤:

1. 仔细检查您的程序代码,确保没有遗漏与EP2相关的函数或配置。这可能包括初始化EP2的函数、设置EP2的接收缓冲区等。

2. 如果您在代码中找到了与EP2相关的函数,检查这些函数的实现是否正确。确保它们能够正确地处理从PC接收到的数据。

3. 如果您仍然无法找到与EP2相关的函数,您可以尝试在程序中添加一个新的函数来处理EP2的接收数据。这个函数应该类似于EP1_OUT_Callback,但是在处理EP2的数据时,您需要使用与EP2相关的宏定义和寄存器。

4. 在调试过程中,使用USB调试助手或其他工具来观察MCU与PC之间的通信。这可以帮助您更好地理解数据是如何在EP1和EP2之间传输的。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分