打印
[STM32F1]

使用cubemx的USB CDC 模式,在调用USB_CDC_Receive函数有疑问

[复制链接]
1040|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pengf|  楼主 | 2021-12-1 22:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是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 */
}

使用特权

评论回复
沙发
dengdc| | 2021-12-1 22:40 | 只看该作者

还有什么现象?能再详细描述下吗?

使用特权

评论回复
板凳
pengf|  楼主 | 2021-12-1 22:40 | 只看该作者
我如果在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里面加上了此函数,还是没有解决此问题。
是什么导致此问题?

使用特权

评论回复
地板
jiajs| | 2021-12-1 22:43 | 只看该作者
USB接收处理一般应该用哪个函数?

使用特权

评论回复
5
pengf|  楼主 | 2021-12-1 22:46 | 只看该作者
我使用的软件:MDK-ARM
芯片:STM32F107VC
谢谢!

使用特权

评论回复
6
dengdc| | 2021-12-1 22:48 | 只看该作者
应该是少些库文件吧

使用特权

评论回复
7
dingy| | 2021-12-1 22:52 | 只看该作者
貌似代码不全啊

使用特权

评论回复
8
jiajs| | 2021-12-1 22:54 | 只看该作者
路径定义问题

使用特权

评论回复
9
zwll| | 2021-12-1 22:55 | 只看该作者
CDC_Receive_FS这个函数不是给你调用的,它是USB的回调函数。

使用特权

评论回复
10
dingy| | 2021-12-1 22:57 | 只看该作者
这个函数被调用的时候,说明已经接收到一批从USB主机传来的数据了,数据存放在Buf指向的空间,数据长度为*Len。

使用特权

评论回复
11
pengf|  楼主 | 2021-12-1 22:59 | 只看该作者
谢谢,我这些天已经知道了。还好现在已经调通了。

使用特权

评论回复
12
jiajs| | 2021-12-1 23:01 | 只看该作者
请问你是调用的哪个函数作为接收的,我现在也遇到了这个问题,

使用特权

评论回复
13
pengf|  楼主 | 2021-12-1 23:02 | 只看该作者

搞定了,呵呵,犯了低级错误……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

粉丝