打印

各位大神,救急啊usb hid

[复制链接]
2329|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gurong60|  楼主 | 2013-4-25 11:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在这个函数里面发送数据时可以,但把发送程序写在主函数里就没用,
/*******************************************************************************
* Function Name  : EP1_OUT_Callback.
* Description    : EP1 OUT Callback Routine.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void EP1_OUT_Callback(void)
{
  BitAction Led_State;

  PrevXferComplete = 1;
  /* Read received data (2 bytes) */  
  USB_SIL_Read(EP1_OUT, Receive_Buffer);
  /* write received data (2 bytes) */  
  send_Buffer[0] = 0X07;
  Write the descriptor through the endpoint */
  USB_SIL_Write(EP1_IN, (uint8_t*) send_Buffer, 2);  
  SetEPTxValid(ENDP1);



报告描述符为
const uint8_t CustomHID_ReportDescriptor[CUSTOMHID_SIZ_REPORT_DESC] =
  {                    
        0x06, 0xFF, 0x00,      /* USAGE_PAGE (Vendor Page: 0xFF00) */                       
    0x09, 0x01,            /* USAGE (Demo Kit)               */   
    0xa1, 0x01,            /* COLLECTION (Application)       */            
    /* 6 */
   
    /* Led 1 */        
    0x85, 0x01,            /*     REPORT_ID (1)                     */
    0x09, 0x01,            /*     USAGE (LED 1)                     */
    0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */         
    0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */           
    0x75, 0x08,            /*     REPORT_SIZE (8)            */        
    0x95, 0x01,            /*     REPORT_COUNT (1)           */      
    0xB1, 0x82,             /*    FEATURE (Data,Var,Abs,Vol) */     

    0x85, 0x01,            /*     REPORT_ID (1)              */
    0x09, 0x01,            /*     USAGE (LED 1)              */
    0x91, 0x82,            /*     OUTPUT (Data,Var,Abs,Vol)  */
    /* 26 */
   
    /* Led 2 */
    0x85, 0x02,            /*     REPORT_ID 2                     */
    0x09, 0x02,            /*     USAGE (LED 2)                     */
    0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */         
    0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */           
    0x75, 0x08,            /*     REPORT_SIZE (8)            */        
    0x95, 0x01,            /*     REPORT_COUNT (1)           */      
    0xB1, 0x82,             /*    FEATURE (Data,Var,Abs,Vol) */     

    0x85, 0x02,            /*     REPORT_ID (2)              */
    0x09, 0x02,            /*     USAGE (LED 2)              */
    0x91, 0x82,            /*     OUTPUT (Data,Var,Abs,Vol)  */
    /* 46 */
   
    /* Led 3 */        
    0x85, 0x03,            /*     REPORT_ID (3)                     */
    0x09, 0x03,            /*     USAGE (LED 3)                     */
    0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */         
    0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */           
    0x75, 0x08,            /*     REPORT_SIZE (8)            */        
    0x95, 0x01,            /*     REPORT_COUNT (1)           */      
    0xB1, 0x82,             /*    FEATURE (Data,Var,Abs,Vol) */     

    0x85, 0x03,            /*     REPORT_ID (3)              */
    0x09, 0x03,            /*     USAGE (LED 3)              */
    0x91, 0x82,            /*     OUTPUT (Data,Var,Abs,Vol)  */
    /* 66 */
   
    /* Led 4 */
    0x85, 0x04,            /*     REPORT_ID 4)                     */
    0x09, 0x04,            /*     USAGE (LED 4)                     */
    0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */         
    0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */           
    0x75, 0x08,            /*     REPORT_SIZE (8)            */        
    0x95, 0x01,            /*     REPORT_COUNT (1)           */      
    0xB1, 0x82,            /*     FEATURE (Data,Var,Abs,Vol) */     

    0x85, 0x04,            /*     REPORT_ID (4)              */
    0x09, 0x04,            /*     USAGE (LED 4)              */
    0x91, 0x82,            /*     OUTPUT (Data,Var,Abs,Vol)  */
    /* 86 */
   
    /* key Push Button */  
    0x85, 0x05,            /*     REPORT_ID (5)              */
    0x09, 0x05,            /*     USAGE (Push Button)        */      
    0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */      
    0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */      
    0x75, 0x01,            /*     REPORT_SIZE (1)            */  
    0x81, 0x82,            /*     INPUT (Data,Var,Abs,Vol)   */   
   
    0x09, 0x05,            /*     USAGE (Push Button)        */               
    0x75, 0x01,            /*     REPORT_SIZE (1)            */           
    0xb1, 0x82,            /*     FEATURE (Data,Var,Abs,Vol) */  
         
    0x75, 0x07,            /*     REPORT_SIZE (7)            */           
    0x81, 0x83,            /*     INPUT (Cnst,Var,Abs,Vol)   */                    
    0x85, 0x05,            /*     REPORT_ID (2)              */         
                    
    0x75, 0x07,            /*     REPORT_SIZE (7)            */           
    0xb1, 0x83,            /*     FEATURE (Cnst,Var,Abs,Vol) */                     
    /* 114 */

    /* Tamper Push Button */  
    0x85, 0x06,            /*     REPORT_ID (6)              */
    0x09, 0x06,            /*     USAGE (Tamper Push Button) */      
    0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */      
    0x25, 0x01,            /*     LOGICAL_MAXIMUM (1)        */      
    0x75, 0x01,            /*     REPORT_SIZE (1)            */  
    0x81, 0x82,            /*     INPUT (Data,Var,Abs,Vol)   */   
   
    0x09, 0x06,            /*     USAGE (Tamper Push Button) */               
    0x75, 0x01,            /*     REPORT_SIZE (1)            */           
    0xb1, 0x82,            /*     FEATURE (Data,Var,Abs,Vol) */  
         
    0x75, 0x07,            /*     REPORT_SIZE (7)            */           
    0x81, 0x83,            /*     INPUT (Cnst,Var,Abs,Vol)   */                    
    0x85, 0x06,            /*     REPORT_ID (6)              */         
                    
    0x75, 0x07,            /*     REPORT_SIZE (7)            */           
    0xb1, 0x83,            /*     FEATURE (Cnst,Var,Abs,Vol) */  
    /* 142 */
   
    /* ADC IN */
    0x85, 0x07,            /*     REPORT_ID (7)              */         
    0x09, 0x07,            /*     USAGE (ADC IN)             */         
    0x15, 0x00,            /*     LOGICAL_MINIMUM (0)        */               
    0x26, 0xff, 0x00,      /*     LOGICAL_MAXIMUM (255)      */                 
    0x75, 0x08,            /*     REPORT_SIZE (8)            */           
    0x81, 0x82,            /*     INPUT (Data,Var,Abs,Vol)   */                    
    0x85, 0x07,            /*     REPORT_ID (7)              */                 
    0x09, 0x07,            /*     USAGE (ADC in)             */                     
    0xb1, 0x82,            /*     FEATURE (Data,Var,Abs,Vol) */                                 
    /* 161 */

    0xc0                   /*     END_COLLECTION                     */
  }; /* CustomHID_ReportDescriptor */
请教
沙发
IJK| | 2013-4-25 12:26 | 只看该作者
在这个EP1_OUT_Callback函数里面发送数据时可以,但把发送程序写在主函数里就没用。

这是正常的。因为有EP1_OUT数据后,USB库会自动调用EP1_OUT_Callback函数。而把发送程序写在主函数里,就不会被自动调用啦

使用特权

评论回复
板凳
gurong60|  楼主 | 2013-4-25 12:34 | 只看该作者
IJK 发表于 2013-4-25 12:26
在这个EP1_OUT_Callback函数里面发送数据时可以,但把发送程序写在主函数里就没用。

这是正常的。因为有EP ...

EP1_OUT_Callback这个函数原来是接收usb接口端点数据,而我现在是要发送数据到usb接口,为什么不能写在主函数里面呢,而且如果那样的话就是必须有数据来才可以发送,请指教

使用特权

评论回复
地板
IJK| | 2013-4-25 13:48 | 只看该作者
要发送数据到usb接口,应该用EP1_IN_Callback这个函数

使用特权

评论回复
5
gurong60|  楼主 | 2013-4-25 14:02 | 只看该作者
IJK 发表于 2013-4-25 13:48
要发送数据到usb接口,应该用EP1_IN_Callback这个函数

额,我想主动发送数据,

使用特权

评论回复
6
IJK| | 2013-4-25 18:00 | 只看该作者
看来LS不懂USB,USB只能由PC来要数据,USB device不能主动发数据。
当然,对于USB HID device,PC会定期来要数据的。

使用特权

评论回复
7
hawksabre| | 2013-4-25 19:19 | 只看该作者
不是很懂USB协议   帮你顶一个   希望有真正的高手能解决这个问题

使用特权

评论回复
8
gurong60|  楼主 | 2013-4-25 22:03 | 只看该作者
IJK 发表于 2013-4-25 18:00
看来LS不懂USB,USB只能由PC来要数据,USB device不能主动发数据。
当然,对于USB HID device,PC会定期来 ...

谢谢你,不够深入看书

使用特权

评论回复
9
gurong60|  楼主 | 2013-4-25 22:03 | 只看该作者
hawksabre 发表于 2013-4-25 19:19
不是很懂USB协议   帮你顶一个   希望有真正的高手能解决这个问题

6楼正解,

使用特权

评论回复
10
e_007| | 2015-11-27 22:05 | 只看该作者
本帖最后由 e_007 于 2015-11-27 22:11 编辑

放main要被中断呢?~n~

使用特权

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

本版积分规则

个人签名:对手,队友

179

主题

1307

帖子

4

粉丝