[新品上市] APM32F107VC板子制作USB键盘的问题

[复制链接]
1926|7
 楼主| 比神乐 发表于 2023-6-1 19:53 | 显示全部楼层 |阅读模式
库函数里有USB的例子,我改了一下,参考电脑圈圈的描述符,
可以识别设备了。可是发数据没反应。
发数据的代码:
  1. <div class="blockcode"><blockquote>void HidMouse_Proc1(void)
  2. {
  3.     uint8_t key = 0xff;
  4.                
  5.     uint8_t buffer[8] = {0, 0, 0, 0,0,0,0,0};
  6.                 uint8_t i=2;
  7.                
  8.                
  9.     if(g_usbDev.devState != USBD_DEVICE_STATE_CONFIGURED)
  10.     {
  11.         return;
  12.     }
  13.                 GPIO_ResetBit(GPIOE,GPIO_PIN_6);
  14.     key = KeyPro();
  15.     if(key != 0xff)
  16.     {
  17.                                
  18.         if(s_statusEP)
  19.         {
  20. //            HidMouse_Write(key);
  21.                                                
  22.                                                 switch (key)
  23.                                                 {
  24.                                                                 case 0:
  25.                                                                                 buffer[0]|=0X01;
  26.                                                                                
  27.                                                                 break;

  28.                                                                 case 1:
  29.                                                                                 buffer[0]|=0X02;
  30.                                                                 break;

  31.                                                                 case 2:
  32.                                                                                 buffer[0]|=0X04;
  33.                                                                 break;

  34.                                                                 case 3:
  35.                                                                                 buffer[i]=0X59;
  36.                                                                                 i++;
  37.                                                                 break;
  38.                                                                 case 4:
  39.                                                                                 buffer[i]=0X5A;
  40.                                                                                 i++;
  41.                                                                 break;

  42.                                                                 case 5:
  43.                                                                                 buffer[i]=0X5B;
  44.                                                                                 i++;
  45.                                                                 break;
  46.                                                                 case 6:
  47.                                                                                 buffer[i]=0X39;
  48.                                                                                 i++;
  49.                                                                 break;

  50.                                                                 case 7:
  51.                                                                                 buffer[i]=0X53;
  52.                                                                                 GPIO_ResetBit(GPIOE,GPIO_PIN_5);
  53.                                                                 break;
  54.                                                                 default:
  55.                                                                                 return;
  56.                                                 }

  57.                                                

  58.                                                 s_statusEP = 0;

  59.                                                 USBD_TxData(USB_EP_1, buffer, sizeof(buffer));
  60.         }
  61.     }
  62. }

补充一下:我用的矩阵键盘。
后来安装了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};
这下惨了,不能识别了。
5.jpg
我改回来,还是不能识别。
好像有记忆功能。
请问高手,如何解决?谢谢!
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都是无法正确识别的
 楼主| 比神乐 发表于 2023-6-2 21:56 | 显示全部楼层
lilijin1995 发表于 2023-6-2 17:27
我跟你讲哦,描述符就算错一个Byte都是无法正确识别的

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

照样不识别”,确定?


 楼主| 比神乐 发表于 2023-6-3 12:09 | 显示全部楼层
e_007 发表于 2023-6-3 12:36 | 显示全部楼层
本帖最后由 e_007 于 2023-6-5 22:09 编辑

...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3537

帖子

7

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