WoodData 发表于 2020-12-6 12:16

【RISC-V MCU CH32V103测评】+实现USBHID的键盘鼠标手柄

    看了一下USBDevice设备例子,改了一个USBHID的设备。实现了键盘鼠标手柄三合一例子。默认开始是手柄,可以通过手柄输出切换成键盘或者鼠标输出数据。用PB12,PB13,PB14,PB15做按键输入模拟。

main:
      if(ctrl_data == 0x80)
      {
            if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12))
            {
                pEP1_IN_DataBuf |= 0x01;
            }else
            {
                pEP1_IN_DataBuf &= ~0x01;
            }

            if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13))
            {
                pEP1_IN_DataBuf |= 0x02;
            }else
            {
                pEP1_IN_DataBuf &= ~0x02;
            }

            if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14))
            {
                pEP1_IN_DataBuf |= 0x04;
            }else
            {
                pEP1_IN_DataBuf &= ~0x04;
            }

            if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15))
            {
                pEP1_IN_DataBuf |= 0x08;
            }else
            {
                pEP1_IN_DataBuf &= ~0x08;
            }
            DevEP1_IN_Deal( 7 );
      }else if(ctrl_data == 0x20)
      {
            if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12))
            {
                pEP2_IN_DataBuf |= 0x01;
            }else
            {
                pEP2_IN_DataBuf &= ~0x01;
            }

            if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13))
            {
                pEP2_IN_DataBuf |= 0x02;
            }else
            {
                pEP2_IN_DataBuf &= ~0x02;
            }

            if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14))
            {
                pEP2_IN_DataBuf |= 0x04;
            }else
            {
                pEP2_IN_DataBuf &= ~0x04;
            }

            if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15))
            {
                pEP2_IN_DataBuf |= 0x08;
            }else
            {
                pEP2_IN_DataBuf &= ~0x08;
            }
            DevEP2_IN_Deal( 8 );
      }else if(ctrl_data == 0x40)//
      {
            if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12))
            {
                pEP3_IN_DataBuf = 1;
            }else if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13))
            {
                pEP3_IN_DataBuf = 0xff;
            }else
            {
                pEP3_IN_DataBuf = 0;
            }

            if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14))
            {
                pEP3_IN_DataBuf = 1;
            }else if(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15))
            {
                pEP3_IN_DataBuf = 0xff;
            }else
            {
                pEP3_IN_DataBuf = 0;
            }
            DevEP3_IN_Deal( 4 );
      }

      Delay_Ms(10);
    }

具体输出控制在:
void DevEP1_OUT_Deal( UINT8 l )
{
    ctrl_data = pEP1_OUT_DataBuf;

    if(pEP1_OUT_DataBuf & 0x01)
    {
      GPIO_WriteBit(GPIOA,GPIO_Pin_0, Bit_SET);
    }else
    {
      GPIO_WriteBit(GPIOA,GPIO_Pin_0, Bit_RESET );
    }
    if(pEP1_OUT_DataBuf & 0x02)
    {
      GPIO_WriteBit(GPIOA,GPIO_Pin_1, Bit_SET );
    }else
    {
      GPIO_WriteBit(GPIOA,GPIO_Pin_1, Bit_RESET );
    }
}




下面是测试程序:
**** Hidden Message *****

大头哥 发表于 2020-12-6 12:45

kankan

coslight 发表于 2020-12-6 16:16

学习一下

发呆二极管 发表于 2020-12-10 03:50

学习一下,感谢分享源码~

nvjwiciw659 发表于 2020-12-13 17:43

学习了,跟着老哥做试试

zhifeng 发表于 2021-2-23 11:43

学习下

真爱吴迪迪 发表于 2021-2-23 15:45

感觉好像空中飞鼠的样子。

自己造声卡 发表于 2021-2-23 16:28

空中飞鼠的感觉,不错的应用,我也在我的开发板上测试一下。

gchd1992 发表于 2021-3-25 17:03

下下来看看下下来看看下下来看看下下来看看

火星小强 发表于 2021-4-26 15:28

跟大神学习

kkzz 发表于 2021-5-3 12:25

如何使用winusb 访问 hid 设备

hudi008 发表于 2021-5-3 12:26

谢谢楼主分享的。   

lzmm 发表于 2021-5-3 12:26

usbhid 端点0如何发送数据

minzisc 发表于 2021-5-3 12:26

usbhid驱动如何源源不断的获取usb鼠标

selongli 发表于 2021-5-3 12:27

USB通信使用什么芯片

fentianyou 发表于 2021-5-3 12:29

使用HID协议的设备调试

xiaoyaodz 发表于 2021-5-3 12:30

         

febgxu 发表于 2021-5-3 12:30

只需要填写VID、PID和PVN数值

sdlls 发表于 2021-5-3 12:30

下载看看代码   

pixhw 发表于 2021-5-3 12:31

这个上位机是怎么写的
页: [1] 2 3 4 5
查看完整版本: 【RISC-V MCU CH32V103测评】+实现USBHID的键盘鼠标手柄