[STM32F4] 当uRxCnt=191后就不再继续增加了。

[复制链接]
 楼主| ousj 发表于 2020-6-3 23:48 | 显示全部楼层 |阅读模式
STM32F407
想用USB跑MODBUS,不会写USB驱动,所以就用虚拟串口的程序修改下使用。也就是删除了虚拟串口中与串口有关的代码。使用USB接收PC数据和USB往PC发送数据。
现在的问题是这个回调函数
void USBD_CDC0_ACM_DataReceived( uint32_t len )
{
        uRxCnt += len;
}
stly 发表于 2020-6-3 23:52 | 显示全部楼层
似乎不能简单修改完成数据交换
supernan 发表于 2020-6-3 23:55 | 显示全部楼层
还是应该好好研究一下usb的描述文件
liuzaiy 发表于 2020-6-3 23:58 | 显示全部楼层
在超级循环里面用USBD_CDC_ACM_ReadData函数读,然后用USBD_CDC_ACM_WriteData函数原样返回。后来发现有USBD_CDC0_ACM_DataReceived这个回调函数,就想使用这个回调函数。然后就出现这个问题了,不知道是哪里设置不对还是keil库的bug。
chuxh 发表于 2020-6-8 20:04 | 显示全部楼层
楼主可以把工程传一下吗?USBD_CDC0_ACM_DataReceived这个查找一下,他到底是用来做什么的。
llljh 发表于 2020-6-8 20:09 | 显示全部楼层
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.
xxrs 发表于 2020-6-8 20:13 | 显示全部楼层
升了个级试试
chenjunt 发表于 2020-6-8 20:16 | 显示全部楼层
感觉这个函数时通知程序已经接收到usb的数据,并且告诉你收到了多少个字节数据,实际并没有将数据转移到用户缓冲区
xxmmi 发表于 2020-6-8 20:19 | 显示全部楼层
增加一个数据读取功能看是否会有改善
houcs 发表于 2020-6-8 20:23 | 显示全部楼层
难道是缓冲有问题?
 楼主| ousj 发表于 2020-6-8 20:27 | 显示全部楼层

好的,我明天去单位试一下,多谢各位大侠了哈        
您需要登录后才可以回帖 登录 | 注册

本版积分规则

712

主题

7557

帖子

1

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