我用APM32F107VC板子学习USB,库函数里有USB的例子,我改了一下,
大概照着你的USB键盘的描述符写的,可以识别设备了。可是发数据没反应。
发数据的代码: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};
这下惨了,不能识别了。
我改回来,还是不能识别。
好像有记忆功能。
请问圈圈大神,如何解决?谢谢!
|