【小安派试玩】基于HID协议的USB键盘测试

[复制链接]
查看1649 | 回复6 | 2023-8-28 19:53:48 | 显示全部楼层 |阅读模式
前言:
楼楼收到社区送的小安派已经有一段时间了,首先要感谢一下安信可社区举办的活动,期间除了跑了几次安信可官方自带小安派例程外楼楼也试着玩了一下别的功能,小有收获,今天楼楼和大家分享一下如何使用小安派实现hid键盘输入。




·效果展示

hello.gif




HID是Human Interface Device的缩写,它是一种符合USB HID协议的设备,包括鼠标、键盘、触控板等。HID设备使用标准的USB接口,可以通过驱动程序与计算机进行通信,在Windows操作系统中,HID设备通常由驱动程序自动识别并安装,无需手动配置。HID设备可以发送和接收数据,以实现鼠标的移动、点击和滚动或者键盘的输入等操作。


我们本次研究的代码比较简单,SDK自带例程中已经给我们写好了。
·例程位置

path.gif


·我们复制一份出来然后稍微修改一下代码,也可以直接编译这个例程(它会一直打a)
·简单分析下函数

1.jpg


·右键跳转看函数


2.jpg

1693223203625.png


在main.c中,我们定义了一个数组保存键盘按键的扫描码,在主函数中循环发送,然后编译下载,如果不出意外下载完成重启一下就可以跟楼楼一样打出hello,world了!

完整代码:

  1. #include "usbh_core.h"
  2. #include "bflb_mtimer.h"
  3. #include "board.h"

  4. extern void hid_keyboard_init(void);
  5. extern void hid_keyboard_test(uint8_t key);

  6. #define h 0x0B  //h
  7. #define e 0x08  
  8. #define l 0x0F
  9. #define o 0x12
  10. #define w 0x1A
  11. #define r 0x15
  12. #define d 0x07

  13. uint8_t key_data[]={h,e,l,l,o,0x36,w,o,r,l,d,0x63};

  14. int main(void)
  15. {
  16.     board_init();
  17.     hid_keyboard_init(); // 初始化HID键盘
  18.     bflb_mtimer_delay_ms(1000); // 延时一小会。
  19.     for(int i=0; i< (sizeof(key_data)/sizeof(key_data[0])) ;i++){
  20.         hid_keyboard_test(key_data[i]);  // 按下键
  21.         bflb_mtimer_delay_ms(10);  // 延时10ms
  22.         hid_keyboard_test(0x00);  // 释放
  23.         bflb_mtimer_delay_ms(200);
  24.     };

  25.     while (1) {
  26.         bflb_mtimer_delay_ms(500);
  27.     }
  28. }

复制代码

以上就是楼楼的经验分享,楼楼觉得这个还挺好玩的,希望可以帮到大家,楼楼比较菜,如果有啥地方有问题大家可以自己修改一下,也可以留言一起交流。

本帖被以下淘专辑推荐:

回复

使用道具 举报

iiv | 2023-8-28 21:35:45 | 显示全部楼层
插眼
回复

使用道具 举报

爱笑 | 2023-8-28 22:01:33 来自手机 | 显示全部楼层
高产!鼓励一下
用心做好保姆工作
回复 支持 反对

使用道具 举报

Mr.Tail | 2023-8-29 09:02:08 | 显示全部楼层
666,我现在也只会烧录固件而已,编程还是一塌糊涂
回复 支持 反对

使用道具 举报

业余菜狗 | 2023-8-29 09:12:54 来自手机 | 显示全部楼层
菜狗前来报道
回复 支持 反对

使用道具 举报

沈夜 | 2023-12-26 23:02:25 | 显示全部楼层
好东西 一会试试
回复 支持 反对

使用道具 举报

san | 2023-12-27 22:38:08 | 显示全部楼层
学习
回复

使用道具 举报

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

本版积分规则