📄 osmessage.c
字号:
/*******************************************************************************
** 合肥国轩高科动力能源有限公司 Copyright (c)
** http://www.hfgxgk.com
** 电池组公司
**
**文 件 名:cancomm.c
**作 者:何耀
**创建日期:2009.03.13
**修改记录:
**文件说明:can总线通信协议
**版 本:v1.0
**备 注:基于ucosII嵌入式操作系统 + SAEJ1939
*******************************************************************************/
#ifndef _OSMESSAGE_SOURCE
#define _OSMESSAGE_SOURCE
#define OSM_GLOBALS
#include "..\CPU_source\includes.h"
OSMSG OSMsgQueue[OSMSG_MAX_SIZE];
INT8U osm_phead;
INT8U osm_ctr;/*当前消息个数*/
OS_EVENT *OSMsgQ; /*消息队列*/
void *OSMsgPtrs[OSMSG_MAX_SIZE];/*队列指针存储数组*/
void OSInitMessage(void)
{
osm_phead=0;
osm_ctr=0;
OSMsgQ=OSQCreate(&OSMsgPtrs[0],OSMSG_MAX_SIZE);
}
POSMSG OSCreateMessage(INT8U msg,INT8U wparam,INT8U lparam)
{
POSMSG pmsg=(POSMSG)0;
if(osm_ctr<OSMSG_MAX_SIZE)
{
OSMsgQueue[osm_phead].Message=msg;
OSMsgQueue[osm_phead].WParam=wparam;
OSMsgQueue[osm_phead].LParam=lparam;
osm_ctr++;
pmsg=(POSMSG)&OSMsgQueue[osm_phead++];
if(osm_phead==OSMSG_MAX_SIZE)
osm_phead=0;
}
return pmsg;
}
void OSSendMessage(POSMSG msgPtr)
{
if(msgPtr!=0){
OSQPost(OSMsgQ,(void*)msgPtr);
}
}
POSMSG OSWaitMessage(INT16U ticks)
{
INT8U err,*pmsg;
pmsg=OSQPend(OSMsgQ,ticks,&err);
if(err==OS_NO_ERR)
return (POSMSG)pmsg;
return 0;
}
void OSDelMessage(POSMSG msgPtr)
{
if(msgPtr!=0)
osm_ctr--;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -