OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3907|回复: 8

关于UCGUI+UCOS中GUI_GetKey()得不到键值的问题。

[复制链接]

5

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2013-9-11
在线时间
40 小时
发表于 2014-9-9 16:04:00 | 显示全部楼层 |阅读模式
5金钱

/////////////////////////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()得不到值。就像那个地方不存在按钮不样。请大家帮我分析下原因。

UCOSII.zip

1.8 MB, 下载次数: 203

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2013-9-11
在线时间
40 小时
 楼主| 发表于 2014-9-9 16:05:20 | 显示全部楼层
附件是程序。板子是自己做的。
回复

使用道具 举报

5

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2013-9-11
在线时间
40 小时
 楼主| 发表于 2014-9-9 17:02:44 | 显示全部楼层
顶一下。。。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-9-9 19:15:58 | 显示全部楼层
GUI_TOUCH_Exec();这个家伙扫描要比较频繁的,100次/秒吧
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

5

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2013-9-11
在线时间
40 小时
 楼主| 发表于 2014-9-10 08:59:41 | 显示全部楼层
回复【4楼】Badu_Space:
---------------------------------
100次一秒刚才试好下也不行啊。OSTimeDly(1)都不行。
回复

使用道具 举报

5

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2013-9-11
在线时间
40 小时
 楼主| 发表于 2014-9-10 09:00:43 | 显示全部楼层
求各大神指导 下
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-9-10 12:33:08 | 显示全部楼层
回复【5楼】wfy9041:
---------------------------------
可以参考一下这个帖子http://www.openedv.com/posts/list/36299.htm
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2017-7-26
在线时间
29 小时
发表于 2017-10-17 09:48:02 | 显示全部楼层
八度空间 发表于 2014-9-10 12:33
回复【5楼】wfy9041:
---------------------------------
可以参考一下这个帖子http://www.openedv.com ...

我想问一下,参照的那个帖子和这个问题有什么关系吗?可以说那个帖子是个好贴,但是和这个问题扯不上关系........无语了.......
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-10-18 11:20:25 | 显示全部楼层
ZZBEAM 发表于 2017-10-17 09:48
我想问一下,参照的那个帖子和这个问题有什么关系吗?可以说那个帖子是个好贴,但是和这个问题扯不上关系 ...

扫描触摸按键,估计他驱动没弄好
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-22 06:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表