概述:STM32作为USB主机识别无线线盘,通过一条micro USB转USB,将无线键盘对应的USB插上。
现在就想让STM32连接HID设备,但我不知道哪条语句算是连接上了,部分代码如下
[mw_shl_code=applescript,true] /* Initialize all configured peripherals */
MX_GPIO_Init();
MX_UART4_Init();
MX_USB_HOST_Init();//初始化主机库 添加支持的类 开始主机过程
/* USER CODE BEGIN 2 */
HID_Class.Init(&hUsbHostFS); //The function init the HID class
// USBH_HID_SetIdle(&hUsbHostFS,1,HID_KEYBRD_BOOT_CODE);
// USBH_HID_SetProtocol(&hUsbHostFS,HID_KEYBRD_BOOT_CODE);
type=USBH_HID_GetDeviceType(&hUsbHostFS); //返回设备类型
printf("type:%d
",type);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
MX_USB_HOST_Process(); //运行主机协议栈
/* USER CODE BEGIN 3 */
}[/mw_shl_code]
请各位师兄 学长指点一二,不求代码 ,只愿得一二思路,谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1.HID 类接口初始化
接口初始化过程中,根据设备端点描述符,会分配和打开一个中断 IN 端点和 / 或一个中断
OUT 端点。对于启动鼠标与键盘,仅使用中断 IN 管道。
2.HID 类请求
对 HID 鼠标 / 键盘设备发出的类相关控制请求如表 17 所述。
表 17. HID 类请求
类请求 说明
Set Idle 设定 HID 鼠标 / 键盘的轮询周期。在 HOST_CLASS_REQUEST 阶段发送该请求。
Set Protocol 将 HID 协议设为鼠标和 HID 的启动协议。在
HOST_CLASS_REQUEST 阶段发送该请求。
3.HID 类处理
使用中断 IN 管道,通过接收 HID 报告来处理鼠标 / 键盘操作。
由后台函数和 SOF 函数协同进行鼠标、键盘的数据处理
• SOF 函数处理与 SOF 事件同步的 IN 通信事务的发起。
• 后台函数处理数据的接收以及通过数据接收回调函数来通知应用层。
使用 USBH_HID_Handle 结构体来保存过程变量
4.USBH_HID_GetReport 通过控制通道获取报告数据 ( HID 启动鼠标 / 键盘例程中
没有用到)
USBH_HID_SetReport 通过控制通道发送报告数据 ( HID 启动鼠标 / 键盘例程中
没有用到)
USBH_HID_SetIdle 设定 HID 轮询周期
USBH_HID_EventCallback 提供给应用层的事件回调:当 IN 中断管道接收到鼠标或键
盘 HID 报告数据时被调用。
USBH_HID_SetProtocol 发送 Set_Protocol 控制请求
USBH_HID_GetHIDDescriptor 获取 HID 描述符
USBH_HID_GetHIDReportDescriptor 获取 HID 报告描述符 (启动鼠标 / 键盘例程中没有用到)
USBH_HID_GetDeviceType 返回 HID 设备类型:鼠标或键盘
USBH_HID_GetMouseInfo 获取 HID_MOUSE_Info_TypeDef 类型结构体中的鼠标报
告数据 (如下所示)
USBH_HID_GetKeybdInfo 获取 HID_KEYBD_Info_TypeDef 类型结构体中的键盘报告
数据 (如下所示)
USBH_HID_GetASCIICode 将键盘按键转换为 ASCII 码
这要看你的硬件上USB供电有没有开关控制,有的话这里就要进行开关控制.
cube开始没配置 仅做主机没勾选Active Vbus. 现在就想把USB连起,万事开头难的感觉,给你发消息 聊聊好吗 ?
你这确实是开头,嗯,祝好运.
一周热门 更多>