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

📄 main.c

📁 基于LPC2134的在ucos2操作系统下的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
        
           for(i=0;i<(((zhuanshu2*1000)/1873));i++)
           { 
              if(((a+1)%2)==1)
                IO1CLR = ((tab1[a]^tab1[a+1])&0x0000000f)<<19;
              else
                IO1SET = ((tab1[a]^tab1[a+1])&0x0000000f)<<19;
              a++;
                OSTimeDlyHMSM(0,0,0,zhuansu2); 
              if(a==8)a=0; 
           }
         
      }
    else
    
     {
         IO1SET=  0x0048000;                                      
         OSTimeDlyHMSM(0,0,0,zhuanshu2);
         for(i=0;i<((zhuanshu2*1000)/1873);i++)
          { 
            if(((a+1)%2)==1)
              IO1CLR = ((tab2[a]^tab2[a+1])&0x0000000f)<<19;
            else
              IO1SET = ((tab2[a]^tab2[a+1])&0x0000000f)<<19;
            a++;
            OSTimeDlyHMSM(0,0,0,zhuansu2); 
            if(a==8)a=0; 
          }
        
       
    }
    
  
  
  OSTaskDel(OS_PRIO_SELF);	
   

}	

/*********************************************************************************************************
**                                           TaskPJ2
                                   
********************************************************************************************************/

void TaskPJ3(void *pdata)
{
   uint32  i;
   uint8   a=0;
   uint32  zhuanshu3,zhuansu3,zhuanxiang3,*pt3;
   pt3= (uint32*)pdata;
   
   zhuansu3=pt3[0];
   zhuanshu3=pt3[1];
   zhuanxiang3=pt3[2];
   zhuansu3=1873/zhuansu3;
   
   
   OSTaskCreate (Taskcesu,(void *)0, &TaskcesuStk[TaskStkLengh - 1], 6);
   if(zhuanxiang3==0)
      {
           IO0SET =  0x00900000;                                      
           OSTimeDlyHMSM(0,0,0,zhuanshu3);
        
           for(i=0;i<(((zhuanshu3*1000)/1873));i++)
           { 
              if(((a+1)%2)==1)
                IO0CLR = ((tab1[a]^tab1[a+1])&0x0000000f)<<20;
              else
                IO0SET = ((tab1[a]^tab1[a+1])&0x0000000f)<<20;
              a++;
                OSTimeDlyHMSM(0,0,0,zhuansu3); 
              if(a==8)a=0; 
           }
         
      }
    else
    
     {
         IO0SET =  0x00900000;                                      
         OSTimeDlyHMSM(0,0,0,zhuanshu3);
         for(i=0;i<((zhuanshu3*1000)/1873);i++)
          { 
            if(((a+1)%2)==1)
              IO0CLR = ((tab2[a]^tab2[a+1])&0x0000000f)<<20;
            else
              IO0SET = ((tab2[a]^tab2[a+1])&0x0000000f)<<20;
            a++;
            OSTimeDlyHMSM(0,0,0,zhuansu3); 
            if(a==8)a=0; 
          }
        
       
    }
   OSTaskDel(6);	T1TC   = 0;	
  GUI_PutString(83,35,"    "); 
  OSTaskDel(OS_PRIO_SELF);	
    
 
}	
		
/*********************************************************************************************************
**                                           TaskKEY1
                                     查询按键,向TaskPWM发送改变后的消息
********************************************************************************************************/
	
void TaskKEY1(void *pdata)
{
   uint8   key,x1=0,x2=0,x3=0,dangqian=0,xuhao=0,arr[4],sudu1=0,sudu2=0,sudu3=0,weiyi1=0,weiyi2=0,weiyi3=0;
   uint32  cond[9];  
   pdata =  pdata;	
   TargetInit ();
   PINSEL1= 0x00000000; 
   PINSEL2= PINSEL2&(~0x08); 
   PINSEL1  = (PINSEL1&(~(0x03<<2)))|(0x01 << 2);       // P0.17连接捕获1.2                                 
   IO1DIR = 0x00780000;
   IO0DIR = 0xfffBffff;
   
   GUI_Initialize();                           
   GUI_SetColor(1, 0); 
   T1C();                                               // 定时器1初始化
   OSTaskCreate (TaskDisp,(void *)0, &TaskDispStk[TaskStkLengh - 1], 10);		
   ReMsgQeue=OSQCreate(&MsgQeueTb[0],100);                         
    
   
   while (1)
	{  
	    key=keyin();
	    switch(xuhao+1)                                        
	      {
	       case  1:                      // 1号电机
	               
	            switch((dangqian+1))     
	             {  
	               case  1:              // 1号电机的速度设置
	                
	                 switch(key)
	                  {
	                     case   1:        // 速度值位数的大小设置
	                          arr[0]=1;      
	                          sudu1++;if(sudu1==10)sudu1=0;          
	                          arr[1]=sudu1;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   2:        // 速度值位数的移动设置
	                          arr[0]=2;
                              OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   3:        // 切换选项设置          
	               
	                          arr[0]=3;
	                          dangqian++;
	                          if(dangqian==3)dangqian=0; 
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   4:        // 切换电机的序号
	                          arr[0]=4;
	                          xuhao++;
	                          if(xuhao==3)xuhao=0;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     default:
                         break;
                     }
                   break;
                   
                   case  2:               //  1号电机的位移设置 
                   
                     switch(key)
	                  {
	                     case   1:        // 位移值位数的大小设置
	                          arr[0]=5;      
	                          weiyi1++;if(weiyi1==10)weiyi1=0;          
	                          arr[1]=weiyi1;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   2:        // 位移值位数的移动设置
	                          arr[0]=6;
                              OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   3:        // 切换选项设置          
	               
	                          arr[0]=3;
	                          dangqian++;
	                          if(dangqian==3)dangqian=0; 
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   4:        // 切换电机的序号
	                          arr[0]=4;
	                          xuhao++;
	                          if(xuhao==3)xuhao=0;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     default:
                         break;
                     }
                   break;
                   
                  case  3:               //  1号电机的转向设置 
                   
                     switch(key)
	                  {
	                     case   1:        // 正转
	                          arr[0]=7;
	                          x1=0;    
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   2:        // 反转
	                          arr[0]=8;
	                          x1=1;
                              OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   3:        // 切换选项设置          
	               
	                          arr[0]=3;
	                          dangqian++;
	                          if(dangqian==3)dangqian=0; 
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   4:        // 切换电机的序号
	                          arr[0]=4;
	                          xuhao++;
	                          if(xuhao==3)xuhao=0;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     default:
                         break;
                     }
                   break;
                 default:
                   break; 
                  
               }              
                             
          break;
                 
         case  2:                        // 2号电机
	               
	          switch((dangqian+1))     
	           {  
	               case  1:              // 2号电机的速度设置
	                
	                 switch(key)
	                  {
	                     case   1:        // 速度值位数的大小设置
	                          arr[0]=9;      
	                          sudu2++;if(sudu2==10)sudu2=0;          
	                          arr[1]=sudu2;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   2:        // 速度值位数的移动设置
	                          arr[0]=10;
                              OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   3:        // 切换选项设置          
	               
	                          arr[0]=3;
	                          dangqian++;
	                          if(dangqian==3)dangqian=0; 
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   4:        // 切换电机的序号
	                          arr[0]=4;
	                          xuhao++;
	                          if(xuhao==3)xuhao=0;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     default:
                         break;
                     }
                   break;
                   
                   case  2:               //  2号电机的位移设置 
                   
                     switch(key)
	                  {
	                     case   1:        // 位移值位数的大小设置
	                          arr[0]=11;      
	                          weiyi2++;if(weiyi2==10)weiyi2=0;          
	                          arr[1]=weiyi2;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   2:        // 位移值位数的移动设置
	                          arr[0]=12;
                              OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   3:        // 切换选项设置          
	               
	                          arr[0]=3;
	                          dangqian++;
	                          if(dangqian==3)dangqian=0; 
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   4:        // 切换电机的序号
	                          arr[0]=4;
	                          xuhao++;
	                          if(xuhao==3)xuhao=0;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     default:
                         break;
                     }
                   break;
                   
                  case  3:               //  2号电机的转向设置 
                   
                     switch(key)
	                  {
	                     case   1:        // 正转
	                          arr[0]=13; 
	                          x2=0;   
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   2:        // 反转
	                          arr[0]=14;
	                          x2=1;
                              OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   3:        // 切换选项设置          
	               
	                          arr[0]=3;
	                          dangqian++;
	                          if(dangqian==3)dangqian=0; 
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   4:        // 切换电机的序号
	                          arr[0]=4;
	                          xuhao++;
	                          if(xuhao==3)xuhao=0;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     default:
                         break;
                     }
                   break;
                   default:
                      break; 
                  
               }             
                             
          break;
          
          
          
         case  3:                        // 3号电机
	               
	          switch((dangqian+1))     
	           {  
	               case  1:              // 3号电机的速度设置
	                
	                 switch(key)
	                  {
	                     case   1:        // 速度值位数的大小设置
	                          arr[0]=15;      
	                          sudu3++;if(sudu3==10)sudu3=0;          
	                          arr[1]=sudu3;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   2:        // 速度值位数的移动设置
	                          arr[0]=16;
                              OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   3:        // 切换选项设置          
	               
	                          arr[0]=3;
	                          dangqian++;
	                          if(dangqian==3)dangqian=0; 
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   4:        // 切换电机的序号
	                          arr[0]=4;
	                          xuhao++;
	                          if(xuhao==3)xuhao=0;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     default:
                         break;
                     }
                   break;
                   
                   case  2:               // 3号电机的位移设置 
                   
                     switch(key)
	                  {
	                     case   1:        // 位移值位数的大小设置
	                          arr[0]=17;      
	                          weiyi3++;if(weiyi3==10)weiyi3=0;          
	                          arr[1]=weiyi3;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   2:        // 位移值位数的移动设置
	                          arr[0]=18;
                              OSQPost(ReMsgQeue,(void*)arr);
	                     break;
	                     case   3:        // 切换选项设置          
	               
	                          arr[0]=3;
	                          dangqian++;
	                          if(dangqian==3)dangqian=0; 
	                          OSQPost(ReMsgQeue,(void*)arr);
	                     break;

⌨️ 快捷键说明

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