打印
[USB接口]

STM32实现USB键盘的问题

[复制链接]
2480|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我在STM32 USB库的基础上,参考圈圈的书,移植了一个USB键盘的程序。
可是不太好使,打开记事本,第一次按下按键没反应,第二次按下则一直打印数字1
我本来是想按下一次按键,只输出一个1.
请高手指教,哪里出了问题。
谢谢。
贴出部分代码和图片。


相关帖子

沙发
JY-DX-JY|  楼主 | 2016-1-15 15:02 | 只看该作者
主程序:
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);
}

使用特权

评论回复
板凳
laotui| | 2017-3-16 13:46 | 只看该作者
我抓过数据了,要发送全零的包才行不让相当于一直按着,问题是紧接着发全零数据包也不行,不知道你解决没有。

使用特权

评论回复
地板
山东电子小菜鸟| | 2017-3-20 20:56 | 只看该作者
laotui 发表于 2017-3-16 13:46
我抓过数据了,要发送全零的包才行不让相当于一直按着,问题是紧接着发全零数据包也不行,不知道你解决没有 ...

有道理

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:晴天响霹雳,平地一声雷。

245

主题

3349

帖子

30

粉丝