完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
现在 使用 u*** 转vcp 功能,基本的功能以及实现了,现在的问题有如下几点:
1、使用 pc端发送 数据给单片机时,接收要如何处理 ,也就是这个 static int8_t CDC_Receive_HS (uint8_t* Buf, uint32_t *Len) 这个函数? static int8_t CDC_Receive_HS (uint8_t* Buf, uint32_t *Len) { /* USER CODE BEGIN 11 */ USBD_CDC_SetRxBuffer(&hU***DeviceHS, &Buf[0]); USBD_CDC_ReceivePacket(&hU***DeviceHS); return (USBD_OK); /* USER CODE END 11 */ } 上面的 Len 如何得到 ??? 2、连接回调函数 /** * @brief Connect callback. * @param hpcd: PCD handle * @retval None */ void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) { USB_bDeviceState = 1; // 连接成功 USBD_LL_DevConnected(hpcd->pData); printf("HAL_PCD_ConnectCallback ==== %d", USB_bDeviceState); } 程序貌似始终都没有进入 到这个函数里面来,但是程序可以发送数据到 pc端 3、测试程序 |
|
相关推荐
5个回答
|
|
回复添加不了本地图片?好麻烦。这么久没人回答,我来告诉你,金币给我。
你说的这两个函数,都只是把其他函数打包封装起来了而已,HAL就是不断的封装,封装到最后谁也不认识谁了。 你直接看底层,USB中断调用函数里有HAL_PCD_DataOutStageCallback(hpcd, epnum);和HAL_PCD_DataInStageCallback(hpcd, epnum);你的数据就是在中断里通过这两个函数收发的。再开USB初始化部分,比如USBD_CDC_Init (USBD_HandleTypeDef *pdev, uint8_t cfgidx)函数中调用了 USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, hcdc->RxBuffer, CDC_DATA_HS_OUT_PACKET_SIZE);那么单片机USB收到的数据就在你的RxBuffer中了。单片机USB向PC发送数据,同理。只要你相关代码,调用了底层相关的函数,就可以收发数据。HAL利用底层的函数,封装出各种各样的函数,就像你商场买衣服,你只需要选择你喜欢的,合适的。 大晚上打这么多字挺累,有疑问再聊。最后,记得给金币。辛苦钱啊。 |
|
|
|
学习一下。
|
|
|
|
易元空灭 发表于 2018-11-20 18:14 回复可以添加图片的,但要进入高级模式 多谢回答~ |
|
|
|
|
|
|
|
这个我又明白一些了,不断的封装
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2162 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1997 浏览 3 评论
4593 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2140 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2659 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 10:27 , Processed in 0.753457 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号