打印

用Cy7C64251做了一个HID键盘,目前问题:不能在bois下工作。

[复制链接]
770|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
llia|  楼主 | 2015-11-21 14:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用Cy7C64251做了一个HID键盘,目前问题:不能在bois下工作。
沙发
wangpe| | 2015-11-21 14:11 | 只看该作者
windows下没问题吧

使用特权

评论回复
板凳
langgq| | 2015-11-21 14:11 | 只看该作者
接口描述什么的呢?

使用特权

评论回复
地板
llia|  楼主 | 2015-11-21 14:11 | 只看该作者
windows下没问题。接口描述等等都对照了,没问题。

使用特权

评论回复
5
wangzsa| | 2015-11-21 14:11 | 只看该作者
程序看看

使用特权

评论回复
6
llia|  楼主 | 2015-11-21 14:12 | 只看该作者
void main(void)  
{  
    int temp,i;

M8C_EnableGInt;                       //Enable Global Interrupts   
Timer8_1_EnableInt();               // Enable the Timer8 interrupt
Timer8_1_Start();                   // Timer8 Start and initialization


USBFS_Start(0, USB_5V_OPERATION);      //Start USBFS Operation using device 0 and with 5V operation  
while(!USBFS_bGetConfiguration());     //Wait for Device to enumerate  

   

  
//Enumeration is completed load endpoint 1. Do not toggle the first time  
USBFS_LoadInEP(1, keycode, 8, USB_NO_TOGGLE);  
while(!USBFS_bGetEPAckState(1)); //Check and see if ACK has occured  
while(!(USBFS_bGetEPState(1) & IN_BUFFER_EMPTY));
USBFS_LoadInEP(1, keycode, 8, USB_TOGGLE);

USBFS_EnableOutEP(2);


while(1)  
{

      
   
   scan();
   PRT0DR_BUF&=0xcf;
      PRT0DR=PRT0DR_BUF;
      temp=PRT0DR&0x07;
      if(temp==0x07)
      {
     if(codeflag==1)
     {
        
      for(i=0;i<8;i++)
   {
          keycode[i]=0;
   }
   
   
    if(USBFS_bGetEPAckState(1))    //Wait for ACK before loading data
        {
          USBFS_LoadInEP(1, keycode, 8, USB_TOGGLE);  
              }
      for(i=0;i<6;i++)
   {
   OldInbuf[i]=0;
   Inbuf[i]=0;
   }
   codeflag=0;
     }
   }
   
   if(USBFS_bGetEPState(2))
         {
          USBFS_bReadOutEP(2, Buf, 8);
       USBFS_EnableOutEP(2);
          if(Buf[0]&0x02)
        {
        PRT0DR_BUF&=0xf7;
                 PRT0DR=PRT0DR_BUF;
     
        }
          else
        {
                 PRT0DR_BUF|=0xcf;
                 PRT0DR=PRT0DR_BUF;         
        }
     USBFS_EnableOutEP(2);
       Delay(4000);
   }
}  
}

使用特权

评论回复
7
zhuww| | 2015-11-21 14:12 | 只看该作者
要确保在usb通信没有ACK的时候重新枚举USB device

使用特权

评论回复
8
llia|  楼主 | 2015-11-21 14:12 | 只看该作者
工作上要用,赚啥钱呀?
现在是boot下,重新插拔就好了。
但是进入windows之后,也要重新插拔。
boot下灯也不亮,郁闷啊

使用特权

评论回复
9
zhanglli| | 2015-11-21 14:13 | 只看该作者
不懂了。。。

使用特权

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

本版积分规则

961

主题

8893

帖子

4

粉丝