📄 os_mail.c
字号:
/********************************************
嵌入式系统 小型操作系统
作者:汪普宏
制作日期:2006.9
*********************************************/
#include <os.h>
#include"OS_Mail.h"
void * xdata QBuf[QBOX_LENTH];
QUEUE xdata Queue;
void OSIint_Queue(void)
{
Queue.w=QBuf;
Queue.r=QBuf;
Queue.lenth=0;
}
/****************************************
制作日期:2006.10
函数功能:从消息列队中获取消息
函数入口参数:无
调用者:任务
返回值:成功时返回读出的消息指针,错误返回NULL
*****************************************/
uchar xdata *OSQueue_Rece(void) //从队列缓冲环区中读出消息
{
uchar xdata *buf;
buf=(uchar xdata*)Queue.r;
if(Queue.lenth>0)
{
OS_CLOSEISR;
if(Queue.r<&QBuf[QBOX_LENTH]) //边界检查
{
Queue.r++;
}
else
{
Queue.r=QBuf;
}
Queue.lenth--;
OS_OPENISR;
return buf;
}
else
{
return NULL;
}
}
/****************************************
制作日期:2006.10
函数功能:发送消息到消息列队
函数入口参数:发送的消息指针
调用者: 任务或中断
返回值:成功时返回OK,错误返回NULL
*****************************************/
uchar OSQueue_Send(uchar xdata *p) //发送消息到队列中
{
OS_CLOSEISR;
if(Queue.lenth<QBOX_LENTH)
{
Queue.w=(void*)p;
if(Queue.w<&QBuf[QBOX_LENTH]) //边界检查
{
Queue.w++;
}
else
{
Queue.w=QBuf;
}
}
else
{
OS_OPENISR;
return NULL;
}
Queue.lenth++;
OS_OPENISR;
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -