[RISC-V MCU 应用开发]

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

[复制链接]
13942|81
手机看帖
扫描二维码
随时随地手机跟帖
WoodData|  楼主 | 2020-12-6 12:16 | 显示全部楼层 |阅读模式
    看了一下USBDevice设备例子,改了一个USBHID的设备。实现了键盘鼠标手柄三合一例子。默认开始是手柄,可以通过手柄输出切换成键盘或者鼠标输出数据。用PB12,PB13,PB14,PB15做按键输入模拟。

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

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

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

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

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

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

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

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

        Delay_Ms(10);
    }


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

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

1.jpg
2.jpg


下面是测试程序:
游客,如果您要查看本帖隐藏内容请回复


使用特权

评论回复

相关帖子

大头哥| | 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 | 显示全部楼层
这个上位机是怎么写的  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

115

主题

4300

帖子

25

粉丝