main.c

来自「嵌入式系统Lcd触摸屏实验」· C语言 代码 · 共 113 行

C
113
字号
/***************************************************************************\
	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>
#include "uhal/uhal.h"
#pragma import(__use_no_semihosting_swi)  // ensure no functions that use semihosting 




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


OS_STK task1_Stack[STACKSIZE]={0, };   //Main_Test_Task堆栈
void Task1(void *Id);             //Main_Test_Task
#define Task1_Prio     2

extern OS_EVENT *pevent;


extern void TchScr_init(void);
extern void irq_TCHSCR(void);
extern void LCD_Init(void);
extern void draw_keyboard(void);
extern void	clearscreen(void);

U32 TchScr_GetOSXY(int *x, int *y,int lable);
void getkey(int x,int y);



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


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

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

	OSInit();   // needed by uC/OS-II //
	
	
    LCD_Init();
    LCD_Refresh();
	clearscreen();
	
	TchScr_init1();           //初始化触摸屏,此时为非中断方式。
	
	// ( 校准触摸屏);            //校准触摸屏,取得LCD四个角上的电压值,然后求得电压值最大最小值。
	draw_keyboard();
    //TchScr_Clibrate();
    
    OSTaskCreate(Task1,  (void *)0,  (OS_STK *)&task1_Stack[STACKSIZE-1],  Task1_Prio); 
	
	pevent=OSMboxCreate((void*)NULL);
   
    
    OSAddTask_Init(1);
  
	OSStart();             // start the OS //
    return 0;
}//main


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void Task1(void *Id)
{
	U16 timeout=0;
    U8 err;
    int x,y;
    U32 mode;
 
    TchScr_init();  //初始化触摸屏,以中断方式开始工作。
    
    for(;;){
		
	  OSMboxPend(pevent,timeout,&err); //等到触摸屏中断
	  mode=TchScr_GetOSXY(&x, &y,1);    //进行坐标转换,取得在LCD坐标值。
      printf("\nx=%d,\ty=%d\n",x,y);         
       getkey(x,y);           //取得键盘值。
	  OSTimeDly(1000);
		
	}
}






⌨️ 快捷键说明

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