前言:
楼楼收到社区送的小安派已经有一段时间了,首先要感谢一下安信可社区举办的活动,期间除了跑了几次安信可官方自带小安派例程外楼楼也试着玩了一下别的功能,小有收获,今天楼楼和大家分享一下如何使用小安派实现hid键盘输入。
·效果展示
HID是Human Interface Device的缩写,它是一种符合USB HID协议的设备,包括鼠标、键盘、触控板等。HID设备使用标准的USB接口,可以通过驱动程序与计算机进行通信,在Windows操作系统中,HID设备通常由驱动程序自动识别并安装,无需手动配置。HID设备可以发送和接收数据,以实现鼠标的移动、点击和滚动或者键盘的输入等操作。
我们本次研究的代码比较简单,SDK自带例程中已经给我们写好了。
·例程位置
·我们复制一份出来然后稍微修改一下代码,也可以直接编译这个例程(它会一直打a)
·简单分析下函数
·右键跳转看函数
在main.c中,我们定义了一个数组保存键盘按键的扫描码,在主函数中循环发送,然后编译下载,如果不出意外下载完成重启一下就可以跟楼楼一样打出hello,world了!
完整代码:
- #include "usbh_core.h"
- #include "bflb_mtimer.h"
- #include "board.h"
- extern void hid_keyboard_init(void);
- extern void hid_keyboard_test(uint8_t key);
- #define h 0x0B //h
- #define e 0x08
- #define l 0x0F
- #define o 0x12
- #define w 0x1A
- #define r 0x15
- #define d 0x07
- uint8_t key_data[]={h,e,l,l,o,0x36,w,o,r,l,d,0x63};
- int main(void)
- {
- board_init();
- hid_keyboard_init(); // 初始化HID键盘
- bflb_mtimer_delay_ms(1000); // 延时一小会。
- for(int i=0; i< (sizeof(key_data)/sizeof(key_data[0])) ;i++){
- hid_keyboard_test(key_data[i]); // 按下键
- bflb_mtimer_delay_ms(10); // 延时10ms
- hid_keyboard_test(0x00); // 释放
- bflb_mtimer_delay_ms(200);
- };
- while (1) {
- bflb_mtimer_delay_ms(500);
- }
- }
复制代码
以上就是楼楼的经验分享,楼楼觉得这个还挺好玩的,希望可以帮到大家,楼楼比较菜,如果有啥地方有问题大家可以自己修改一下,也可以留言一起交流。 |