完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用stm32cubeMX工具生成驱动及相关代码:
Pinout配置USB_OTG_FS为Device_only模式: MiddleWares中选择USB_DEVICE为VCP clockconfig根据实际情况配置 后面配置默认就可以 接下来需要看一下工程的设置 这里默认Heap Size是0x400,需要改大,否则连接电脑后会有问题 接收中断调用USBD_CDC_DataOut()函数,Receive指向CDC_Receive_FS(),这里更新接收长度,而且会将接收buffer重置,并开始下一次接收,所以pc一次下发超过64字节时,超过部分会覆盖之前的值 我的接收和发送函数 void recive_from_vcp(uint8_t *buffer, uint8_t *rcv_buffer, USBD_HandleTypeDef *u***_handle) { USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) u***_handle->pClassData; if(hcdc->RxLength != 0) { CMD_Dealwith(rcv_buffer, hcdc->RxLength); hcdc->RxLength = 0; } USBD_CDC_SetRxBuffer(u***_handle, buffer); USBD_CDC_ReceivePacket(u***_handle); } 发送函数(函数里的buffer必须是static的,否则在setTxBuffer后,函数被释放,buffer的内存也被释放,发送的内容就保证不了了): void send_used_vcp(RingBuffer *packet_buffer, USBD_HandleTypeDef *u***_handle) { static uint8_t buffer[VCP_MAX_LEN]; uint8_t send_len; //取buffer不释放 send_len = user_buffer_peek(packet_buffer, buffer, VCP_MAX_LEN); if(send_len == 0) return; USBD_CDC_SetTxBuffer(u***_handle, buffer, send_len); //发送成功,释放buffer if(USBD_CDC_TransmitPacket(u***_handle) == USBD_OK) user_buffer_release_items(packet_buffer, send_len); } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1618 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1545 浏览 1 评论
979 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1597 浏览 2 评论
1864浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
646浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 01:12 , Processed in 0.684390 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号