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

📄 os_time.c

📁 采用C++改写的uCOS-II,目标系统为MSP430系列CPU。
💻 C
字号:
#ifndef  OS_MASTER_FILE
#include "linos.h"
#endif

/*
*******************************************************************************
*                                  任务延时函数                               *
*******************************************************************************
*/
void  OSTimeDly (INT16U ticks)
{
#if OS_CRITICAL_METHOD == 3
  OS_CPU_SR  cpu_sr;
#endif    
  INT8U      y;

  if(ticks > 0)
  {
    OS_ENTER_CRITICAL();
    y            =  OSTCBCur->OSTCBY;
    OSRdyTbl[y] &= ~OSTCBCur->OSTCBBitX;
    if(OSRdyTbl[y] == 0) //如果就绪组无其他任务就绪,清除就绪组
    {  
      OSRdyGrp &= ~OSTCBCur->OSTCBBitY;
    }
    OSTCBCur->OSTCBDly = ticks;
    OS_EXIT_CRITICAL();
    OS_Sched(); //进行任务调度
  }
}

/*
*******************************************************************************
*                                取消任务延时函数                             *
*******************************************************************************
*/
#if OS_TIME_DLY_RESUME_EN > 0
INT8U  OSTimeDlyResume (INT8U prio)
{
#if OS_CRITICAL_METHOD == 3
  OS_CPU_SR  cpu_sr;
#endif    
  OS_TCB    *ptcb;


#if OS_ARG_CHK_EN > 0  //优先级检查
  if(prio >= OS_LOWEST_PRIO)
  {
    return (OS_PRIO_INVALID);
  }
#endif
  
  OS_ENTER_CRITICAL();
  ptcb = (OS_TCB *)OSTCBPrioTbl[prio];
  if(ptcb != (OS_TCB *)0)
  {
    if(ptcb->OSTCBDly != 0) //如果延时值大于0,取消延时
    {
      ptcb->OSTCBDly  = 0;
      if((ptcb->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY)  //任务挂起时,不进行调度
      {
        OSRdyGrp               |= ptcb->OSTCBBitY; //设置任务为就绪状态
        OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
        OS_EXIT_CRITICAL();
        OS_Sched();  //任务调度
      }
      else
      {
        OS_EXIT_CRITICAL();
      }//if((ptcb->OSTCBStat...
      return (OS_NO_ERR);
    }
    else
    {
      OS_EXIT_CRITICAL();
      return (OS_TIME_NOT_DLY);
    }//if(ptcb->OSTCBDly...
  }//if(ptcb !=...
  OS_EXIT_CRITICAL();
  return (OS_TASK_NOT_EXIST);
}
#endif    

⌨️ 快捷键说明

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