打印
[新品上市]

APM32F107VC板子制作USB键盘的问题

[复制链接]
1110|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
库函数里有USB的例子,我改了一下,参考电脑圈圈的描述符,
可以识别设备了。可是发数据没反应。
发数据的代码:
<div class="blockcode"><blockquote>void HidMouse_Proc1(void)
{
    uint8_t key = 0xff;
               
    uint8_t buffer[8] = {0, 0, 0, 0,0,0,0,0};
                uint8_t i=2;
               
               
    if(g_usbDev.devState != USBD_DEVICE_STATE_CONFIGURED)
    {
        return;
    }
                GPIO_ResetBit(GPIOE,GPIO_PIN_6);
    key = KeyPro();
    if(key != 0xff)
    {
                               
        if(s_statusEP)
        {
//            HidMouse_Write(key);
                                               
                                                switch (key)
                                                {
                                                                case 0:
                                                                                buffer[0]|=0X01;
                                                                               
                                                                break;

                                                                case 1:
                                                                                buffer[0]|=0X02;
                                                                break;

                                                                case 2:
                                                                                buffer[0]|=0X04;
                                                                break;

                                                                case 3:
                                                                                buffer[i]=0X59;
                                                                                i++;
                                                                break;
                                                                case 4:
                                                                                buffer[i]=0X5A;
                                                                                i++;
                                                                break;

                                                                case 5:
                                                                                buffer[i]=0X5B;
                                                                                i++;
                                                                break;
                                                                case 6:
                                                                                buffer[i]=0X39;
                                                                                i++;
                                                                break;

                                                                case 7:
                                                                                buffer[i]=0X53;
                                                                                GPIO_ResetBit(GPIOE,GPIO_PIN_5);
                                                                break;
                                                                default:
                                                                                return;
                                                }

                                               

                                                s_statusEP = 0;

                                                USBD_TxData(USB_EP_1, buffer, sizeof(buffer));
        }
    }
}

补充一下:我用的矩阵键盘。
后来安装了bus hound,和圈圈的USB键盘比较,发现发的数据不一样。
他那个一行16个字节。很奇怪。
我看他书上也是发8个字节呀!
于是我把
uint8_t buffer[8] = {0, 0, 0, 0,0,0,0,0};
改成
uint8_t buffer[16] = {0, 0, 0, 0,0,0,0,0};
这下惨了,不能识别了。

我改回来,还是不能识别。
好像有记忆功能。
请问高手,如何解决?谢谢!

使用特权

评论回复
沙发
lilijin1995| | 2023-6-1 21:46 | 只看该作者
键盘八个字节的,可以参考我们的https://www.bilibili.com/video/BV1TP4y1m7Gs/?spm_id_from=333.788&vd_source=2bbde87de845d5220b1d8ba075c12fb0

使用特权

评论回复
板凳
比神乐|  楼主 | 2023-6-1 22:57 | 只看该作者
本帖最后由 比神乐 于 2023-6-1 22:58 编辑
lilijin1995 发表于 2023-6-1 21:46
键盘八个字节的,可以参考我们的https://www.bilibili.com/video/BV1TP4y1m7Gs/?spm_id_from=333.788&vd_so ...

谢谢!现在最重要的是无法识别,就因为原来发8个字节,改成发16个字节,就不能识别了。
然后再改回8个字节,仍然不能识别。也就说改成和原来一样,照样不能识别。
我搞不懂。

使用特权

评论回复
地板
lilijin1995| | 2023-6-2 17:27 | 只看该作者
比神乐 发表于 2023-6-1 22:57
谢谢!现在最重要的是无法识别,就因为原来发8个字节,改成发16个字节,就不能识别了。
然后再改回8个字节 ...

我跟你讲哦,描述符就算错一个Byte都是无法正确识别的

使用特权

评论回复
5
比神乐|  楼主 | 2023-6-2 21:56 | 只看该作者
lilijin1995 发表于 2023-6-2 17:27
我跟你讲哦,描述符就算错一个Byte都是无法正确识别的

描述符没动啊。光改了发送的字节数,就不识别了。后来又改回来,和原来一模一样,照样不识别。

使用特权

评论回复
6
e_007| | 2023-6-3 09:36 | 只看该作者
本帖最后由 e_007 于 2023-6-3 10:04 编辑
比神乐 发表于 2023-6-2 21:56
描述符没动啊。光改了发送的字节数,就不识别了。后来又改回来,和原来一模一样,照样不识别。 ...

照样不识别”,确定?


使用特权

评论回复
7
比神乐|  楼主 | 2023-6-3 12:09 | 只看该作者
确定

使用特权

评论回复
8
e_007| | 2023-6-3 12:36 | 只看该作者
本帖最后由 e_007 于 2023-6-5 22:09 编辑

...

使用特权

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

本版积分规则

425

主题

3385

帖子

7

粉丝