本帖最后由 forrest11 于 2018-12-20 00:46 编辑
使用cubemx的USB CDC 模式,在调用USB_CDC_Receive函数有疑问:
1. 疑问1:
下面是CubeMX产生的函数,我看到函数根本就没有用参数*Len,理解是否对?这是怎么回事?
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{
/* USER CODE BEGIN 6 */
USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
USBD_CDC_ReceivePacket(&hUsbDeviceFS);
return (USBD_OK);
/* USER CODE END 6 */
}
2. 疑问2:
我如果在main()调用:int8_t CDC_Receive_FS,则出现以下错误:
compiling main.c...
../Inc/usbd_cdc_if.h(135): error: #114: function "CDC_Receive_FS" was referenced but not defined
static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len);
可实际上这是CubeMx产生的函数(在usbd_cdc_if.c内定义),我也引用了:usbd_cdc_if.h,在usbd_cdc_if.h里面加上了此函数,还是没有解决此问题。
是什么导致此问题?
USB接收处理一般应该用哪个函数?
我使用的软件:MDK-ARM 5.23
芯片:STM32F107VC
谢谢!
|