请选择 进入手机版 | 继续访问电脑版
搜索
查看: 1202|回复: 8

[已解决] STM32CubeMX F4xx USB-CDC例程,GCC踩坑

[复制链接]

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
发表于 2021-1-13 19:34:23 | 显示全部楼层 |阅读模式
因为移植一包STM32的程序,要用到USB-CDC功能,和arm-none-eabi-gcc编译器。随发现STM32CubeMX产生的CDC底包,在STM32F4xx上面,有问题。 先看看问题:

用STM32CubeMX,开一套F407的CDC(VCP)程序,分别用MDK和SW4STM32产生底包。
只加了一条打印语句CDC_TransmitFS(),发送HelloWorld字串到PC串口。
编译结果,MDK的一切正常。 SW4STM32的,PC端有VCP串口但是打不开,当然也收不到MCU的发送。

看来STM32CubeMX产生的底包,有Bug!!!

上面一样的做法,在F103的情况下,就都没有问题。

已解决,参考下面的回复。
回复

使用道具 举报

该用户从未签到

133

主题

4688

帖子

239

蝴蝶豆

版主

最后登录
2021-4-10
发表于 2021-1-13 20:46:01 | 显示全部楼层
我测试是正常的,虚拟串口正常使用。CDC作为主机,只能枚举到从设备的节点,后续不知道如何处理了。我用的是标准库+USB标准驱动。
回复 支持 反对

使用道具 举报

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
 楼主| 发表于 2021-1-13 20:56:39 | 显示全部楼层
安 发表于 2021-1-13 20:46
我测试是正常的,虚拟串口正常使用。CDC作为主机,只能枚举到从设备的节点,后续不知道如何处理了。我用的 ...

我说的是CubeMX+GCC,你用标准库试来干啥。 请用CubeMX。

同样是CubeMX,F103就没有问题。
回复 支持 反对

使用道具 举报

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
 楼主| 发表于 2021-1-14 00:00:35 | 显示全部楼层
安 发表于 2021-1-13 20:46
我测试是正常的,虚拟串口正常使用。CDC作为主机,只能枚举到从设备的节点,后续不知道如何处理了。我用的 ...

刚刚又进行了一些测试,发现问题肯定是发生在最新版的CubeMX+最新版的Fw_F4_v1.25.2之上。

网上找到的旧版的包,就没有这个问题:
https://github.com/vanbwodonk/STM32F407_DFU_BOOT

回复 支持 反对

使用道具 举报

该用户从未签到

133

主题

4688

帖子

239

蝴蝶豆

版主

最后登录
2021-4-10
发表于 2021-1-14 08:53:08 | 显示全部楼层
我的意思和GCC没有关系,我只是说我测试的过程和范围。我用GCC也没有问题,用的是Atollic TrueSTUDIO。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

118

帖子

0

蝴蝶豆

中级会员

最后登录
2021-9-10
发表于 2021-1-14 11:27:13 | 显示全部楼层
学习
回复

使用道具 举报

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
 楼主| 发表于 2021-1-14 22:21:55 | 显示全部楼层
安 发表于 2021-1-14 08:53
我的意思和GCC没有关系,我只是说我测试的过程和范围。我用GCC也没有问题,用的是Atollic TrueSTUDIO。 ...

我今天又测试了一下:
主要集中测试,最新版的CubeMX+最新版的Fw_F4_v1.25.2

MDK-ARM, Advanced, AC6,OK
MDK-ARM, Basic,       AC6,OK,  要把Heap加大
TrueSTUDIO, Advanced, GCC, OK,需要修改
TrueSTUDIO, Basic,       GCC, OK,需要修改

问题是,PC可以枚举成功串口,可是打不开串口,用打印语句CDC_TransmitFS()发送字串到PC当然也不行。

参考下面的,修改usbd_cdc_if.c,TrueSTUDIO的问题基本解决,不知道为什么MDK的code就不要这样修改:
https://stackoom.com/question/3w ... 0%E9%97%AE%E9%A2%98
https://stackoverflow.com/questi ... braries-for-stm32f4

回复 支持 反对

使用道具 举报

该用户从未签到

133

主题

4688

帖子

239

蝴蝶豆

版主

最后登录
2021-4-10
发表于 2021-1-15 08:56:43 | 显示全部楼层
可能是枚举的过程哪儿丢失了数据,建议用USB抓包工具进行抓包,分析一下原因,另外,在枚举过程中不要加断点。
回复 支持 反对

使用道具 举报

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
 楼主| 发表于 2021-1-19 10:29:57 | 显示全部楼层
安 发表于 2021-1-15 08:56
可能是枚举的过程哪儿丢失了数据,建议用USB抓包工具进行抓包,分析一下原因,另外,在枚举过程中不要加断 ...

搞掂了。 参考上面的链接,增加linecoding的定义就可以了。

但还是留下来悬念,同是CubeMX产生的代码,MDK就不需要修改。
GCC的(SW4STM32,TrueSTUDIO,Makefile,等)都需要对应修改。 这以后就麻烦了, 慎用GCC?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-3-29 23:12 , Processed in 0.167767 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表