我在STM32 USB库的基础上,参考圈圈的书,移植了一个USB键盘的程序。
可是不太好使,打开记事本,第一次按下按键没反应,第二次按下则一直打印数字1
我本来是想按下一次按键,只输出一个1.
请高手指教,哪里出了问题。
谢谢。
贴出部分代码和图片。
主程序:
int main(void)
{
unsigned int i;
#ifdef DEBUG
debug();
#endif
Set_System();
USB_Interrupts_Config();
Set_USBClock();
uart1_init(115200);
USB_Init();
//Uart1_SendByte(0x55);
while (1)
{
//Delay(10000);
if ((JoyState() != 0) & (bDeviceState == CONFIGURED))
{
for(i=0;i<10000;i++);
if ((JoyState() != 0) & (bDeviceState == CONFIGURED))
while(JoyState() != 0);
Joystick_Send(JoyState());
}
}
}
void Joystick_Send(u8 Keys)
{
u8 Buffer[8] = {0, 0, 0, 0, 0, 0, 0, 0};
u8 i;
i=2;
switch (Keys)
{
case LEFT:
Buffer=0x52; //Keyboard UpArrow
i++;
break;
case RIGHT:
Buffer=0x51; //Keyboard DownArrow
i++;
break;
case UP:
Buffer=0x59; //0x50; //Keyboard LeftArrow
i++;
break;
case DOWN:
Buffer=0x53; //0x4F; //Keyboard RightArrow
break;
default:
return;
}
/*copy mouse position info in ENDP1 Tx Packet Memory Area*/
UserToPMABufferCopy(Buffer, GetEPTxAddr(ENDP1), 8); //?8???
/* enable endpoint for transmission */
SetEPTxValid(ENDP1);
}
|