STM32 HAL库 USB CDC程序只能接收一次数据

使用STM32Cube生成了USB CDC基础代码,HAL库版本号为1.6.0

SELF_POWERED: ENABLE
Physical: interface phy_itface

将初始化好的代码编译下载到设备中可直接接入计算机,并安装stsw-stm32102-VCP软件,配置该软件目录下的stmcdc.inf文件将其中的VID和PID配置为与设备相同的ID号,然后安装32位或者64位dpinst程序即可成功安装驱动。
stm32vcp程序实际上使用了windows的usbser.sys文件,因此使用精简版系统的需要自行安装usbser这个驱动文件。
接下来打开串口助手,打开对应的串口号,发送一组数据。在设备的usbd_cdc_if.c文件中

static int8_t CDC_Receive_HS(uint8_t* Buf, uint32_t *Len)

函数够正确接收到数据,但是串口助手发送第二组数据时卡死,其原因在于设备接收完数据后,没有使用

uint8_t  USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev)

函数等待下一次数据的到来。

你可能感兴趣的:(嵌入式)