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

📄 sosos.h

📁 基于AVR平台的RTOS
💻 H
字号:
/*=========================================================================================
项目名称: 小型开源实时操作系统
软件版本: VER 1.0
目标平台: AVR系列单片机
工具链  : AVR-GCC(V4.1.2) WINAVR-20070525
开发人员: 韩骁
开发时间: 2007-07-05
版权    : GPL(GNU General Public License)
文件名称: sosos.c
文件说明:
小型开源实时操作系统的应用包含文件
=========================================================================================*/
#ifndef __SOSOS_H
#define __SOSOS_H

#include "sosos_core.h"

#define SOSOS_PRI_LIMITED 0xff//超出最大优先级限制
#define SOSOS_ID_LIMITED 0xfe//超出最大任务数限制
#define SOSOS_TASK_EXIST 0xfd//任务已经存在
#define SOSOS_TASK_STACK_LIMITED 0xfc//任务堆栈溢出
#define SOSOS_TASK_TIMEOUT 0xef//任务延时退出
#define SOSOS_OK 0//正常返回

#define SOSOS_FLAG_OPT_CLR 00//事件标志清除操作
#define SOSOS_FLAG_OPT_SET 01//事件标志设置操作
#define SOSOS_SIGNAL_FREE 0//信号量空闲
#define SOSOS_SIGNAL_ENGROSS 0xff//信号量被占用

register unsigned char SOSOS_R0 asm("r2"); //系统预留寄存器0
register unsigned char SOSOS_R1 asm("r3"); //系统预留寄存器1
register unsigned char SOSOS_R2 asm("r4"); //系统预留寄存器2
register unsigned char SOSOS_R3 asm("r5"); //系统预留寄存器3
#if SOSOS_MUTEX_ENABLE != 1
register unsigned char SOSOS_R4 asm("r6"); //系统预留寄存器4
#endif

#if SOSOS_TASK_ENALBE == 1
void SososInitOs(void);//初始化SOSOS系统
void SososStartOs(void);//启动SOSOS系统
unsigned char SososCreateTask(void (*f)(void *),unsigned char ,unsigned char ,unsigned int ,void * );//创建任务
#endif
#if SOSOS_GET_TASK_ID_ENABLE == 1
unsigned char SososGetTaskId(void);//获得当前任务ID
#endif
#if SOSOS_SUSPEND_TASK_ENABLE == 1
void SososSuspendTask(unsigned char ,unsigned char );//挂起任务
#endif
#if SOSOS_RESUME_TASK_ENABLE == 1
void SososResumeTask(unsigned char ,unsigned char );//恢复任务
#endif
#if SOSOS_DELAY_TASK_ENABLE == 1
void SososDelay(unsigned int );//任务延时
#endif
#if STACK_SIZE_REPORT_ENABLE == 1
unsigned int SOSOS_TASK_STACK_CASE(unsigned char ,unsigned char );//堆栈情况报告
#endif

#if SOSOS_TIMER_ENABLE == 1
SOSOS_TIMEER_TYPE SososGetTimer(unsigned char );//获得指定定时器的定时值
void SososSetTimer(unsigned char ,SOSOS_TIMEER_TYPE );//设定指定定时器的定时值
#endif

#if SOSOS_LOGIC_SEM_ENABLE == 1//逻辑型信号量
#if SOSOS_QUERY_SEM_ENABLE == 1//查询信号量
SOSOS_SEM SososQueryLogicSem(SOSOS_SEM *);//逻辑型查询信号量
#endif
unsigned char SososLogicSemPend(SOSOS_SEM *,SOSOS_TIMEOUT_TYPE );//等待逻辑型信号量
void SososCreateLogicSem(SOSOS_SEM *,SOSOS_SEM);//创建逻辑型信号量void SososLogicSemPost(SOSOS_SEM *);//发送逻辑型信号量
#endif

#if SOSOS_COUNT_SEM_ENABLE == 1//计数型信号量
#if SOSOS_QUERY_SEM_ENABLE == 1//查询信号量
SOSOS_SEM SososQueryCountSem(SOSOS_SEM *);//查询计数型信号量
#endif
unsigned char SososCountSemPend(SOSOS_SEM *,SOSOS_TIMEOUT_TYPE );//等待计数型信号量
void SososCreateCountSem(SOSOS_SEM *,SOSOS_SEM);//创建计数型信号量void SososCountSemPost(SOSOS_SEM *);//发送计数型信号量
#endif

#if SOSOS_MUTEX_ENABLE == 1
void SososCreateMutex(SOSOS_MUTEX *,unsigned char);//创建互斥型信号量unsigned char SososGetMutex(SOSOS_MUTEX *,SOSOS_TIMEOUT_TYPE );//获得互斥型信号量
void SososFreeMutex(SOSOS_MUTEX *);//释放互斥型信号量
#endif
#if SOSOS_QUERY_MUTEX_ENABLE == 1
unsigned char SososQueryMutex(SOSOS_MUTEX *);//查询互斥型信号量状态
#endif

#if SOSOS_FLAG_ENABLE ==1
void SOSOS_FLAG_SEARCH_ALL_PRI_TASK(SOSOS_EVENT_FLAG *);//搜寻等待事件标志的任务
void SososCreateFlag(SOSOS_EVENT_FLAG *,SOSOS_FLAG_TYPE *,SOSOS_FLAG_TYPE ,SOSOS_FLAG_TYPE );//创建事件标志
unsigned char SososWaitFlag(SOSOS_EVENT_FLAG *,SOSOS_FLAG_TYPE ,SOSOS_FLAG_TYPE ,SOSOS_TIMEOUT_TYPE );//等待指定的事件
void SososChangeFlag(SOSOS_EVENT_FLAG *,SOSOS_FLAG_TYPE ,unsigned char );//改变事件标志
#endif
#if SOSOS_QUERY_FLAG_ENABLE == 1
SOSOS_FLAG_TYPE SososQueryFlag(SOSOS_EVENT_FLAG *);//查询事件标志状态
#endif

#endif//__SOSOS_H

⌨️ 快捷键说明

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