📄 tatakitask.c
字号:
#define TATAKI_TASK
#include <includes.h>
extern OS_EVENT *MboxTech_Tataki; //捶打任务信箱
extern MSG_TECH_TATAKI_STRUCT MsgTech_Tataki;
INT8U TatakiSpdLvlGroups[10]; //捶打速度组
INT8U TatakiSpeedIndex=0; //捶打速度指针
INT8U TatakiSpeedEndIndex=0; //捶打速度终点指针
INT8U TatakiSpeedDir=1; //捶打速度变化方向,1为递增,0为递减
void SetTatakiSpeedGroup (void)
{
INT8U i;
for (i=0;i<10;i++)
{
TatakiSpdLvlGroups[i] = 0;
}
//TatakiSpdLvlGroups[0] = (INT32U)TatakiPwmTable[ MsgTech_Tataki.TatakiLSpeed-1 ]*PR3/100; //低速
TatakiSpdLvlGroups[0] = MsgTech_Tataki.TatakiLSpeed; //低速
TatakiSpeedEndIndex = 0;
switch ( MsgTech_Tataki.TatakiMode)
{
case 2: //双速交替
TatakiSpdLvlGroups[1] = MsgTech_Tataki.TatakiHSpeed;//高速
TatakiSpeedEndIndex = 1; //捶打速度终点指针
break;
case 3: //循环多速
TatakiSpeedEndIndex = MsgTech_Tataki.TatakiHSpeed-MsgTech_Tataki.TatakiLSpeed;//高速-低速 //捶打速度终点指针
for(i=1;i<=TatakiSpeedEndIndex;i++)
{
TatakiSpdLvlGroups[i] = MsgTech_Tataki.TatakiLSpeed+i; //设定捶打速度组
}
break;
case 1:
break;
default: //单一速度及其他
break;
}
}
void SetAlterSpeed (void)
{
SETUP_TATAKI(TatakiSpdLvlGroups[TatakiSpeedIndex]);
if(TatakiSpeedDir==1)
{
if(TatakiSpeedIndex<TatakiSpeedEndIndex)
TatakiSpeedIndex++;
else
{
TatakiSpeedDir=0;
TatakiSpeedIndex--;
}
}
else
{
if(TatakiSpeedIndex>0)
TatakiSpeedIndex--;
else
{
TatakiSpeedDir=1;
TatakiSpeedIndex++;
}
}
}
void TatakiTask(void *p_arg)
{
MSG_TECH_TATAKI_STRUCT *TatakiMass;
(void)p_arg;
INT8U tatakierror;
void *msg;
TatakiSpeedIndex=0;
while (TRUE)
{
TatakiMass = OSMboxPend(MboxTech_Tataki,0,&tatakierror);
if (TatakiMass ==(void*)1) //未用
{
;
}
else if(TatakiMass ==TECH_MBOX_STOP_RUN) //捶打动作停止信息
{
SETUP_TATAKI(TECH_SPEED_STOP);
OSMboxPost(MboxTataki_Finish,MBOX_VALID);
}
else//为手技调度发布的信息,
{
//捶打信息分析及动作
MsgTech_Tataki = *TatakiMass;
SetTatakiSpeedGroup ();//捶打速度组,捶打终点指针设定
if(MsgTech_Tataki.FollowMode == TECH_FLW_ALTER) //定距间隔作动
{
if (MsgTech_Tataki.TatakiMode == TECH_TATAKI_SIMPLE) //单一速度
{
SETUP_TATAKI(TatakiSpdLvlGroups[0]);
}
else
{
SetAlterSpeed();
}
OSTimeDly(TICKS(TtkKeepTimeTab[MsgTech_Tataki.KeepTime-1]));//等待作動保持時間,
SETUP_TATAKI(TECH_SPEED_STOP); //捶打PWM=0,
OSMboxPost(MboxTataki_Finish,MBOX_VALID);
}
else
{
if (MsgTech_Tataki.TatakiMode== TECH_TATAKI_SIMPLE) //单一速度
{
SETUP_TATAKI(TatakiSpdLvlGroups[0]);// 捶打PWM = TatakiSpdLvlGroups[0];
}
else
{
while (1) //循环体
{
SetAlterSpeed();
OSTimeDly(TICKS(TtkKeepTimeTab[MsgTech_Tataki.KeepTime-1]));//等待作动时间
msg = OSMboxAccept(MboxTech_Tataki);//检查邮箱信息
if(msg ==TECH_MBOX_STOP_RUN) //停止信息
{
SETUP_TATAKI(TECH_SPEED_STOP);
OSMboxPost(MboxTataki_Finish,MBOX_VALID);
break;
}
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -