⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ctrlreq.lst

📁 FS7805 使用APLIF的demoFS7805 使用APLIF的demo
💻 LST
📖 第 1 页 / 共 3 页
字号:
 281   4                              EP1CS       = EP1CS & (~bmEP_SESTALL) | bmEP_CLRTOG;
 282   4                              break;
 283   4                          case bmEP2MAP:
 284   4                              EP2CS       = EP2CS & (~bmEP_SESTALL) | bmEP_CLRTOG;
 285   4                              break;
 286   4                          default:
 287   4                              USB_STALL_EP0();
 288   4                              return;
 289   4                      }
 290   3                  }
 291   2                  else
 292   2                  {
 293   3                      USB_STALL_EP0();
 294   3                      return;
 295   3                  }
 296   2                  break;
 297   2              default:
 298   2                  USB_STALL_EP0();                           // Send STALL
 299   2                  return;
 300   2          }
 301   1          EP0TXCNT    = 0;
 302   1          EP0TXCS     = EP0TXCS | bmTX0_EN;
C51 COMPILER V7.50   CTRLREQ                                                               04/17/2007 10:42:46 PAGE 6   

 303   1          while (EP0TXCS & bmTX0_EN);
 304   1      }
 305          /*$PAGE*/
 306          
 307          /*
 308          *********************************************************************************************************
 309          *                                             DR_SETFEATURE
 310          *
 311          * Description: Set feature
 312          *
 313          * Arguments  : none
 314          *
 315          * Returns    : none
 316          *********************************************************************************************************
 317          */
 318          void  DR_SetFeature (void)
 319          {
 320   1          switch (SetupData[0])
 321   1          {
 322   2              case FT_DEVICE:
 323   2                  if (SetupData[2] == 1)
 324   2                  {
 325   3                      Rwuen   = TRUE;
 326   3                  }
 327   2                  else if (SetupData[2] == 2)
 328   2                  {
 329   3                      break;
 330   3                  }
 331   2                  else
 332   2                  {
 333   3                      USB_STALL_EP0();
 334   3                      return;
 335   3                  }
 336   2                  break;
 337   2              case FT_ENDPOINT:
 338   2                  if (SetupData[2] == 0)
 339   2                  {
 340   3                      switch (SetupData[4] & 0x0F)
 341   3                      {
 342   4                          case bmEP1MAP:
 343   4                              EP1CS       = EP1CS | bmEP_SESTALL;
 344   4                              break;
 345   4                          case bmEP2MAP:
 346   4                              EP2CS       = EP2CS | bmEP_SESTALL;
 347   4                              break;
 348   4                          default:
 349   4                              USB_STALL_EP0();
 350   4                              return;
 351   4                      }
 352   3                  }
 353   2                  else
 354   2                  {
 355   3                      USB_STALL_EP0();
 356   3                      return;
 357   3                  }
 358   2                  break;
 359   2              default:
 360   2                  USB_STALL_EP0();                           // Send STALL
 361   2                  return;
 362   2          }
 363   1          EP0TXCNT    = 0;
 364   1          EP0TXCS     = EP0TXCS | bmTX0_EN;
C51 COMPILER V7.50   CTRLREQ                                                               04/17/2007 10:42:46 PAGE 7   

 365   1          while (EP0TXCS & bmTX0_EN);
 366   1      }
 367          /*$PAGE*/
 368          
 369          /*
 370          *********************************************************************************************************
 371          *                                             DR_SETADDRESS
 372          *
 373          * Description: Set address
 374          *
 375          * Arguments  : none
 376          *
 377          * Returns    : none
 378          *********************************************************************************************************
 379          */
 380          void  DR_SetAddress (void)
 381          {
 382   1          EP0TXCNT    = 0;                                   // Write data length
 383   1          EP0TXCS     = EP0TXCS | bmTX0_EN;                  // Enable TX
 384   1          while (EP0TXCS & bmTX0_EN);                        // Wait complete
 385   1          if (EP0TXCS & bmTX0_ACK)
 386   1          {
 387   2              USBFADDR    = SetupData[2];                    // Set address
 388   2          }
 389   1      }
 390          /*$PAGE*/
 391          
 392          /*
 393          *********************************************************************************************************
 394          *                                             DR_GETDESCRIPTOR
 395          *
 396          * Description: Get descriptor
 397          *
 398          * Arguments  : none
 399          *
 400          * Returns    : none
 401          *********************************************************************************************************
 402          */
 403          void  DR_GetDescriptor (void)
 404          {
 405   1          switch (SetupData[3])
 406   1          {
 407   2              case GD_DEVICE:
 408   2                  GD_DeviceDscr();
 409   2                  break;
 410   2              case GD_CONFIGURATION:
 411   2                  if (HighSpeed)
 412   2                  {
 413   3                      GD_ConfigDscr();
 414   3                  }
 415   2                  else
 416   2                  {
 417   3                      GD_OtherConfigDscr();
 418   3                  }
 419   2                  break;
 420   2              case GD_STRING:
 421   2                  GD_String();
 422   2                  break;
 423   2              case GD_DEVICE_QUALIFIER:
 424   2                  GD_DeviceQualDscr();
 425   2                  break;
 426   2              case GD_OTHER_SPEED_CONFIGURATION:
C51 COMPILER V7.50   CTRLREQ                                                               04/17/2007 10:42:46 PAGE 8   

 427   2                  if (!HighSpeed)
 428   2                  {
 429   3                      GD_ConfigDscr();
 430   3                  }
 431   2                  else
 432   2                  {
 433   3                      GD_OtherConfigDscr();
 434   3                  }
 435   2                  break;
 436   2              default:
 437   2                  USB_STALL_EP0();
 438   2          }
 439   1      }
 440          /*$PAGE*/
 441          
 442          /*
 443          *********************************************************************************************************
 444          *                                             DR_GETCONFIGURATION
 445          *
 446          * Description: Get configuration
 447          *
 448          * Arguments  : none
 449          *
 450          * Returns    : none
 451          *********************************************************************************************************
 452          */
 453          void  DR_GetConfiguration (void)
 454          {
 455   1          EP0TXDAT    = Configuration;
 456   1          EP0TXCNT    = 1;
 457   1          EP0TXCS     = EP0TXCS | bmTX0_EN;
 458   1          while (EP0TXCS & bmTX0_EN);
 459   1      }
 460          /*$PAGE*/
 461          
 462          /*
 463          *********************************************************************************************************
 464          *                                             DR_SETCONFIGURATION
 465          *
 466          * Description: Set configuration
 467          *
 468          * Arguments  : none
 469          *
 470          * Returns    : none
 471          *********************************************************************************************************
 472          */
 473          void  DR_SetConfiguration (void)
 474          {
 475   1          Configuration   = SetupData[2];
 476   1          EP0TXCNT        = 0;
 477   1          EP0TXCS         = EP0TXCS | bmTX0_EN;
 478   1          while (EP0TXCS & bmTX0_EN);
 479   1      }
 480          /*$PAGE*/
 481          
 482          /*
 483          *********************************************************************************************************
 484          *                                             DR_GETINTERFACE
 485          *
 486          * Description: Get interface
 487          *
 488          * Arguments  : none
C51 COMPILER V7.50   CTRLREQ                                                               04/17/2007 10:42:46 PAGE 9   

 489          *
 490          * Returns    : none
 491          *********************************************************************************************************
 492          */
 493          void  DR_GetInterface (void)
 494          {
 495   1          EP0TXDAT    = AlternateSetting;                    // Write data
 496   1          EP0TXCNT    = 1;                                   // Write data length
 497   1          EP0TXCS     = EP0TXCS | bmTX0_EN;                  // Enable TX
 498   1          while (EP0TXCS & bmTX0_EN);
 499   1      }
 500          /*$PAGE*/
 501          
 502          /*
 503          *********************************************************************************************************
 504          *                                             DR_SETINTERFACE
 505          *
 506          * Description: Set interface
 507          *
 508          * Arguments  : none
 509          *
 510          * Returns    : none
 511          *********************************************************************************************************
 512          */
 513          void  DR_SetInterface (void)
 514          {
 515   1          AlternateSetting    = SetupData[2];
 516   1          EP0TXCNT            = 0;
 517   1          EP0TXCS             = EP0TXCS | bmTX0_EN;
 518   1          while (EP0TXCS & bmTX0_EN);
 519   1      }
 520          /*$PAGE*/
 521          
 522          /*
 523          *********************************************************************************************************
 524          *                                             GD_DEVICEDSCR
 525          *
 526          * Description: Get device descriptor
 527          *
 528          * Arguments  : none
 529          *
 530          * Returns    : none
 531          *********************************************************************************************************
 532          */
 533          void  GD_DeviceDscr (void)
 534          {
 535   1          BOOLEAN ShortPacket;
 536   1          INT8U   i = 0, j, count, SendSize;
 537   1      
 538   1          count               = SetupData[6];
 539   1          ShortPacket         = FALSE;
 540   1          if (count > DSCR_DEVICE_LEN)
 541   1          {
 542   2              count           = DSCR_DEVICE_LEN;
 543   2              ShortPacket     = TRUE;
 544   2          }
 545   1      
 546   1          while (count)
 547   1          {
 548   2              if (count < PacketSize)
 549   2              {
 550   3                  SendSize    = count;
C51 COMPILER V7.50   CTRLREQ                                                               04/17/2007 10:42:46 PAGE 10  

 551   3              }
 552   2              else
 553   2              {
 554   3                  SendSize    = PacketSize;
 555   3              }
 556   2              count           = count - SendSize;
 557   2              for (j = 0; j < SendSize; j++)
 558   2              {
 559   3                  EP0TXDAT    = DeviceDscr[i++];
 560   3              }
 561   2              EP0TXCNT        = SendSize;
 562   2              EP0TXCS         = EP0TXCS | bmTX0_EN;
 563   2              while (EP0TXCS & bmTX0_EN);
 564   2          }
 565   1          if (ShortPacket && (SendSize == PacketSize))
 566   1          {
 567   2              EP0TXCNT        = 0;
 568   2              EP0TXCS         = EP0TXCS | bmTX0_EN;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -