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

📄 os_q.h

📁 在嵌入系统中使用RTOS是大势所趋。原因主要是现在在大多数情况下编程效率比执行效率重要(单片机便宜嘛)。本文件适用于51单片机
💻 H
字号:
/*********************************************************************************************************
**				                               Small RTOS(51)
**                                   The Real-Time Kernel(For Keil c51)
**
**                                  (c) Copyright 2002-2003, chenmingji
**                                           All Rights Reserved
**
**                                                  V1.12.0
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: OS_Q.h
**创   建   人: 陈明计
**最后修改日期:  2002年12月2日
** 描 述: Small RTOS(51)消息队列头文件,定义一些宏和声明一些函数
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 陈明计
** 版  本: V1.10
** 日 期: 2002年6月20日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 版  本: V1.11.0
** 日 期: 2002年12月2日
** 描 述: 增加注释
**
**------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 版  本: V1.11.0
** 日 期: 2002年12月30日
** 描 述: 没用变化
**
**--------------当前版本修订-----------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/


#ifndef NOT_OK
#define NOT_OK      255                                 /* 参数错误                                     */
#endif

#define OS_Q_FULL   8                                   /* 队列满                                       */
#define OS_Q_NOT_OK 4                                   /* 无消息                                       */
#define OS_Q_TMO    2                                   /* 超时到                                       */
#define OS_Q_OK     1                                   /* 操作成功                                     */

#ifndef IN_OS_Q
extern uint8 OSQCreate(uint8 OS_Q_MEM_SEL *Buf, uint8 SizeOfBuf);
/*********************************************************************************************************
** 函数名称: OSQCreate
** 功能描述: 初始化消息队列
** 输 入: Buf:为队列分配的存储空间地址
**         SizeOfBuf:为队列分配的存储空间大小
** 输 出: NOT_OK:参数错误
**         OS_Q_OK:成功
** 全局变量: 无
** 调用模块: 无
********************************************************************************************************/
extern uint8 OSQPend(uint8 data *Ret, uint8 OS_Q_MEM_SEL *Buf, uint8 Tick);
/*********************************************************************************************************
** 函数名称: OSQPend
** 功能描述: 等待消息队列中的消息
** 输 入: Ret:返回的消息
**         Buf:指向队列的指针
**         Tick:等待时间
** 输 出: NOT_OK:参数错误
**         OS_Q_OK:收到消息
**         OS_Q_TMO:超时到
**         OS_Q_NOT_OK:无消息
** 全局变量: 无
** 调用模块: OSRunningTaskID,OSClearSignal,OSSched,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
********************************************************************************************************/
extern uint8 OSQAccept(uint8 data *Ret, uint8 OS_Q_MEM_SEL *Buf);
/*********************************************************************************************************
** 函数名称: OSQAccept
** 功能描述: 无等待从消息队列中取得消息
** 输 入: Ret:返回的消息
**         Buf:指向队列的指针
** 输 出: NOT_OK:参数错误
**         OS_Q_OK:收到消息
**         OS_Q_TMO:超时到
**         OS_Q_NOT_OK:无消息
** 全局变量: 无
** 调用模块: OSClearSignal,OSSched,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
********************************************************************************************************/
extern uint8 OSQPost(uint8 OS_Q_MEM_SEL *Buf, uint8 Data);
/*********************************************************************************************************
** 函数名称: OSQPost
** 功能描述: FIFO方式发送消息
** 输 入: Buf:指向队列的指针
**         Data:消息数据
** 输 出: OS_Q_FULL:队列满
**         OS_Q_OK:发送成功
** 全局变量: 无
** 调用模块: OSQIntPost,OSSched
********************************************************************************************************/
extern uint8 OSQPostFront(uint8 OS_Q_MEM_SEL *Buf, uint8 Data);
/*********************************************************************************************************
** 函数名称: OSQPostFront
** 功能描述: LIFO方式发送消息
** 输 入: Buf:指向队列的指针
**         Data:消息数据
** 输 出: OS_Q_FULL:队列满
**         OS_Q_OK:发送成功
** 全局变量: 无
** 调用模块: OSQIntPostFront,OSSched
********************************************************************************************************/
extern uint8 OSQIntPost(uint8 OS_Q_MEM_SEL *Buf, uint8 Data);
/*********************************************************************************************************
** 函数名称: OSQIntPost
** 功能描述: 中断中FIFO方式发送消息
** 输 入: Buf:指向队列的指针
**         Data:消息数据
** 输 出: OS_Q_FULL:队列满
**         OS_Q_OK:发送成功
** 全局变量: 无
** 调用模块: OSIntSendSignal,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
********************************************************************************************************/
extern uint8 OSQIntPostFront(uint8 OS_Q_MEM_SEL *Buf, uint8 Data);
/*********************************************************************************************************
** 函数名称: OSQIntPostFront
** 功能描述: 中断中LIFO方式发送消息
** 输 入: Buf:指向队列的指针
**         Data:消息数据
** 输 出: OS_Q_FULL:队列满
**         OS_Q_OK:发送成功
** 全局变量: 无
** 调用模块: OSIntSendSignal,OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
********************************************************************************************************/
extern uint8 OSQNMsgs(uint8 OS_Q_MEM_SEL *Buf);
/*********************************************************************************************************
** 函数名称: OSQNMsgs
** 功能描述: 取得消息队列中消息数
** 输 入: Buf:指向队列的指针
** 输 出: 消息数
** 全局变量: 无
** 调用模块: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
********************************************************************************************************/
extern uint8 OSQSize(uint8 OS_Q_MEM_SEL *Buf);
/*********************************************************************************************************
** 函数名称: OSQSize
** 功能描述: 取得消息队列总容量
** 输 入: Buf:指向队列的指针
** 输 出: 消息队列总容量
** 全局变量: 无
** 调用模块: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
********************************************************************************************************/
extern void OSQFlush (uint8 OS_Q_MEM_SEL *Buf);
/*********************************************************************************************************
** 函数名称: OSQFlush
** 功能描述: 清空队列
** 输 入: Buf:指向队列的指针
** 输 出: 无
** 全局变量: 无
** 调用模块: OS_ENTER_CRITICAL,OS_EXIT_CRITICAL
**
** 作 者: 陈明计
** 日 期: 2002年9月1日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2002年10月26日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#endif

⌨️ 快捷键说明

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