[其他芯片] CH552-HID 键盘 鼠标

[复制链接]
 楼主| tfqi 发表于 2021-7-7 14:45 | 显示全部楼层 |阅读模式

  • 硬件,CH554 EVK
  • 软件,CH552\EVT\EXAM\USB\Device\CompositeKM.C
  • 主要的上报函数




void HIDValueHandle()
{
    UINT8 i;
        i = getkey( );
        printf( "%c", (UINT8)i );
        switch(i)
        {
//鼠标数据上传示例
        case 'L':                                                        //左键
            HIDMouse[0] = 0x01;
            Enp2IntIn();
            HIDMouse[0] = 0;
            break;
        case 'R':                                                        //右键
            HIDMouse[0] = 0x02;
            Enp2IntIn();
                        mDelaymS( 10 );       
            HIDMouse[0] = 0;                                                                                        //这里模拟松手
                        Enp2IntIn();                                                                                                //发数据
                       
            break;
//键盘数据上传示例
        case 'A':                                                         //A键
            FLAG = 0;
            HIDKey[2] = 0x1d;                                             //按键开始
            Enp1IntIn();
            HIDKey[2] = 0;                                                //按键结束
            while(FLAG == 0)
            {
                ;    /*等待上一包传输完成*/
            }
            Enp1IntIn();
            break;
        case 'P':                                                         //P键
            FLAG = 0;
            HIDKey[2] = 0x38;
            Enp1IntIn();
            HIDKey[2] = 0;                                                //按键结束
            while(FLAG == 0)
            {
                ;    /*等待上一包传输完成*/
            }
            Enp1IntIn();
            break;
        case 'Q':                                                         //Num Lock键
            FLAG = 0;
            HIDKey[2] = 0x39;
            Enp1IntIn();
            HIDKey[2] = 0;                                                //按键结束
            while(FLAG == 0)
            {
                ;    /*等待上一包传输完成*/
            }
            Enp1IntIn();
            break;
        case 'l':        //>右下移动
            HIDMouse[0] = 0x00;//向右,向下都是正方向了
            HIDMouse[1] = 0x01;//向右移动
            HIDMouse[2] = 0x01;//向下移动
            Enp2IntIn();

            break;
        default:                                                          //其他
            UEP1_CTRL = UEP1_CTRL & ~ MASK_UEP_T_RES | UEP_T_RES_NAK;     //默认应答NAK
            UEP2_CTRL = UEP2_CTRL & ~ MASK_UEP_T_RES | UEP_T_RES_NAK;     //默认应答NAK
            break;
        }
}


 楼主| tfqi 发表于 2021-7-7 14:47 | 显示全部楼层
注意
20210205135926152.png
右键点击了,发一下松手(模拟一下)
huquanz711 发表于 2021-7-8 19:42 来自手机 | 显示全部楼层
谢谢分享经验
lidi911 发表于 2021-7-14 08:43 来自手机 | 显示全部楼层
可以做个键盘模拟游戏
单片小菜 发表于 2021-7-14 14:57 | 显示全部楼层
UEP1_CTRL = UEP1_CTRL & ~ MASK_UEP_T_RES | UEP_T_RES_NAK;  这句话可以帮忙解释一下吗?
自己造声卡 发表于 2021-7-14 16:26 | 显示全部楼层
是否可以支持键盘和鼠标一起用呢?

评论

可以,官网对应型号的EVT里有复合键盘鼠标的例程  发表于 2021-7-15 09:29
里面有晴雨 发表于 2021-7-16 09:10 | 显示全部楼层
如果键盘和硬盘在一起,该怎么设置描述符呢?
SoldierJazz 发表于 2021-10-6 22:47 | 显示全部楼层
感兴趣的也可以直接选用串口转键盘/鼠标/自定义HID类设备的转接芯片CH9329,可以同时支持三种设备,也支持单独转接某一种设备。
weifeng90 发表于 2021-10-7 10:04 来自手机 | 显示全部楼层
可以试试看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

3317

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部