OpenEdv-开源电子网

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

为什么触摸只在用guidemo的时候有用?

[复制链接]

17

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2012-8-23
在线时间
0 小时
发表于 2013-6-1 21:35:48 | 显示全部楼层 |阅读模式
我移植好了uCOS和uCGUI,跑了一下demo,毫无问题,触摸什么的都比较正常
但是当我没有跑demo,就简单的换了一下别的程序,触摸就不起作用了
代码如下:

/////////////////////////UCOSII任务设置///////////////////////////////////
//START 任务
//设置任务优先级
#define START_TASK_PRIO       10 //开始任务的优先级设置为最低
//设置任务堆栈大小
#define START_STK_SIZE   64
//任务堆栈
OS_STK START_TASK_STK[START_STK_SIZE];
//任务函数
void start_task(void *pdata);
    
//LCD任务
//设置任务优先级
#define LCD_TASK_PRIO      
//设置任务堆栈大小
#define LCD_STK_SIZE       64
//任务堆栈
OS_STK LCD_TASK_STK[LCD_STK_SIZE];
//任务函数
void lcd_task(void *pdata);

//触摸屏任务
//设置任务优先级
#define TOUCH_TASK_PRIO       5
//设置任务堆栈大小
#define TOUCH_STK_SIZE   256
//任务堆栈
OS_STK TOUCH_TASK_STK[TOUCH_STK_SIZE];
//任务函数
void touch_task(void *pdata);


//设置任务优先级
#define GUI_DEMO_PRIO       8
//设置任务堆栈大小
#define GUI_DEMO_SIZE   1024
//任务堆栈
OS_STK GUI_DEMO_STK[GUI_DEMO_SIZE];
//任务函数
void gui_task(void *pdata);


int main()
{
delay_init();     //延时函数初始化
// TIM3_Int_Init(10,14399);  
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600);
LED_Init();   //初始化与LED连接的硬件接口
LCD_MyInit();   //初始化LCD
TP_Init();
  BEEP_Init(); //蜂鸣器初始化
KEY_Init(); //按键初始化 
TPAD_Init(72); //初始化TPAD
  FSMC_SRAM_Init(); //初始化外部SRAM
// mem_init(SRAMIN); //初始化内部内存池
// mem_init(SRAMEX); //初始化外部内存池
    tp_dev.init();  
GUI_Init();
GUI_SetBkColor(GUI_BLUE);
GUI_SetColor(GUI_WHITE);
GUI_Clear();
GUI_CURSOR_Show();

OSInit();

  OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//创建起始任务

OSStart();    
}

//开始任务
void start_task(void *pdata)
{
    OS_CPU_SR cpu_sr=0;
u8 err;      

pdata = pdata;


 
OSStatInit(); //初始化统计任务.这里会延时1秒钟左右
  OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断)    
  OSTaskCreate(lcd_task,(void *)0,(OS_STK*)&LCD_TASK_STK[LCD_STK_SIZE-1],LCD_TASK_PRIO);   
  OSTaskCreate(touch_task,(void *)0,(OS_STK*)&TOUCH_TASK_STK[TOUCH_STK_SIZE-1],TOUCH_TASK_PRIO);
OSTaskCreate(gui_task,(void *)0,(OS_STK*)&GUI_DEMO_STK[GUI_DEMO_SIZE-1],GUI_DEMO_PRIO);   
  
  OSTaskSuspend(START_TASK_PRIO); //挂起起始任务.

OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)
}

//LCD任务
void lcd_task(void *pdata)
{
while(1)
{
LED0=!LED0;
LED1=!LED1;
        OSTimeDlyHMSM(0,0,1,0);
}
}

void touch_task(void *pdata)
{  
while(1)
{
GUI_TOUCH_Exec();
delay_ms(10);
  }
}
extern void GUIDEMO_main(void);
void gui_task(void *pdata)
{  
        while(1)
{
// GUI_DispString("Hello,world!\n");
// OSTimeDlyHMSM(0,0,2,0);
// delay_ms(2000);
GUIDEMO_main();
delay_ms(10);
}
}
就是我标记为红色和绿色的地方
如果我用绿色的这一段,就一切正常
如果我用红色这一段,触摸就不能用了,只有显示文字的功能,不知道是什么原因?
求解
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-2 00:51:20 | 显示全部楼层
可以跟踪下触摸屏部分代码,看看哪里出问题了.
不过得有JTAG了...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 01:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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