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

📄 windows.c

📁 基于STM32的RTOS例程
💻 C
字号:
/****************************************Copyright (c)***********************************
*
*               (c) Copyright 2006-2008, hui lian. luo, china, zj. hz 
*                            All Rights Reserved
*
*							 深圳市英蓓特信息技术有限公司
*                            http://www.embedinfo.com
*                            博格达科技有限公司
*                            http://www.bogodtech.com                         
*
*--------------文件信息------------------------------------------------------------------
* 文 件 名: windows.c
* 创 建 人: 罗辉联(wyuyun@hotmail.com, lhlzjut@hotmail.com) 	
* 创建日期: 2007年11月10日
* 描    述: mmi任务相关函数,OS组件创建
* 技术顾问: 楼东武(副教授)  浙江大学信电系
*
*---------- 版本信息---------------------------------------------------------------------
* 版    本: V1.1
* 说    明:
*
*----------------------------------------------------------------------------------------
****************************************************************************************/

#include "config.h"

/********************************* 全局变量定义 ****************************************/
OS_EVENT	*MmiMsgMbox;					    /* 定义MMI消息队列控制块 */

INT8U		GUI_Windows = MMI_WIN_MAIN;

INT8U		Interface;	                   		


/*
*****************************************************************************************
**						mmi_create_msg_mbox
** 
** 功能描述: 创建一个空的邮箱消息
** 参    数: None
** 返 回 值: None
** 作   者: 罗辉联
** 日   期: 2008年1月7日
**---------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**--------------------------------------------------------------------------------------
****************************************************************************************
*/

void mmi_create_msg_mbox(void)
{
	MmiMsgMbox = OSMboxCreate((void*)0);
}

/*
****************************************************************************************
**						mmi_send_msg
** 
** 功能描述: MMI 发送邮箱消息(虚拟键消息)
** 参    数: windows: 要发向的窗口
**           val    : 消息值
**           mParam : 参数1
**           wParam : 参数2
** 作   者: 罗辉联
** 日   期: 2008年1月7日
**---------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**---------------------------------------------------------------------------------------
*****************************************************************************************
*/

void mmi_send_msg(INT16U windows, INT16U val,INT32U mParam,INT32U wParam)
{
	INT8U  err;
	MMI_MSG_T*  pmsg = (void *)0; 
	
	pmsg = (MMI_MSG_T *)mem_malloc_sixteen(sizeof(MMI_MSG_T));
	pmsg->type	= MMI_MSG;
   	pmsg->win   = (MMI_GUI_T)windows;
	pmsg->value	= val;
	pmsg->mParam = mParam;
	pmsg->mParam = wParam;
	
	err = OSMboxPost(MmiMsgMbox, (void *)pmsg);
	
	if(err != OS_NO_ERR)
	{
		printf("Send msg to mmi mbox is err type: %d\n", err);
		return;
	}

}
/*
****************************************************************************************
**						mmi_send_key
** 
** 功能描述: MMI 发送邮箱消息(键盘消息)
** 参    数: windows: 要发向的窗口
**           key_val: 需要发送的键值
** 作   者: 罗辉联
** 日   期: 2008年1月7日
**---------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**--------------------------------------------------------------------------------------
****************************************************************************************
*/
void mmi_send_key(INT16U windows,INT16U key_val)
{
	INT8U  err;
	MMI_MSG_T*  pmsg = (void *)0; 
	
	pmsg = (MMI_MSG_T *)mem_malloc_sixteen(sizeof(MMI_MSG_T));
	pmsg->type	= MMI_KEY;
   	pmsg->win   = (MMI_GUI_T)windows;
	pmsg->value	= key_val;
	pmsg->mParam = 0;
	pmsg->mParam = 0;
	
	err = OSMboxPost(MmiMsgMbox, (void *)pmsg);
	
	if(err != OS_NO_ERR)
	{
		printf("Send msg to mmi mbox is err type: %d\n", err);
		return;
	}

}

/*
****************************************************************************************
**						mmi_task_core
** 
** 功能描述: MMI任务入口,窗口消息接收及其处理
** 参    数: pdata
** 作   者: 罗辉联
** 日   期: 2008年1月7日
**---------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**--------------------------------------------------------------------------------------
****************************************************************************************
*/
void mmi_task_core(void *pdata)
{
	INT8U  		err;
	MMI_MSG_T  *MboxResp = (void*)0; 
    
	pdata = pdata;                                  /* 避免编译警告 */
		
	printf("Mmi task start runing!\n");
	
	while(1)
	{												/* 等待消息 */
		MboxResp = (MMI_MSG_T *)OSMboxPend(MmiMsgMbox, 0, &err);
		
		if(err == OS_NO_ERR)
		{	
			switch(MboxResp->win)
			{
				case MMI_WIN_MAIN:	
					if(MMI_WIN_MAIN == GUI_Windows)
						win_main(MboxResp->type,MboxResp->value,MboxResp->mParam, MboxResp->wParam);			
					break;
					
				default:
					break;
			}
		}
		else
		{
			printf("It is fail when receive mmi mbox Type: %d\n",err);
		} 	
		
		mem_free_sixteen(MboxResp);
	}
}

/*
****************************************************************************************
**						win_main
** 
** 功能描述: 启动界面窗口
** 参    数: type   : 消息类型
**           val    : 消息值
**           mParam : 参数1
**           wParam : 参数2
** 作   者: 罗辉联
** 日   期: 2008年1月7日
**---------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**--------------------------------------------------------------------------------------
****************************************************************************************
*/
void win_main(INT8U type,INT16U value,INT32U mParam, INT32U wParam) 
{
  
	if(type == MMI_KEY)
	{	
		
		switch(value)
		{
		 	case 1:
			   	printf("You already  hit TEMP: %d!\n",value);
				break;
			case 2:
				printf("You already  hit WAKE UP: %d!\n",value);
				break;
			case 3:
				printf("You already  hit KEY1: %d!\n",value);
				break;
			case 4:
				printf("You already  hit KEY2: %d!\n",value);
				break;
			case 5:
				printf("You already  hit KEY3: %d!\n",value);
				break;
			case 6:
				printf("You already  hit KEY4: %d!\n",value);
				break;
			default:
				break;
		}
		
    	
		
	}
	else if(type == MMI_MSG)
	{
		printf("uart value: %d\n",value);
	}
}
/************************************** end of file *************************************/








⌨️ 快捷键说明

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