打印
[应用相关]

USB驱动的回调函数问题

[复制链接]
1453|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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这个查找一下,他到底是用来做什么的。

使用特权

评论回复
5
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.

使用特权

评论回复
6
拉克丝| | 2018-9-28 22:37 | 只看该作者
升了个级试试

使用特权

评论回复
7
lefeng| | 2018-9-28 22:49 | 只看该作者
感觉这个函数时通知程序已经接收到usb的数据,并且告诉你收到了多少个字节数据,实际并没有将数据转移到用户缓冲区,增加一个数据读取功能看是否会有改善

使用特权

评论回复
8
heimaojingzhang| | 2018-10-1 19:24 | 只看该作者
难道是缓冲有问题?

使用特权

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

本版积分规则

153

主题

734

帖子

3

粉丝