📄 main.c
字号:
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 + -