/////////////////////////UCOSII任务堆栈设置///////////////////////////////////
//START 任务
#define START_TASK_PRIO 1
#define START_STK_SIZE 64
OS_STK START_TASK_STK[START_STK_SIZE];
void start_task(void *pdata);
//TOUCH任务
#define TOUCH_TASK_PRIO 3
#define TOUCH_STK_SIZE 1000
OS_STK TOUCH_TASK_STK[TOUCH_STK_SIZE];
void TOUCH_TASK(void *pdata);
#define DISP_TASK_PRIO 4
#define DISP_TASK_SIZE 1000
OS_STK DISP_TASK_STK[DISP_TASK_SIZE] ;
void DISP_Task(void *pdata);
void start_task(void *pdata)
{
OS_CPU_SR cpu_sr=0;
pdata = pdata;
OSStatInit(); //初始化统计任务.这里会延时1秒钟左右
OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断)
OSTaskCreate(TOUCH_TASK,(void *)0,(OS_STK*)&TOUCH_TASK_STK[TOUCH_STK_SIZE-1],TOUCH_TASK_PRIO);
OSTaskCreate(DISP_Task,(void *)0,(OS_STK*)&DISP_TASK_STK[DISP_TASK_SIZE-1],DISP_TASK_PRIO);
OSTaskSuspend(START_TASK_PRIO); //挂起起始任务.
OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)
}
void TOUCH_TASK(void *pdata)
{
pdata=pdata;
while(1)
{
GUI_TOUCH_Exec();
OSTimeDly(10);
}
}
void ANY_INIT()
{
delay_init(); //延时函数初始化
delay_ms(1000);
uart_init(9600);
TP_Init(); //触摸屏初始化
TIM3_Int_Init(1199,7199);
RTC_Init();
BEEP_Init();
GUI_Init();
AT24CXX_Init();
Beep();
}
void DISP_Task(void *pdata)
{
BUTTON_Handle OK;
GUI_PID_STATE touchpoint;
GUI_SetColor(GUI_BLACK);
GUI_SetFont(&GUI_Font24B_ASCII);
GUI_SetBkColor(GUI_WHITE);
GUI_Clear();
LCD_BLSet(5);
OK=BUTTON_Create(100,100,200,100,GUI_ID_OK,WM_CF_SHOW);
BUTTON_SetBkColor(OK, 1, GUI_RED);
GUI_GotoXY(10,20);
GUI_Exec();
while(1)
{
GUI_PID_GetState(&touchpoint);
GUI_DispDecAt(touchpoint.x,600,0,3);
GUI_DispDecAt(touchpoint.y,600,20,3);
GUI_DispDecAt(touchpoint.Pressed,600,40,1);
if(GUI_GetKey()==GUI_ID_OK)
GUI_DispString("A");
}
}
int main(void)
{
ANY_INIT();
OSInit();
OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//创建起始任务
OSStart();
}
这里是个小测试,一个任务扫描按键,一个显示。
GUI_PID_GetState(&touchpoint);
GUI_DispDecAt(touchpoint.x,600,0,3);
GUI_DispDecAt(touchpoint.y,600,20,3);
GUI_DispDecAt(touchpoint.Pressed,600,40,1);
可以通过上面的把按触摸的物理坐标,和触摸状态全都显示出来。
可是当点击按钮是没有什么反应,GUI_GetKey()得不到值。就像那个地方不存在按钮不样。请大家帮我分析下原因。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我想问一下,参照的那个帖子和这个问题有什么关系吗?可以说那个帖子是个好贴,但是和这个问题扯不上关系........无语了.......
扫描触摸按键,估计他驱动没弄好
一周热门 更多>