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

📄 linos.h.bak

📁 采用C++改写的uCOS-II,目标系统为MSP430系列CPU。
💻 BAK
字号:
#ifndef LINOS_H
#define LINOS_H

#include  "..\cpu\os_cpu.h"
#include  "..\cpu\os_cfg.h"

#define  OS_VERSION      100u            //equ ucosii 270u

#ifdef   OS_GLOBALS
#define  OS_EXT
#else
#define  OS_EXT  extern
#endif

/*----------------------------------------------------------------------------*/
/*                                  System var                                */
/*----------------------------------------------------------------------------*/
#if OS_TIME_GET_SET_EN>0        //Config:OS_TIME_GET_SET_EN
OS_EXT volatile INT32U OSTime;  //系统Tick
#endif
OS_EXT INT32U  OSCtxSwCtr;      //任务切换计数
OS_EXT INT8U   OSIntNesting;    //中断嵌套计数
OS_EXT INT8U   OSLockNesting;   //中断锁定调度计数
OS_EXT BOOLEAN OSRunning;       //系统运行标志

extern INT8U const OSMapTbl[8];     //优先级位表
extern INT8U const OSUnMapTbl[256]; //优先级索引表

void  OSInit(void);                        //系统初始化程序
INT8U OS_TCBInit(INT8U prio,OS_STK *ptos); //任务产生TCB初始化

void  OS_Sched(void); //任务调度程序

/*----------------------------------------------------------------------------*/
/*                                 IDL Task var                               */
/*----------------------------------------------------------------------------*/
OS_EXT volatile INT32U  OSIdleCtr;                    //IDL任务运行计数
OS_EXT OS_STK   OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE]; //IDL 任务堆栈,Config:OS_TASK_IDLE_STK_SIZE

void OS_TaskIdle(void *p_arg);

/*----------------------------------------------------------------------------*/
/*                                  TASK TCB                                  */
/*----------------------------------------------------------------------------*/
#define  OS_PRIO_SELF 0xFF  //表示当前任务优先级

#if OS_TASK_STAT_EN>0    //Config:OS_TASK_STAT_EN
#define OS_N_SYS_TASKS 2 //系统任务数:IDL,STAT
#else
#define OS_N_SYS_TASKS 1 //系统任务书:IDL
#endif

#define OS_RDY_TBL_SIZE  ((OS_LOWEST_PRIO>>3)+1)  //就绪表大小,Config:OS_LOWEST_PRIO

//任务状态值
#define  OS_STAT_RDY     0x00  //就绪状态
#define  OS_STAT_SEM     0x01  //等待信号量状态
#define  OS_STAT_MBOX    0x02  //等待油箱状态
#define  OS_STAT_Q       0x04  //等待队列状态
#define  OS_STAT_SUSPEND 0x08  //挂起状态
#define  OS_STAT_MUTEX   0x10  //等待互拆信号量状态
#define  OS_STAT_FLAG    0x20  //等待事件标志状态
typedef struct os_tcb
{
	OS_STK *OSTCBStkPtr; //堆栈当前指针

  struct os_tcb *OSTCBNext;  //指向下一个TCB
  struct os_tcb *OSTCBPrev;  //指向前一个TCB

  INT16U   OSTCBDly;   //延时等待
  INT8U    OSTCBStat;  //任务状态
  INT8U    OSTCBPrio;  //任务优先级

  INT8U    OSTCBX;     //用于快速访问就绪表:OSRdyTbl数组值中的位
  INT8U    OSTCBBitX;  //用于快速访问就绪表:OSRdyTbl数组值中位的位码
  INT8U    OSTCBY;     //用于快速访问就绪表:OSRdyTbl数组小标
  INT8U    OSTCBBitY;  //用于快速访问就绪表:OSRdyTbl数组小标的位码	
  
}OS_TCB;

OS_EXT INT8U   OSTaskCtr;                            //任务产生计数

OS_EXT INT8U   OSPrioCur;                 //当前任务优先级
OS_EXT INT8U   OSPrioHighRdy;             //就绪任务最高优先级
OS_EXT INT8U   OSRdyGrp;                  //就绪组清单
OS_EXT INT8U   OSRdyTbl[OS_RDY_TBL_SIZE]; //就绪表

OS_EXT OS_TCB *OSTCBCur;                             //指向当前任务
OS_EXT OS_TCB *OSTCBFreeList;                        //指向空的TCBS列表
OS_EXT OS_TCB *OSTCBHighRdy;                         //指向高优先就绪任务
OS_EXT OS_TCB *OSTCBList;                            //指向TCBS列表
OS_EXT OS_TCB *OSTCBPrioTbl[OS_LOWEST_PRIO+1];       //TCBS优先级指针连表,Config:OS_LOWEST_PRIO
OS_EXT OS_TCB OSTCBTbl[OS_MAX_TASKS+OS_N_SYS_TASKS]; //TCBS表,Config:OS_MAX_TASKS

INT8U  OSTaskCreate(void (*task)(void *pd),void *p_arg,OS_STK *ptos,INT8U prio);   //任务产生函数
OS_STK *OSTaskStkInit(void (*task)(void *pd),void *p_arg,OS_STK *ptos,INT16U opt); //任务堆栈初始化函数
#if OS_TASK_CHANGE_PRIO_EN > 0
INT8U  OSTaskChangePrio(INT8U oldprio,INT8U newprio); //任务优先级改变函数
#endif

#endif

⌨️ 快捷键说明

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