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

📄 manual.txt

📁 基于AVR单片机的 RTOS实时操作系统
💻 TXT
📖 第 1 页 / 共 3 页
字号:
            OS_Q_OK:成功
    全局变量: 无
    调用模块: 无
    
(7)OSQPend()
    原型:uint8 OSQPend(uint8 idata *Ret, uint8 OS_Q_MEM_SEL *Buf, uint8 Tick);
    功能描述: 等待消息队列中的消息
    输 入: Ret:返回的消息
            Buf:指向队列的指针
            Tick:等待时间
    输 出: NOT_OK:参数错误
            OS_Q_OK:收到消息
            OS_Q_TMO:超时到
            OS_Q_NOT_OK:无消息
    全局变量: 无
    调用模块: OSRunningTaskID,OSClearSignal,OSSched,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(8)OSQAccept()
    原型:uint8 uint8 OSQAccept(uint8 idata *Ret, uint8 OS_Q_MEM_SEL *Buf);
    功能描述: 无等待从消息队列中取得消息
    输 入: Ret:返回的消息
            Buf:指向队列的指针
    输 出: NOT_OK:参数错误
            OS_Q_OK:收到消息
            OS_Q_TMO:超时到
            OS_Q_NOT_OK:无消息
    全局变量: 无
    调用模块: OSClearSignal,OSSched,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(8)OSQIntPost()
    原型:uint8 OSQIntPost(uint8 OS_Q_MEM_SEL *Buf, uint8 Data);
    功能描述: 中断中FIFO方式发送消息
    输 入: Buf:指向队列的指针
            Data:消息数据
    输 出: OS_Q_FULL:队列满
            OS_Q_OK:发送成功
    全局变量: 无
    调用模块: OSIntSendSignal,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(9)OSQIntPostFront()
    原型:uint8 OSQIntPostFront(uint8 OS_Q_MEM_SEL *Buf, uint8 Data);
    功能描述: 中断中LIFO方式发送消息
    输 入: Buf:指向队列的指针
            Data:消息数据
    输 出: OS_Q_FULL:队列满
            OS_Q_OK:发送成功
    全局变量: 无
    调用模块: OSIntSendSignal,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(10)OSQPost()
    原型:uint8 OSQPost(uint8 OS_Q_MEM_SEL *Buf, uint8 Data);
    功能描述: FIFO方式发送消息
    输 入: Buf:指向队列的指针
            Data:消息数据
    输 出: OS_Q_FULL:队列满
            OS_Q_OK:发送成功
    全局变量: 无
    调用模块: OSQIntPost,OSSched
(11)OSQPostFront()
    原型:uint8 OSQPostFront(uint8 OS_Q_MEM_SEL *Buf, uint8 Data);
    功能描述: LIFO方式发送消息
    输 入: Buf:指向队列的指针
            Data:消息数据
    输 出: OS_Q_FULL:队列满
            OS_Q_OK:发送成功
    全局变量: 无
    调用模块: OSQIntPostFront,OSSched
(12)OSQNMsgs()
    原型:uint8 OSQNMsgs(uint8 OS_Q_MEM_SEL *Buf);
    功能描述: 取得消息队列中消息数
    输 入: Buf:指向队列的指针
    输 出: 消息数
    全局变量: 无
    调用模块: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(13)OSQSize()
    原型:uint8 OSQSize(uint8 OS_Q_MEM_SEL *Buf);
    功能描述: 取得消息队列总容量
    输 入: Buf:指向队列的指针
    输 出: 消息队列总容量
    全局变量: 无
    调用模块: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(14)OSQFlush()
    原型:void OSQFlush (uint8 OS_Q_MEM_SEL *Buf);
    功能描述: 清空队列
    输 入: Buf:指向队列的指针
    输 出: 无
    全局变量: 无
    调用模块: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(15)OSSemCreate()
    原型:uint8 OSSemCreate(uint8 index,uint8 Data);
    功能描述: 初始化消息队列
    输 入: index:信号量索引
            data:信号量初始值
    输 出: NOT_OK:没有这个信号量
            OS_SEM_OK:成功
    全局变量: 无
    调用模块: 无
(16)OSSemPend()
    原型:uint8 OSSemPend(uint8 index, uint8 Tick);
    功能描述: 等待一个信号量
    输 入: index:信号量索引
            Tick:等待时间
    输 出: NOT_OK:参数错误
            OS_SEM_OK:得到信号量
            OS_SEM_TMO:超时到
            OS_SEM_NOT_OK:没有得到信号量
    全局变量: 无
    调用模块: OSRunningTaskID,OSClearSignal,OSSched,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(17)OSSemAccept()
    原型:uint8 OSSemAccept(uint8 index);
    功能描述: 无等待请求信号量
    输 入: index:信号量索引
    输 出: NOT_OK:参数错误
            OS_SEM_OK:得到信号量
            OS_SEM_TMO:超时到
            OS_SEM_NOT_OK:没有得到信号量
    全局变量: 无
    调用模块: OSClearSignal,OSSched,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(18)OSSemIntPost()
    原型:uint8 OSSemIntPost(uint8 index);
    功能描述: 中断中发送一个信号量
    输 入: index:信号量索引
    输 出: NOT_OK:参数错误
            OS_SEM_OK:发送成功
    全局变量: 无
    调用模块: OSIntSendSignal,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
(19)OSSemPost()
    原型:uint8 OSSemPost(uint8 index);
    功能描述: 发送一个信号量
    输 入: index:信号量索引
    输 出: NOT_OK:参数错误
            OS_SEM_OK:发送成功
    全局变量: 无
    调用模块: OSSemIntPost,OSSched
(20)OSSemQuery()
    原型:uint8 OSSemQuery(uint8 index);
    功能描述: 查询信号量
    输 入: index:信号量索引
    输 出: 信号量的值
    全局变量: 无
    调用模块: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL




Small RTOS的数据结构:
(1)OSTaskRuning
     定义:

     #if OS_MAX_TASKS < 9
     uint8 OSTaskRuning = 0xff;
     #else
     uint16 OSTaskRuning = 0xffff; 
     #endif

     OSTaskRuning存储着每一个任务状态(就绪/运行还是休眠),每一个
     任务存储一位,1代表就绪/运行,0代表休眠。OSTaskRuning的最低位
     存储ID为0的任务状态,次低位存储ID为0的任务状态。以此类推。
(2)OSWaitTick
     定义:

     uint8 OSWaitTick[OS_MAX_TASKS];

     OSWaitTick存储各个任务剩余等待系统节拍数。
(3)OSIntNesting
     定义:

     #if EN_OS_INT_ENTER > 0 
     uint8 OSIntNesting;
     #endif
     
     OSIntNesting存储中断嵌套层数。      
(4)OSTaskID
     定义:

     uint8 OSTaskID;
     
     OSTaskID存储当前运行任务的ID。
(5)OSNextTaskID
     定义:

     uint8 OSNextTaskID;

     OSNextTaskID用于标明将要运行的任务的ID
(6)Os_Enter_Sum
     定义:

     uint8 Os_Enter_Sum=0;
    
     Os_Enter_Sum是OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()使用的
     信号量。
(7)消息队列数据结构
     定义(用户程序中):

     uint8 OS_Q_MEM_SEL SerialData[n];

     任务数小于9个时:
     Buf[0]:队列中字节数,
     Buf[1]:Buf总长度
     Buf[2]:出对端,
     Buf[3]:等待队列任务列表
     Buf[4]~Buf[n-1]:存储消息

     任务数大于8个时:
     Buf[0]:队列中字节数,
     Buf[1]:Buf总长度
     Buf[2]:出对端,
     Buf[3]、Buf[4]:等待队列任务列表
     Buf[5]~Buf[n-1]:存储消息
(8)信号量数据结构
     定义:
     #if OS_MAX_TASKS < 9    
     uint8 OS_SEM_MEM_SEL OsSemBuf[OS_MAX_SEMS*2];
     #else
     uint8 OS_SEM_MEM_SEL OsSemBuf[OS_MAX_SEMS*3];
     #endif
    
     任务数小于9个时(index为0~(OS_MAX_SEMS-1)):
     OsSemBuf[index * 2]:信号量的值
     OsSemBuf[index * 2 + 1]:等待信号量的任务列表
     
     任务数小于9个时(index为0~(OS_MAX_SEMS-1)):
     OsSemBuf[index * 3]:信号量的值
     OsSemBuf[index * 3 + 1]、OsSemBuf[index * 3 + 2]:等待信号量
     的任务列表

Small RTOS 51的特殊的数据结构:
(1)OSFastSwap
     定义:

     #if OS_MAX_TASKS < 9            
     unsigned char data OSFastSwap=0xff;
     #else
     unsigned int data OSFastSwap=0xffff;
     #endif

     OSFastSwap存储着每一个任务如何被切换(自己调用OSSchedt还是中断
     程序激活更高级任务),每一个任务存储一位,1代表因为自己调用
     OSSched而被切换,0代表因为中断程序激活更高级任务而被切换。最低
     位存储ID为0的任务状态,次低位存储ID为0的任务状态。以此类推。
     如果任务因为自己调用OSSched而被切换,则需要存储的任务环境所需内
     部RAM少的多。
(2)OSTsakStackBotton
     定义:

     unsigned char idata * OSTsakStackBotton[OS_MAX_TASKS+2];/* 任务堆栈底部位置            */

     OSTsakStackBotton存储各个任务的栈底和栈顶位置。因为后一个任务
     的栈底是前一个任务的栈顶,因此其个数为OS_MAX_TASKS+2(任务数量
     为OS_MAX_TASKS+1,其中有一个隐含任务)。考虑到第一个任务的栈底
     和最后一个任务的栈顶的值在运行时实际不会改变,OSTsakStackBotton

⌨️ 快捷键说明

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