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

📄 usb_main.c

📁 用 Hitex 工具软件开发 stm32 的例子
💻 C
📖 第 1 页 / 共 2 页
字号:
                                  
                                  case 1 : /* side b */  
                                           newpos[1] = (s8)(-1*StepSize);
                                           newpos[2] = 1*StepSize;
                                           break;
                                  case 2 : /* side c */  
                                           newpos[1] = (s8)(-1*StepSize);
                                           newpos[2] = (s8)(-1*StepSize);
                                           break;
                                  default : /* error */
                                           USBApplSideIndex = 0;
                                           break;
                                  }
                                 break;
       case USB_Shape_Square  :  /* */
                                 USBApplIndex += StepSize;            // increment stepsize
                                 if (USBApplIndex > maxlength)        // check overrun
                                 {
                                    USBApplSideIndex++;
                                    if (USBApplSideIndex > 3)
                                       USBApplSideIndex = 0;
                                    USBApplIndex = 0;
                                 }
                                 switch (USBApplSideIndex) {
                                  case 0 : /* side a */  
                                           newpos[1] = 1*StepSize;
                                           newpos[2] = 0;
                                           break;
                                  case 1 : /* side b */  
                                           newpos[1] = 0;
                                           newpos[2] = 1*StepSize;
                                           break;
                                  case 2 : /* side c */  
                                           newpos[1] = (s8)(-1*StepSize);
                                           newpos[2] = 0;
                                           break;
                                  case 3 : /* side d */  
                                           newpos[1] = 0;
                                           newpos[2] = (s8)(-1*StepSize);
                                           break;
                                  default : /* error */
                                           USBApplSideIndex = 0;
                                           break;
                                  }
                                 break;
       case USB_Shape_Hexagon :  /* */
                                 USBApplIndex += StepSize;            // increment stepsize
                                 if (USBApplIndex > maxlength)        // check overrun
                                 {
                                    USBApplSideIndex++;
                                    if (USBApplSideIndex > 5)
                                       USBApplSideIndex = 0;
                                    USBApplIndex = 0;
                                 }
                                 
                                 switch (USBApplSideIndex) {
                                  case 0 : /* side a */  
                                           newpos[1] = 1*StepSize;
                                           newpos[2] = 0;
                                           break;
                                  case 1 : /* side b */  
                                           newpos[1] = 1*StepSize;
                                           newpos[2] = (s8)(-1*StepSize);
                                           break;
                                  case 2 : /* side c */  
                                           newpos[1] = (s8)(-1*StepSize);
                                           newpos[2] = (s8)(-1*StepSize);
                                           break;
                                  case 3 : /* side d */  
                                           newpos[1] = (s8)(-1*StepSize);
                                           newpos[2] = 0;
                                           break;
                                  case 4 : /* side e */  
                                           newpos[1] = (s8)(-1*StepSize);
                                           newpos[2] = 1*StepSize;
                                           break;
                                  case 5 : /* side f */  
                                           newpos[1] = 1*StepSize;
                                           newpos[2] = 1*StepSize;
                                           break;
                                  default : /* error */
                                           USBApplSideIndex = 0;
                                           break;
                                  }
                                 break;
       case USB_Shape_Octagon :  /* */
                                 USBApplIndex += StepSize;            // increment stepsize
                                 if (USBApplIndex > maxlength)        // check overrun
                                 {
                                    USBApplSideIndex++;
                                    if (USBApplSideIndex > 7)
                                       USBApplSideIndex = 0;
                                    USBApplIndex = 0;
                                 }
                                 
                                 switch (USBApplSideIndex) {
                                  case 0 : /* side a */  
                                           newpos[1] = 1*StepSize;
                                           newpos[2] = 0;
                                           break;
                                  case 1 : /* side b */  
                                           newpos[1] = 1*StepSize;
                                           newpos[2] = 1*StepSize;
                                           break;
                                  case 2 : /* side c */  
                                           newpos[1] = 0;
                                           newpos[2] = 1*StepSize;
                                           break;
                                  case 3 : /* side d */  
                                           newpos[1] = (s8)(-1*StepSize);
                                           newpos[2] = 1*StepSize;
                                           break;
                                  case 4 : /* side e */  
                                           newpos[1] = (s8)(-1*StepSize);
                                           newpos[2] = 0;
                                           break;
                                  case 5 : /* side f */  
                                           newpos[1] = (s8)(-1*StepSize);
                                           newpos[2] = (s8)(-1*StepSize);
                                           break;
                                  case 6 : /* side e */  
                                           newpos[1] = 0;
                                           newpos[2] = (s8)(-1*StepSize);
                                           break;
                                  case 7 : /* side f */  
                                           newpos[1] = 1*StepSize;
                                           newpos[2] = (s8)(-1*StepSize);
                                           break;
                                  default : /* error */
                                           USBApplSideIndex = 0;
                                           break;
                                  }
                                 break;
       default                :  /* */
                                 USB_AppConfig[1] = 0;
                                 break;
       }
      /*copy new position info in ENDP1 Tx Packet Memory Area*/
      UserToPMABufferCopy(newpos, GetEPTxAddr(ENDP1), 4);
      /* enable endpoint for transmission */
      SetEPTxValid(ENDP1);
      USBApplTime = TimeTick + USB_AppConfig[0];
   }
}

void CommUSB (void)
{
   u8 i = 0;
   u32 temp;

   CommTask->CommandNew = FALSE;
   //SendTask->Target = FALSE;
   switch (CommTask->Command) {
    case Cmd_Get_USB : /* GUI   Status request of the USB enabled, Application and Enumeration */
                           if (USBState.enabled)
                              temp = (USBState.enabled+1) | (((!USB_ENUM.process_ready)+1)<<4);
                           else
                              temp = 0x11;
                           protocol_DWSendFrame (Rep_Info_USB, &temp,1);
                           break;
    case Cmd_Get_VIDPID_Str : /* GUI   Request of VID and PID */
                           protocol_RevSendFrame (Rep_Info_VIDPID_str, (u8 *)&HID_DeviceDescriptor[8],4);
                           break;
    case Cmd_Get_Serial_Str : /* GUI Request of serial Nr string descriptor */
                           SendTask->DataLength = UnicodeToAscii((u8 *)HID_StringSerial,SendTask->Data);
                           protocol_SendFrame (Rep_Info_Serial_Str, (u8 *)&SendTask->Data,SendTask->DataLength);
                           break;
    case Cmd_Get_Prod_Str : /* GUI Request of product string descriptor */
                           SendTask->DataLength = UnicodeToAscii((u8 *)HID_StringProduct,SendTask->Data);
                           protocol_SendFrame (Rep_Info_Prod_Str, (u8 *)&SendTask->Data,SendTask->DataLength);
                           break;
    case Cmd_Get_Pwr_Def : /* GUI Request of Power definitions */
                           protocol_SendFrame (Rep_Info_Pwr_Def, (u8 *)&HID_ConfigDescriptor[7],2);
                           break;
    case Cmd_Enable_USB  : /* GUI   Start/Stop the USB */
                           CommTask->Command = Cmd_Idle;  /* none */
                           if (CommTask->Data[0] == TaskSwitchOn)
                           {
                              if (USBState.enabled == FALSE)
                                 USBStart();
                              i = 0;
                           }
                           else
                           {
                              USBStop();
                              USBState.enabled = FALSE;
                              USB_ENUM.process_ready = FALSE;
                              ReEntryProcess = Dummy;
                           }
                           break;
    case Cmd_Get_Version : /* GUI Request of Version descriptor */
                           protocol_RevSendFrame (Rep_Info_Version, (u8 *)&HID_DeviceDescriptor[12],2);
                           break;
    case Cmd_Enable_USB_APP  : /* GUI Start/Stop the USB-Application (Mouse) */
                           CommTask->Command = Cmd_Idle;  /* none */
                           if (CommTask->Data[0] == TaskSwitchOn)
                           {
                              if (USB_ApplState.enabled == FALSE)
                                 USBApplStart();
                           }
                           else
                           {
                              USBApplStop();
                              USB_ApplState.enabled = FALSE;
                           }
                           break;
    case Cmd_Get_Poll_Intervall : /* GUI Request the polling interval */ // !!!
                           protocol_SendFrame (Rep_Info_Poll_Intervall,(u8 *)&HID_DeviceDescriptor[1],1);
                           break;
    case Cmd_Get_Config_Application : /* GUI Request the applications parameter */
                           protocol_SendFrame (Rep_Info_Config_Application, (u8 *)USB_AppConfig,4);
                           break;
    case Cmd_Set_Config_Application     : /*   GUI Set the applications parameter */
                           CommTask->Command = Cmd_Idle;/* Answer to status request */
                           USB_AppConfig[0] = CommTask->Data[0];
                           USB_AppConfig[1] = CommTask->Data[1];
                           USB_AppConfig[2] = CommTask->Data[2];
                           USB_AppConfig[3] = CommTask->Data[3];
                           break;
    default :              protocol_SendError (Err_NotImplemented);
                           break;
    }
}

⌨️ 快捷键说明

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