[应用相关] USB驱动的回调函数问题

[复制链接]
 楼主| Garen2 发表于 2018-9-28 21:27 | 显示全部楼层 |阅读模式
开发环境MDK5.12 ,Keil RTX,MDK-Pro,STM32F407
想用USB跑MODBUS,不会写USB驱动,所以就用虚拟串口的程序修改下使用。也就是删除了虚拟串口中与串口有关的代码。使用USB接收PC数据和USB往PC发送数据。
现在的问题是这个回调函数
void USBD_CDC0_ACM_DataReceived( uint32_t len )
{
        uRxCnt += len;
}
当uRxCnt=191后就不再继续增加了。
有谁知道是怎么回事么?求助!
Ryze 发表于 2018-9-28 21:42 | 显示全部楼层
似乎不能简单修改完成数据交换,还是应该好好研究一下usb的描述文件
Varus 发表于 2018-9-28 21:56 | 显示全部楼层
在超级循环里面用USBD_CDC_ACM_ReadData函数读,然后用USBD_CDC_ACM_WriteData函数原样返回。后来发现有USBD_CDC0_ACM_DataReceived这个回调函数,就想使用这个回调函数。然后就出现这个问题了,不知道是哪里设置不对还是keil库的bug。
Snow7 发表于 2018-9-28 22:10 | 显示全部楼层
楼主可以把工程传一下吗?USBD_CDC0_ACM_DataReceived这个查找一下,他到底是用来做什么的。
android2 发表于 2018-9-28 22:18 | 显示全部楼层
void USBD_CDCn_ACM_DataReceived  ( uint32_t  len )  

Function indicating new data was received by USB CDC class Device (Virtual COM Port)

Parameters
[in] len number of bytes available to read.  

Returns
none.
The function USBD_CDCn_ACM_DataReceived notifies that there is newly received data available.

The argument len is number of bytes available to read. Modify this function to the application needs.

Note
Callback when new data is received on Bulk OUT Endpoint.
拉克丝 发表于 2018-9-28 22:37 | 显示全部楼层
升了个级试试
lefeng 发表于 2018-9-28 22:49 | 显示全部楼层
感觉这个函数时通知程序已经接收到usb的数据,并且告诉你收到了多少个字节数据,实际并没有将数据转移到用户缓冲区,增加一个数据读取功能看是否会有改善
heimaojingzhang 发表于 2018-10-1 19:24 | 显示全部楼层
难道是缓冲有问题?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

153

主题

734

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部