具体实现会根据所选择的STM32型号和使用的开发环境有所不同,我们需要根据具体情况在`usbd_cdc_if.c`文件中实现以下操作: - 实现`USBD_CDC_Receive_HS`函数,用于接收主机发送的数据。 - 实现`CDC_Transmit_FS`函数,用于发送数据给主机。 - 实现`CDC_Receive_FS`函数,用于处理主机发送的控制命令。 此外,还需要...
16 static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) 17 { 18 /* USER CODE BEGIN 6 */ 19 CDC_Transmit_FS(Buf, *Len); 20 21 USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); 22 USBD_CDC_ReceivePacket(&hUsbDeviceFS); 23 return (USBD_OK); 24 /* USER CODE END...
默认的HAL库函数是只针对一路CDC的情况,所以我们需要修改成多路CDC操作函数,将端口参数传递出来,一共有下面几个函数: USBD_CDC_DataOut:USB接收函数回调,修改提供端口参数 CDC_Receive_FS(uint8_t *Buf, uint32_t *Len):USB CDC接收函数 CDC_Transmit_FS(uint8_t* Buf, uint16_t Len):USB CDC发送函数 ...
CDC_Receive_FS(uint8_t *Buf, uint32_t *Len):USB CDC接收函数 CDC_Transmit_FS(uint8_t* Buf, uint16_t Len):USB CDC发送函数 USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev) USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev) 先说说这几个函数的关系:CDC_Transmit_FS---调用--->USBD_CD...
CDC_Receive_HS() at usbd_cdc_if.c:456 0x801c758 USBD_CDC_DataOut() at usbd_cdc.c:699 0x8031592 USBD_LL_DataOutStage() at usbd_core.c:331 0x80318aa HAL_PCD_DataOutStageCallback() at usbd_conf.c:249 0x801e486 HAL_PCD_IRQHandler() at stm32f7xx_hal_pcd.c:359 0x802d264...
static int8_t CDC_Receive_HS(uint8_t* Buf, uint32_t *Len) { /* USER CODE BEGIN 11 */ uint16_t len = *Len; // printf("recv len:%d\n", len); // printf("recv:%s\n", Buf); if (!fifo_s_isfull(g_i2s_dma_send_fifo)) { fifo_s_puts(g_i2s_dma_send_fifo, (char*)...
stm32 usb同时引出一个ULPI接口,可以外接高速PHY,如果要使用外部高速PHY则选中Connectivity ->USB_OTG_HS。 PC机作为主机 选择Device_Only。 USB_OTG_FS 和 USB_OTG_HS 可以同时配置 Middleware and Software Packs ->USB_DEVICE配置 如图,选择cdc设备
USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, hcdc->RxBuffer,CDC_DATA_HS_OUT_PACKET_SIZE);...
uint8_t CDC_Transmit_HS(uint8_t* Buf, uint16_t Len)static int8_t CDC_Receive_FS (uint8_...
在usbd_cdc_if.c中添加代码: staticstruct{uint8_tBuffer[CDC_DATA_HS_OUT_PACKET_SIZE];intPosition, Size;charReadDone; } s_RxBuffer;charg_VCPInitialized; 修改自带的CDC_Receive_FS()函数如下: staticint8_tCDC_Receive_FS(uint8_t* Buf,uint32_t*Len){// USBD_CDC_SetRxBuffer(&hUsbDeviceFS,...