库函数里有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};
这下惨了,不能识别了。
我改回来,还是不能识别。
好像有记忆功能。
请问高手,如何解决?谢谢!
|