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

📄 osmessage.c

📁 mega16 ucos操作系统
💻 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 + -