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

📄 momitask.c

📁 uCOS在PIC芯片中的移植:以PIC24HJ64GP210为例进行uCOS在Microchip芯片中的移植
💻 C
字号:
#define MOMI_TASK
#include <includes.h>


extern OS_EVENT *MboxTech_Momi;               //消息邮箱
extern MSG_TECH_MOMI_STRUCT MsgTech_Momi;  //手技处理任务向揉捏处理任务发送揉捏命令
extern INT8U WidthParameter;                     //当前宽度值,全局变量,
INT8U width_aim = 0;                              //目标宽度值,全局变量
INT8U MomiCycAim = 0;                            //目标揉捏周期数,为全局变量
#define  STANDARD_SPEED   20                  //默认揉捏速度

void  MomiTask(void *p_arg)
{
    (void)p_arg;
    INT8U momierror;
	MSG_TECH_MOMI_STRUCT   *MomiMass;           //缓存邮箱消息
    while (TRUE) 
    {  
        MomiMass = OSMboxPend(MboxTech_Momi,0,&momierror);
        if(MomiMass ==TECH_MBOX_STOP_RUN) //揉捏动作停止信息
        {
        	SETUP_MOMI_CCW(TECH_SPEED_STOP);
			//发布揉捏完成信息
    		OSMboxPost(MboxMomi_Finish,MBOX_VALID);
        }       
        else  //为手技调度函数发布的信息
        {
            MsgTech_Momi = *MomiMass;
            width_aim = MsgTech_Momi.MassWidth;//目标宽度参数值
            MomiCycAim = MsgTech_Momi.MomiRptNum;  //目标周期数
            if(MsgTech_Momi.MsgClass==TECH_MOMI_FRVR)
            {
                MomiFree ();
            	width_aim = 0;//目标宽度参数值
            	MomiCycAim = 0;  //目标周期数
            }
            else 
            {
            	switch ( MsgTech_Momi.MsgClass )
            	{
            	    case TECH_MOMI_WID_ADJ://宽度调整 1
            	        WidthChange ();
						MomiCycAim =1;
            	    break;
            	    case TECH_MOMI_RPT://有限揉捏 2
            	        MomiLimit ();
            	    break;
            	    default:
            	    break;
            	}
            	OSMboxPend(MboxCN_Width,0,&momierror);
            	SETUP_MOMI_CW(TECH_SPEED_STOP);
				//发布揉捏完成信息
    			OSMboxPost(MboxMomi_Finish,MBOX_VALID);
			}
        }
    
    }
}









void  WidthChange (void)   //宽度调整
{
    if(WidthParameter == width_aim )
    {
        OSMboxPost(MboxCN_Width,MBOX_VALID);//发布宽度到位信息
    }
    else if (WidthParameter >= width_aim )   //正转
    { 
        if (MsgTech_Momi.MomiSpeed == 0) //默认速度
        {
        	SETUP_MOMI_CW(DEFAULT_SPEED_MOMI);
        }
        else
        {
            SETUP_MOMI_CW(MsgTech_Momi.MomiSpeed);
        }    
	}
    else if (WidthParameter <= width_aim )  //反转
    {
        if (MsgTech_Momi.MomiSpeed == 0) //默认速度
        {
        	SETUP_MOMI_CCW(DEFAULT_SPEED_MOMI);
        }
        else
        {
            SETUP_MOMI_CCW(MsgTech_Momi.MomiSpeed);
        }    
    }
}
void  MomiLimit (void)     //有限揉捏
{
  if(MsgTech_Momi.MomiDirect  == TECH_MOMI_CW )//正向
    {
        SETUP_MOMI_CW(MsgTech_Momi.MomiSpeed);
    }
    else if (MsgTech_Momi.MomiDirect  == TECH_MOMI_CCW)//反向
    {
         SETUP_MOMI_CCW(MsgTech_Momi.MomiSpeed);    
    } 
}
void  MomiFree (void)      //无限揉捏
{
    if(MsgTech_Momi.MomiDirect  == TECH_MOMI_CW )//正向
    {
        SETUP_MOMI_CW(MsgTech_Momi.MomiSpeed);
    }
    else if (MsgTech_Momi.MomiDirect  ==  TECH_MOMI_CCW) //反向
    {
         SETUP_MOMI_CCW(MsgTech_Momi.MomiSpeed);    
   }
}





⌨️ 快捷键说明

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