arilink_tao 发表于 2021-7-13 18:01:20

ThreadX+USBX CDC+HID(游戏控制器)移植

本帖最后由 arilink_tao 于 2021-7-13 18:09 编辑

0.首先准备USBX的源码 本次使用的是6.16版本的USBX 具体使用USB的类型是Device+HIDCPU是STM32H750 暂时没有使用老大的基础历程 正在使用V7开发板进行移植
1.移植USBX需要用的源码如下表所示 其中USBX/Core的内容不变 USBX/Stack和USBX/Class的内容需要根据实际使用USB类型进行调整 USBX/Controllers由硬件商提供 如ST提供STM32的Controllers


typepathfile name
USBX/Coreusbx-6.1.6_rel\common\core\srcux_system_error_handler.c→ux_utility_virtual_address.c
USBX/Stackusbx-6.1.6_rel\common\core\srcux_device_class_dpump_activate.c→ux_device_stack_uninitialize.c
USBX/ClassE:\usbx-6.1.6_rel_2\usbx-6.1.6_rel\common\usbx_device_classes\src
USBX/Controllers
USBX/PortsE:\usbx-6.1.6_rel_2\usbx-6.1.6_rel\ports\cortex_m7\gnu\inc
2.讲上述文件添加到MDK工程里 并包含头文件路径

https://secure.wostatic.cn/static/wecKcB5LGHSkyFwme3cGwT/image.png
https://secure.wostatic.cn/static/wecKcB5LGHSkyFwme3cGwT/image.png
3.本次是手动移植 没有通过CubeMX生成USB驱动代码 因此需要手动拷贝HAL库USB驱动代码到工程文件夹下 并添加到工程中

https://secure.wostatic.cn/static/oAo3oeh9buSEULMQt4Nyqb/image.png
4.同样的 由于没有使用CubeMX生成工程 需要手动调整stm32h7xx_hal_conf.h文件里的Module Selection配置打开#define HAL_PCD_MODULE_ENABLED
5.同样的 需要手动添加usb_otg.c到工程里 便于后面调用
6.同样的 stm32h7xx_it.c里需要手动添加USB的终端 否则threadx usbx无法正常获取中断信息并进行相应
7.调整系统时钟 以开启USB系统时钟
8.编译 下载 此时设备管理器中会多出一个虚拟串口和一个游戏控制器 证明USBX移植成功当前还是有些地方不是很明白
程序放在下面了 有感兴趣的同学可以一起交流




eric2013 发表于 2021-7-14 01:38:20

非常感谢楼主分享{:34:}
页: [1]
查看完整版本: ThreadX+USBX CDC+HID(游戏控制器)移植