【灵动微电子MM32F5330测评】+07 USB模拟HID设备
一:实验目的利用USB模拟HID功能,通过键盘或者按键移动鼠标USB HID知识介绍: USB HID类是USB设备的一个标准设备类,包括的设备非常多。HID类设备定义它属于人机交互操作的设备,用于控制计算机操作的一些方面,如USB鼠标、USB键盘、USB游戏操纵杆等。但HID设备类不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。USB HID设备的一个好处就是操作系统自带了HID类的驱动程序,而用户无需去开发驱动程序,只要使用API系统调用即可完成通信。 主芯片支持:1 个 USB 2.0 全速控制器,支持工作在主机(Host) 和设备(Device)模式,遵循全速 USB 设备(12 Mbps)标准, 内置 16 个双向端点,内置 PHY 由于例程中没有USB的底层驱动,需要我们自行下载:https://mindsdk.mindmotion.com.cn首次登录时需要注册一下:注册也非常简单 2:选择自己常用的编译环境,选择开发板,点击生产代码 3:下载tinyusb->tud_hid_keyboard中的底层代码 4:打开代码进行修改测试 void hid_task(void); /*------------- MAIN -------------*/int main(void){BOARD_Init();tusb_init(); while (1){ hid_task(); tud_task();} } static void send_hid_report(uint8_t report_id, uint32_t btn){// skip if hid is not ready yetif ( !tud_hid_ready() ) return; switch(report_id){ case REPORT_ID_KEYBOARD: { // use to avoid send multiple consecutive zero report for keyboard static bool has_keyboard_key = false; if ( btn ) { uint8_t keycode = { 0 }; keycode = HID_KEY_A; tud_hid_keyboard_report(REPORT_ID_KEYBOARD, 0, keycode); has_keyboard_key = true; }else { // send empty key report if previously has key pressed if (has_keyboard_key) tud_hid_keyboard_report(REPORT_ID_KEYBOARD, 0, NULL); has_keyboard_key = false; } } break; // case REPORT_ID_MOUSE:// {// int8_t const delta = 5; // // no button, right + down, no scroll, no pan// tud_hid_mouse_report(REPORT_ID_MOUSE, 0x00, delta, delta, 0, 0);// }// break; default: break;}} 实现现象:打开设备管理可以正常识别到USB模拟HID设备
感谢分享,辛苦了 感谢分享 代码这么少的吗?有工具,真方便,减少移植出现的各种问题。
页:
[1]