硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3930|回复: 25
收起左侧

ThreadX+USBX HID CDC复合设备失败

  [复制链接]

3

主题

24

回帖

33

积分

新手上路

积分
33
发表于 2021-4-17 09:22:04 | 显示全部楼层 |阅读模式
软件:MDK 5.34 :6.16  USBX :6.16 硬件:V7开发板
过程:
        1.在基础工程上移植了ThreadX 6.1.6
        2.在1的基础上参考ST官方例程移植USBX  链接(https://github.com/STMicroelectronics/x-cube-azrtos-h7
        3.增加对应的HAL库与文件
        4.将USBX里使用的串口1改成串口3
        5.修改时钟 与ST例程保持一致
        6.在main.c中添加USB初始化程序
现象:
        1.编译没有错误和警告
        2.ThreadX可以正常运行
        3.USB程序启动4个程序 但是打印出来的只有两个
        4.Windows设备管理器里没有新设备出现
        5.单步调试发现USB相关程序正常指示

附件上传了工程  请各位前辈帮忙查找问题

ThreadX&USBX.7z

3.22 MB, 下载次数: 18

工程

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2021-4-17 09:31:27 | 显示全部楼层
USBX的复合得后面有时间了专门研究下。
使用复合设备,注意相关的USB端点都正常打开没
回复

使用道具 举报

3

主题

24

回帖

33

积分

新手上路

积分
33
 楼主| 发表于 2021-4-19 11:02:06 | 显示全部楼层
eric2013 发表于 2021-4-17 09:31
USBX的复合得后面有时间了专门研究下。
使用复合设备,注意相关的USB端点都正常打开没

我再试试不复合有没有问题
回复

使用道具 举报

3

主题

24

回帖

33

积分

新手上路

积分
33
 楼主| 发表于 2021-4-19 14:31:00 | 显示全部楼层
刚才又检查了一遍程序发现,ST官方的历程里是吧程序放置在制定的地方的 我当前是没有进行类似的操作 会不会跟这个有关系?

1

1

2

2

回复

使用道具 举报

3

主题

24

回帖

33

积分

新手上路

积分
33
 楼主| 发表于 2021-4-19 16:45:42 | 显示全部楼层
上面的方法+ 单独CDC设备也是不行  有个奇怪的问题是 USB的任务开启之后 按键1 串口打印出的CPU占用一直是0  而且有种没有打印完的感觉

1

1

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2021-4-20 07:30:23 | 显示全部楼层
arilink_tao 发表于 2021-4-19 14:31
刚才又检查了一遍程序发现,ST官方的历程里是吧程序放置在制定的地方的 我当前是没有进行类似的操作 会不会 ...

跟这个关系不大。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2021-4-20 07:30:50 | 显示全部楼层
arilink_tao 发表于 2021-4-19 16:45
上面的方法+ 单独CDC设备也是不行  有个奇怪的问题是 USB的任务开启之后 按键1 串口打印出的CPU占用一直是0 ...

任务堆栈大小和任务优先级有调整过没,可以调整下试试。
回复

使用道具 举报

3

主题

24

回帖

33

积分

新手上路

积分
33
 楼主| 发表于 2021-4-20 14:32:09 | 显示全部楼层
1.尝试过调整优先级和任务堆栈大小 不起作用  因为USB所用的内存是静态分配的
2.经过仔细对比 发现ST例程对应的开发板是带有USB PHY的HS 我把HS替换成FS后  Windows设备管理器有变化 但提示无法获取设备描述符
3.我参考您的综合例子 改变了时钟配置 (时钟这部分您也是用了PHY 我关了) 也是不行
4.根据微软官方文档 修改了描述符 也是不起作用
5.我上传一个CDC的新工程上来   windows是检测到设备的 但是描述符不正确
回复

使用道具 举报

3

主题

24

回帖

33

积分

新手上路

积分
33
 楼主| 发表于 2021-4-20 14:34:08 | 显示全部楼层
新的工程  ThreadX+USBX CDC

Threadx - CDC(only).7z

3.1 MB, 下载次数: 12

CDC 设备描述符请求失败

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2021-4-22 08:03:10 | 显示全部楼层
arilink_tao 发表于 2021-4-20 14:34
新的工程  ThreadX+USBX CDC

看来有必要让官方提供几个复合设备的Demo
回复

使用道具 举报

19

主题

125

回帖

182

积分

初级会员

积分
182
发表于 2022-4-17 23:16:30 | 显示全部楼层
eric2013 发表于 2021-4-22 08:03
看来有必要让官方提供几个复合设备的Demo

官方出了复合设备的例程没有?比如MSC+CDC+HID。。。
回复

使用道具 举报

2

主题

2

回帖

8

积分

新手上路

积分
8
发表于 2022-5-1 02:45:23 来自手机 | 显示全部楼层
MSC+CDC+HID. . .
回复

使用道具 举报

2

主题

2

回帖

8

积分

新手上路

积分
8
发表于 2022-5-1 02:48:45 | 显示全部楼层
MSC+CDC+HID. . .
STM32 Composite
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-5-3 23:44:54 | 显示全部楼层
alambe94 发表于 2022-5-1 02:48
MSC+CDC+HID. . .
STM32 Composite

牛逼,这个太厉害了傻瓜式操作!!!!!
回复

使用道具 举报

19

主题

125

回帖

182

积分

初级会员

积分
182
发表于 2022-5-31 10:51:17 | 显示全部楼层
alambe94 发表于 2022-5-1 02:48
MSC+CDC+HID. . .
STM32 Composite

已为你点了颗星。
回复

使用道具 举报

19

主题

125

回帖

182

积分

初级会员

积分
182
发表于 2022-5-31 13:34:39 | 显示全部楼层
本帖最后由 ccschen 于 2022-6-1 00:13 编辑

MSC+CDC+HID. . .
STM32 Composite
刚才才F407上试了下,可以运行。只是L151上不得行,已经选了F1类驱动。然后数据线也上拉了的。
最新:L151也可以了,L151的主频弄到32M,最高,然后初始化弄到RTOS任务里面。因为之前只把RTOS初始化函数屏蔽了,USB初始化弄到主函数里面,结果定时器时基是按RTOS方式初始化的。
回复

使用道具 举报

3

主题

21

回帖

30

积分

新手上路

积分
30
发表于 2022-8-29 10:41:41 | 显示全部楼层
Threadx USBX需要依赖Threadx运行吗?能移植到FreeRTOS工程上面吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2022-8-30 00:16:19 | 显示全部楼层
惟若晨星 发表于 2022-8-29 10:41
Threadx USBX需要依赖Threadx运行吗?能移植到FreeRTOS工程上面吗?

不依赖,可以独立出来了。
回复

使用道具 举报

13

主题

192

回帖

231

积分

高级会员

积分
231
发表于 2022-10-12 16:08:15 | 显示全部楼层
楼主问题解决了吗?我也碰到了同样的问题
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2022-10-13 00:57:46 | 显示全部楼层
zhang0352505 发表于 2022-10-12 16:08
楼主问题解决了吗?我也碰到了同样的问题

这个有专门的二合一例子,运行这个例子也不正常吗,这个是后来加的

image.png
回复

使用道具 举报

13

主题

192

回帖

231

积分

高级会员

积分
231
发表于 2022-10-13 09:06:41 | 显示全部楼层
我移植的是一个单个的也不行
{bfb6433b-deed-4452-b4fc-366f01d53aad}.png
程序都正常,就是在电脑端是个黄色叹号,不能识别,还在找原因
回复

使用道具 举报

13

主题

192

回帖

231

积分

高级会员

积分
231
发表于 2022-10-13 11:15:18 | 显示全部楼层
我的找到原因了。。垃圾CubeMX生成的程序有问题。
image.png
USBD_CDCACM_EPINCMD_ADDR生成的是0x81,与USBD_CDCACM_EPIN_ADDR一样了
跟提供的教程比较了一下,发现这个值应该是0x82,改完就好了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2022-10-13 15:34:39 | 显示全部楼层
zhang0352505 发表于 2022-10-13 11:15
我的找到原因了。。垃圾CubeMX生成的程序有问题。

USBD_CDCACM_EPINCMD_ADDR生成的是0x81,与USBD_CDCAC ...

回复

使用道具 举报

8

主题

155

回帖

179

积分

初级会员

H7 TOOL 大法好!

积分
179
发表于 2022-10-22 09:07:11 | 显示全部楼层
老师好!  平台是 GD32F307  我在FreeRTOS 中加了 USB CDC, 发现一个奇怪的现象, 至今未解决,
情况:
  一共有33个任务,USB CDC优先级是 27 ,  USB CDC能正常工作 , 走Modbus协议 , 运行着 运行着 有时候发任何指令 都无响应(打印接收,啥也没有), 电脑能识别USB CDC设备 ,  老师能否指点一下,感激不尽!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2022-10-22 13:12:11 | 显示全部楼层
312456990 发表于 2022-10-22 09:07
老师好!  平台是 GD32F307  我在FreeRTOS 中加了 USB CDC, 发现一个奇怪的现象, 至今未解决,
情况:
  一 ...

这任务开的太多了,OS本身的调度占用太大负荷了。

仅开USB任务,其它任务创建先注释掉,问题好排查点。
回复

使用道具 举报

8

主题

155

回帖

179

积分

初级会员

H7 TOOL 大法好!

积分
179
发表于 2022-10-22 14:03:37 | 显示全部楼层
eric2013 发表于 2022-10-22 13:12
这任务开的太多了,OS本身的调度占用太大负荷了。

仅开USB任务,其它任务创建先注释掉,问题好排查点 ...

感谢老师,我先试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 18:28 , Processed in 0.354223 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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