要把鼠标从机改成键盘从机,只需要在鼠标从机源码的基础上进行更改即可。这里以stm32f103c8t6为例讲解。
更改如下:
方法一:
1、打开原来的工程(鼠标工程)由STM32Cube生成。
1、在main.c函数中,添加键盘键值代码, 这里模拟空格键
空格键:
uint8_t txbuffer[8]= {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
uint8_t sendbuffer[8]={0x00,0x00,0x2c,0x00,0x00,0x00,0x00,0x00};
某按键:
if(GPIO_PIN_RESET==HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1))//PTT按下,按下为低
{
USBD_HID_SendReport(&hUsbDeviceFS,sendbuffer,8);//发送报文
}
else if(GPIO_PIN_SET==HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1))
{
USBD_HID_SendReport(&hUsbDeviceFS,txbuffer,8);//发送报文
}
3,在usb_hid.c中,改核心实现代码(将核心从鼠标换成键盘),即修改usb配置数组或修改USB HID设备配置描述符。
4,修改USB HID设备描述符(在usb_hid.c中)
5,定义键盘描述符(在usb_hid.c中)
__ALIGN_BEGIN static uint8_t HID_KEYBOARD_ReportDesc[HID_KEYBOARD_REPORT_DESC_SIZE] __ALIGN_END =
{
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x06, // USAGE (Keyboard)
0xa1, 0x01, // COLLECTION (Application)
0x05, 0x07, // USAGE_PAGE (Ke