main.c

来自「博创2410的实验代码」· C语言 代码 · 共 147 行

C
147
字号
/***************************************************************************\
	Copyright (c) 2004-2007 threewater@up-tech.com, All rights reserved.
	by threewter	2004.5.12
\***************************************************************************/
/***************************************************************************\
    #说明: C  main 函数,ucos-ii初始化等定义
	----------------------------------  Bug  --------------------------------------

	----------------------------------  TODO list  --------------------------------------

	----------------------------------修正--------------------------------------
	2004-5-12	创建

\***************************************************************************/

#include"../ucos-ii/includes.h"               /* uC/OS interface */
#include "../ucos-ii/add/osaddition.h"
#include "../inc/drivers.h"

#include "../inc/sys/lib.h"
#include "../src/gui/gui.h"
#include <string.h>
#include <stdio.h>

#pragma import(__use_no_semihosting_swi)  // ensure no functions that use semihosting 


///******************任务定义***************///

OS_STK Main_Stack[STACKSIZE]={0, };   //Main_Test_Task堆栈
void Main_Task(void *Id);             //Main_Test_Task
#define Main_Task_Prio     12

OS_STK test_Stack[STACKSIZE]={0, };   //test_Test_Task堆栈
void test_Task(void *Id);             //test_Test_Task
#define test_Task_Prio     15


/**************已经定义的OS任务*************
#define SYS_Task_Prio				1
#define Touch_Screen_Task_Prio		9
#define Main_Task_Prio     12
#define Key_Scan_Task_Prio      58
#define Lcd_Fresh_prio           59
#define Led_Flash_Prio           60

***************************************/////////



///*****************事件定义*****************///


/////////////////////////////////////////////////////
//                  Main function.                //
////////////////////////////////////////////////////
int main(void)
{

	ARMTargetInit();        // do target (uHAL based ARM system) initialisation //

	OSInit();               // needed by uC/OS-II //

	OSInitUart();           //串口初始化

	initOSFile();          //OS文件系统初始化
#if USE_MINIGUI==0
	initOSMessage();        //创建OS消息队列
	initOSList();           //申请系统列表
	initOSDC();             //申请DC 
	initOSCtrl();           //申请系统控件
	LoadFont();             //加载字库 
#endif

	loadsystemParam();      //unuse
	
	// create the tasks in uC/OS and assign increasing //
	// priorities to them so that Task3 at the end of  //
	// the pipeline has the highest priority.          //
	LCD_printf("Create task on uCOS-II...\n");
	OSTaskCreate(Main_Task,  (void *)0,  (OS_STK *)&Main_Stack[STACKSIZE-1],  Main_Task_Prio);
//	OSTaskCreate(test_Task,  (void *)0,  (OS_STK *)&test_Stack[STACKSIZE-1],  test_Task_Prio);

	OSAddTask_Init(1);    //添加系统管理任务
  
	LCD_printf("Starting uCOS-II...\n");
	LCD_printf("Entering graph mode...\n");
	LCD_ChangeMode(DspGraMode); //改变显示模式

	OSStart();              // start the OS //

	// never reached //
	return 0;
}//main

void onKey(unsigned int nkey, int fnkey)
{
	PDC pdc;//创建绘图设备上下文结构
	U16 ch[10];
	char *str, skey[10];
	
	if((nkey&KEY_DOWN)==0)
		return;

	ClearScreen();//清屏
	pdc=CreateDC();//创建绘图设备上下文f

	switch(nkey&0xff){
	case 'N':
		str="NumLock"; //NumLock键按下
		break;
	case '\r':
		str="Enter";   //Enter键按下
		break;
	default:
		skey[0]=nkey; //其它键值处理
		skey[1]=0;
		str=skey;
	}

	printf("key=%s\n",str);
	strChar2Unicode(ch, str);//将整形数据转化成Unicode
	TextOut(pdc, 150, 100, ch, TRUE, FONTSIZE_MIDDLE);//文本模式下显示文字
	DestoryDC(pdc);//删除绘图设备上下文	
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void Main_Task(void *Id)             //Main_Test_Task
{
	POSMSG pMsg=0;//创建消息结构

	ClearScreen();//清屏

	//消息循环
	for(;;){
		pMsg=WaitMessage(0); //等待消息
		switch(pMsg->Message){
		case OSM_KEY://键盘消息
			onKey(pMsg->WParam,pMsg->LParam);
			break;
		}
		DeleteMessage(pMsg);//删除消息,释放资源
	}
}

⌨️ 快捷键说明

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