📄 cxttrig.c
字号:
/*********************************************************
Copyright (c) CMX Company. 1999. All rights reserved
*********************************************************/
/* version 5.30 */
#define CMXMODULE 1
#include <cxfuncs.h> /* get cmx include header file */
#include <cxextern.h> /* get cmx include header file */
#if (defined(CMXTRACKER) || defined(WINTRACKER))
#include <cmxtrack.h> /* get cmx include header file */
#endif
/****************************************************************
This function will place a task into the READY state, if in the
IDLE state. If the task is already triggered, then this will
be queued up. The maximum number of starts for a task, can be
255.
*****************************************************************/
byte K_Task_Start(byte tskid)
{
tcbpointer tcbptr;
if(K_I_Get_Ptr(tskid,&tcbptr)) /* send address of pointer */
{
#if (defined(CMXTRACKER) || defined(WINTRACKER))
if (CMXTRACKER_ON)
{
cmxtracker_in2(CXTTRIG_K_ERROR,tskid);
}
#endif
return(K_ERROR);
}
K_I_Disable_Sched(); /* set task block */
if (tcbptr->trig != 0xff) /* see if 0xFF, bypass if so */
{
if (++tcbptr->trig == 1) /* increment the task start count byte */
{
/* if count = 1, then put task into READY state */
tcbptr->tcbstate = READY;
/* see if this task has a higher priority then current RUNNING task */
if (tcbptr->priority < active_priority)
PREEMPTED; /* yes, set preempted scheduling flag */
}
}
#if (defined(CMXTRACKER) || defined(WINTRACKER))
if (CMXTRACKER_ON)
{
cmxtracker_in2(CXTTRIG_K_OK,tskid);
}
#endif
K_I_Func_Return(); /* release task block */
return(K_OK); /* return good status */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -