arilink_tao 发表于 2021-4-17 09:22:04

ThreadX+USBX HID CDC复合设备失败

软件:MDK 5.34 :6.16USBX :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相关程序正常指示

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

eric2013 发表于 2021-4-17 09:31:27

USBX的复合得后面有时间了专门研究下。
使用复合设备,注意相关的USB端点都正常打开没

arilink_tao 发表于 2021-4-19 11:02:06

eric2013 发表于 2021-4-17 09:31
USBX的复合得后面有时间了专门研究下。
使用复合设备,注意相关的USB端点都正常打开没

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

arilink_tao 发表于 2021-4-19 14:31:00

刚才又检查了一遍程序发现,ST官方的历程里是吧程序放置在制定的地方的 我当前是没有进行类似的操作 会不会跟这个有关系?

arilink_tao 发表于 2021-4-19 16:45:42

上面的方法+ 单独CDC设备也是不行有个奇怪的问题是 USB的任务开启之后 按键1 串口打印出的CPU占用一直是0而且有种没有打印完的感觉

eric2013 发表于 2021-4-20 07:30:23

arilink_tao 发表于 2021-4-19 14:31
刚才又检查了一遍程序发现,ST官方的历程里是吧程序放置在制定的地方的 我当前是没有进行类似的操作 会不会 ...

跟这个关系不大。

eric2013 发表于 2021-4-20 07:30:50

arilink_tao 发表于 2021-4-19 16:45
上面的方法+ 单独CDC设备也是不行有个奇怪的问题是 USB的任务开启之后 按键1 串口打印出的CPU占用一直是0 ...

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

arilink_tao 发表于 2021-4-20 14:32:09

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

arilink_tao 发表于 2021-4-20 14:34:08

新的工程ThreadX+USBX CDC

eric2013 发表于 2021-4-22 08:03:10

arilink_tao 发表于 2021-4-20 14:34
新的工程ThreadX+USBX CDC

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

ccschen 发表于 2022-4-17 23:16:30

eric2013 发表于 2021-4-22 08:03
看来有必要让官方提供几个复合设备的Demo

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

alambe94 发表于 2022-5-1 02:45:23

MSC+CDC+HID. . .

alambe94 发表于 2022-5-1 02:48:45

MSC+CDC+HID. . .
STM32 Composite

leesum 发表于 2022-5-3 23:44:54

alambe94 发表于 2022-5-1 02:48
MSC+CDC+HID. . .
STM32 Composite

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

ccschen 发表于 2022-5-31 10:51:17

alambe94 发表于 2022-5-1 02:48
MSC+CDC+HID. . .
STM32 Composite

已为你点了颗星。

ccschen 发表于 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方式初始化的。

惟若晨星 发表于 2022-8-29 10:41:41

Threadx USBX需要依赖Threadx运行吗?能移植到FreeRTOS工程上面吗?

eric2013 发表于 2022-8-30 00:16:19

惟若晨星 发表于 2022-8-29 10:41
Threadx USBX需要依赖Threadx运行吗?能移植到FreeRTOS工程上面吗?

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

zhang0352505 发表于 2022-10-12 16:08:15

楼主问题解决了吗?我也碰到了同样的问题

eric2013 发表于 2022-10-13 00:57:46

zhang0352505 发表于 2022-10-12 16:08
楼主问题解决了吗?我也碰到了同样的问题
这个有专门的二合一例子,运行这个例子也不正常吗,这个是后来加的


zhang0352505 发表于 2022-10-13 09:06:41

我移植的是一个单个的也不行

程序都正常,就是在电脑端是个黄色叹号,不能识别,还在找原因

zhang0352505 发表于 2022-10-13 11:15:18

我的找到原因了。。垃圾CubeMX生成的程序有问题。

USBD_CDCACM_EPINCMD_ADDR生成的是0x81,与USBD_CDCACM_EPIN_ADDR一样了
跟提供的教程比较了一下,发现这个值应该是0x82,改完就好了

eric2013 发表于 2022-10-13 15:34:39

zhang0352505 发表于 2022-10-13 11:15
我的找到原因了。。垃圾CubeMX生成的程序有问题。

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

{:8:}

312456990 发表于 2022-10-22 09:07:11

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

eric2013 发表于 2022-10-22 13:12:11

312456990 发表于 2022-10-22 09:07
老师好!平台是 GD32F307我在FreeRTOS 中加了 USB CDC, 发现一个奇怪的现象, 至今未解决,
情况:
一 ...

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

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

312456990 发表于 2022-10-22 14:03:37

eric2013 发表于 2022-10-22 13:12
这任务开的太多了,OS本身的调度占用太大负荷了。

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

感谢老师,我先试试{:34:}
页: [1]
查看完整版本: ThreadX+USBX HID CDC复合设备失败