STM32 USB手柄鼠标的问题
我下载了ST的官方4.0 JoyStickMouse例子
把程序编译了,把程序下载到开发板上
可以实现USB鼠标左右上下移动的功能
上下左右移动都很顺畅
但是按键的功能就不能实现了
我查阅了很多资料,得到的结论是USB设备端要发送4个字节给电脑
Mouse_Buffer[0]的bit0是作为左键
Mouse_Buffer[0]的bit1是作为右键
因此我就添加了如下的语句
准确的说是左键右键的功能失灵
单按右键不出菜单
一起按了左键+右方向键=右键的功能出菜单
一起按了右键+左方向键=左键的功能
左右键一定要跟方向键搭配一起使用才有效果
但是也不是每次都可以
有时候可以,有时候不可以
请问是什么原因 谢谢!!!!!!!!!!!!!!!!!!
void Joystick_Send(uint8_t Keys)
{
uint8_t Mouse_Buffer[4] = {0, 0, 0, 0};
int8_t X = 0, Y = 0;
switch (Keys)
{
case JOY_LEFT:X -= CURSOR_STEP;
break;
case JOY_RIGHT:X += CURSOR_STEP;
break;
case JOY_UP:Y -= CURSOR_STEP;
break;
case JOY_DOWN:Y += CURSOR_STEP;
break;
case JOY_RIGHT_KIT:Mouse_Buffer[0]|=1;//左键 这个是我自己添加上去的
break;
case JOY_LEFT_KIT:Mouse_Buffer[0]|=2;//右键 这个是我自己添加上去的
break;
default:return;
}
/* prepare buffer to send */
Mouse_Buffer[1] = X;
Mouse_Buffer[2] = Y;
/* Reset the control token to inform upper layer that a transfer is ongoing */
PrevXferComplete = 0;
/* Copy mouse position info in ENDP1 Tx Packet Memory Area*/
USB_SIL_Write(EP1_IN, Mouse_Buffer, 4);
/* Enable endpoint for transmission */
SetEPTxValid(ENDP1);
}
|