硬汉嵌入式论坛

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

[ThreadX全家桶] 在STM32CubeMX产生代码的基础上实现USB通信

[复制链接]

2

主题

10

回帖

16

积分

新手上路

积分
16
发表于 2022-3-3 21:59:17 | 显示全部楼层 |阅读模式
使用STM32CubeMX产生ThreadX和USBX代码后还需要的修改
1、 app_usbx_device.c中的UINTMX_USBX_Device_Init(VOID *memory_ptr)函数是空函数,也就是需要手工代码实现USBX的设备初始化,参考USBX -stm32mcu (stmicroelectronics.cn) https://wiki.stmicroelectronics.cn/stm32mcu/wiki/USBX_overview的内容,以及x-cube-azrtos-f4-main的内容。
2、 在app_azure_rtos.c中的VOIDtx_application_define(VOID *first_unused_memory)函数建立了1024bytes的bytePool给USBX使用
  if(tx_byte_pool_create(&ux_device_app_byte_pool, "Ux App memorypool", ux_device_byte_pool_buffer, UX_DEVICE_APP_MEM_POOL_SIZE) !=TX_SUCCESS),其中的UX_DEVICE_APP_MEM_POOL_SIZE定义为1024,但在app_usbx_device.c的UINT MX_USBX_Device_Init(VOID *memory_ptr)函数中要在这个bytePool中分配4096的存储块,所以需要将上面的UX_DEVICE_APP_MEM_POOL_SIZE定义为(8*1024)才能正常工作。
3、 修改uint8_t USBD_HID_MOUSE_ReportDesc[USBD_HID_MOUSE_REPORT_DESC_SIZE]为双向64字节HID通信,但现在PC可以发送数据(首字节丢失,5次发送后没有响应)不能接收数据,是因为发送数据字节超过63字节,最多只能发送63字节。收发的首个字节都是协议加入的内容,不能发送用户内容。
4、现在的问题就是通过UINT app_usbx_device_thread_hid_callback()函数可以看到PC传来的数据,但处理方法不对,导致PC端发送几次后,USBX停止响应。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2022-3-4 00:57:44 | 显示全部楼层
谢谢分享,后面搞下USBX通信。
回复

使用道具 举报

1

主题

10

回帖

13

积分

新手上路

积分
13
发表于 2023-9-4 18:24:01 | 显示全部楼层
嗨喽,usbx的custom整出来了吗?遇到了跟你一样的问题,想加个联系方式!谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 19:36 , Processed in 0.222313 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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