请教下大家,用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 请高手们分析下,谢谢 |
请问一下,我的nucleo板子连接usb线,找不到target,一直无法下载程序怎么回事呢?
stm32f407 开启两路(FS和HS) Custom HID,与上位机通信偶尔中断
stm32f746g-disco开发板的串口通讯连接方式
STM32F746g-disco开发板串口配置串口助手无法接收到数据
stm32cubemx配置USB host
XP系统安装virtualComportDriver驱动失败
STM32L4 USBD CDC-MSC组合设备类CDC_Transmit_FS发送问题
采用USB 全速CDC的时候(12M 波特率),motor pilot的串口速度可以设置为多少,能设置成7372800吗
官方给出的STM32_USB_FS_Device_Lib_V4.1.0中的JoyStickMouse的例程下载到F103C8T6最小系统板,电脑没有识别到USB
STM32H723的USB内嵌DP上拉电阻如何控制
读取数据,并发送
通过端点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接收区的数据就还是原来的,不会跟着发送区的数据而变化
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分