高级会员
- 积分
- 974
- 金钱
- 974
- 注册时间
- 2014-7-4
- 在线时间
- 236 小时
|
发表于 2023-7-19 10:15:08
|
显示全部楼层
本帖最后由 freewayflyer 于 2023-7-19 11:03 编辑
我参照着移植到L4系列上,单独CDC发送正常,做成复合设备后进USBD_BUSY,可能是什么原因?(cubemx版本不一样,生产的发送函数有点区别,主要是有hcdc->TxState判断)
- uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)
- {
- uint8_t result = USBD_OK;
- /* USER CODE BEGIN 7 */
- USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData;
- if (hcdc->TxState != 0){
- return USBD_BUSY;
- }
- USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len);
- result = USBD_CDC_TransmitPacket(&hUsbDeviceFS);
- /* USER CODE END 7 */
- return result;
- }
复制代码
下边是你的程序里的发送函数
- uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)
- {
- uint8_t result = USBD_OK;
- /* USER CODE BEGIN 7 */
-
- USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)hUsbDeviceFS.pClassData;
- hcdc->TxState = 0;
- USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len);
- result = USBD_CDC_TransmitPacket(&hUsbDeviceFS);
-
- /* USER CODE END 7 */
- return result;
- }
复制代码 |
|