[STM32F4]

STM32F4Cube库CDC类试用手记(含USB全速/高速和VC测试程序)

[复制链接]
楼主: 碧云天书
手机看帖
扫描二维码
随时随地手机跟帖
勿灬忘| | 2019-4-10 11:52 | 显示全部楼层
为什么我烧录到板子里是无法识别的设备啊!萌新一枚,有大佬指教一下么?我用的芯片是f405VET6。

使用特权

评论回复
碧云天书|  楼主 | 2019-4-11 22:53 | 显示全部楼层
xiaoxiao0932 发表于 2019-4-2 13:36
@碧云天书  楼主,我在使用时遇到很大的问题,从flash中读取数据发送到上位机,
循环读取组成数据包,USB发 ...

如果你的数据长度超过了一次传输的最大长度,USB库函数会自动拆分传输。你只需要把数据缓冲区交给库函数USBD_CDC_SetTxBuffer就行了,用不着自己拆分。
HAL库早期的时候有64字节传输错误,请你参考《USB CDC类开发时,无法发送64整数倍的数据(续)》https://bbs.21ic.com/icview-1708972-1-1.html,看看是不是这个问题。简单的规避方法就是在传输的时候,不要按64的整数倍传输。

使用特权

评论回复
碧云天书|  楼主 | 2019-4-11 22:55 | 显示全部楼层
勿灬忘 发表于 2019-4-10 11:52
为什么我烧录到板子里是无法识别的设备啊!萌新一枚,有大佬指教一下么?我用的芯片是f405VET6。
...

我没有在F405上试验过。建议你换成F407芯片,先试一下,然后再移植到F405上。

使用特权

评论回复
海中水| | 2019-4-19 17:06 | 显示全部楼层
不错!

使用特权

评论回复
mnh12232| | 2019-4-21 18:45 | 显示全部楼层
USB-HAL库标记!

使用特权

评论回复
勿灬忘| | 2019-4-22 09:58 | 显示全部楼层
本帖最后由 勿灬忘 于 2019-4-22 10:35 编辑
碧云天书 发表于 2019-4-11 22:55
我没有在F405上试验过。建议你换成F407芯片,先试一下,然后再移植到F405上。 ...

后来我换成407的了,还是识别unknown设备,我百度查了一下,说是枚举过程失败了。就再debug看了一下,走的是告诉模式,程序默认的就是高速模式么?但是我看你们测得都是全速呀!是还要设置什么东西?谢谢大佬指教,我才开始学习这个,好多东西都看不太懂,麻烦了!我烧录之后是这样的,不应该是多一个com口出来么? 968845cbd252273bc0.png 还有调试的时候一直是高速模式,不是我想的全速,要怎么修改啊,文档里好像没看到额。。

使用特权

评论回复
勿灬忘| | 2019-4-22 10:31 | 显示全部楼层
本帖最后由 勿灬忘 于 2019-4-22 10:36 编辑

902125cbd262f6c8b4.png 454485cbd2759a6bae.png 这是debug的过程,只走了高速模式的部分。

使用特权

评论回复
碧云天书|  楼主 | 2019-4-24 10:11 | 显示全部楼层
勿灬忘 发表于 2019-4-22 10:31
这是debug的过程,只走了高速模式的部分。

这是条件编译。在项目设置中定义了USE_USB_HS,就会编译成高速模式。这时候,你的开发板上需要有USB3300这种USB PHY。如果没有,就要删除项目设置中的USE_USB_HS定义。

使用特权

评论回复
碧云天书|  楼主 | 2019-4-24 10:13 | 显示全部楼层
勿灬忘 发表于 2019-4-22 09:58
后来我换成407的了,还是识别unknown设备,我百度查了一下,说是枚举过程失败了。就再debug看了一下,走的 ...


枚举成功,会在串口树上多一个设备,而不是在USB设备树上。
你可以用USBlyzer软件看枚举过程。

使用特权

评论回复
海中水| | 2019-4-24 14:04 | 显示全部楼层
不错!支持一下。

使用特权

评论回复
chenlmm| | 2019-5-31 22:43 | 显示全部楼层
我是新手,还才开始usb开发,能得到楼主的好帖,先赞一下

使用特权

评论回复
chenlmm| | 2019-6-5 12:26 | 显示全部楼层
@楼主。我是刚学习usb开发,打开你的例程,看到pc串口设置是:DCB dcb; GetCommState(hCom, &dcb);
        dcb.BaudRate = 115200;                                                //波特率为115200
        dcb.ByteSize = 8;                                                        //每个字节有8位
        dcb.Parity = NOPARITY;                                                //无奇偶校验位
        dcb.StopBits = ONESTOPBIT;                                        //1个停止位
        SetCommState(hCom, &dcb);
但例程中显示的速度是:*****kB/s,这不是与上面的设置dcb.BaudRate = 115200;        冲突的?显示的速度是:*****kB/s是如何得来的,望指教,谢谢。
522185cf742e0b4cd4.png

使用特权

评论回复
碧云天书|  楼主 | 2019-6-25 20:33 | 显示全部楼层
chenlmm 发表于 2019-6-5 12:26
@楼主。我是刚学习usb开发,打开你的例程,看到pc串口设置是:DCB dcb; GetCommState(hCom, &dcb);
        dcb.Ba ...

在USB虚拟串口中,波特率是没有用的,USB会以最快速度传输

使用特权

评论回复
zhuotuzi| | 2019-6-26 00:18 | 显示全部楼层
这么热门,看看。

使用特权

评论回复
wewrwe| | 2019-7-3 14:54 | 显示全部楼层
感谢楼主的代码 刚好最近用到了 解决了困扰我好多天的问题

使用特权

评论回复
18827510000| | 2019-8-5 08:49 | 显示全部楼层
楼主好贴,但为什么下载下来的没法解压啊?

使用特权

评论回复
xixi2017| | 2019-8-8 12:37 | 显示全部楼层
本帖最后由 xixi2017 于 2019-8-8 12:39 编辑

历害了

使用特权

评论回复
xixi2017| | 2019-8-11 13:15 | 显示全部楼层
感谢分享

使用特权

评论回复
yuhuitingde2| | 2019-9-25 16:21 | 显示全部楼层
为什么我下载下来解压不了呢

使用特权

评论回复
yuhuitingde2| | 2019-9-25 18:14 | 显示全部楼层
下载解压不了

使用特权

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

本版积分规则