OpenEdv-开源电子网

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

5510显示屏移植UCOSIII之后触摸功能也不能用(昨天是移植GUI不能用)

[复制链接]

3

主题

10

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-8-13
在线时间
3 小时
发表于 2019-8-14 09:50:28 | 显示全部楼层 |阅读模式
移植UCOSiii之前是可以用的,触摸屏的画线功能。
void ctp_test(void)
{
        u8 t=0;
        u8 i=0;                      
        u16 lastpos[5][2];               
        while(1)
        {
                tp_dev.scan(0);
                for(t=0;t<CT_MAX_TOUCH;t++)
                {
                        if((tp_dev.sta)&(1<<t))
                        {
                                if(tp_dev.x[t]<lcddev.width&&tp_dev.y[t]<lcddev.height)
                                {
                                        if(lastpos[t][0]==0XFFFF)
                                        {
                                                lastpos[t][0] = tp_dev.x[t];
                                                lastpos[t][1] = tp_dev.y[t];
                                        }
                                        lcd_draw_bline(lastpos[t][0],lastpos[t][1],tp_dev.x[t],tp_dev.y[t],2,POINT_COLOR_TBL[t]);//画线函数
                                        lastpos[t][0]=tp_dev.x[t];
                                        lastpos[t][1]=tp_dev.y[t];
                                        if(tp_dev.x[t]>(lcddev.width-24)&&tp_dev.y[t]<16)
                                        {
                                                Load_Drow_Dialog();//清屏函数
                                        }
                                }
                        }else lastpos[t][0]=0XFFFF;
                }
               
                delay_ms(5);
        }       
}

int main(void)
{                             
        delay_init();         
       NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
         
        LCD_Init();               
        tp_dev.init();
         
        delay_ms(50);
        Load_Drow_Dialog();         
         

       ctp_test();//获取坐标并画线函数
}




移植之后单独测试UCOSIII是可以用的,任务2、任务3都可以打印,任务1就不行。任务1是将 ctp_test();移植到while里面
//任务1,运行画线函数,屏幕没有反应!
void led0_task(void *p_arg)
{
        OS_ERR err;
        u8 t=0;             
        u16 lastpos[5][2];       
        CPU_SR_ALLOC();
        p_arg = p_arg;


        while(1)
        {
                       
                OS_CRITICAL_ENTER();       
                tp_dev.scan(0);
                for(t=0;t<CT_MAX_TOUCH;t++)//获取5个坐标
                {
                        if((tp_dev.sta)&(1<<t))
                        {
                                if(tp_dev.x[t]<lcddev.width&&tp_dev.y[t]<lcddev.height)
                                {
                                        if(lastpos[t][0]==0XFFFF)
                                        {
                                                lastpos[t][0] = tp_dev.x[t];
                                                lastpos[t][1] = tp_dev.y[t];
                                        }
                                        lcd_draw_bline(lastpos[t][0],lastpos[t][1],tp_dev.x[t],tp_dev.y[t],2,POINT_COLOR_TBL[t]);//&#187;-&#207;&#223;
                                        lastpos[t][0]=tp_dev.x[t];
                                        lastpos[t][1]=tp_dev.y[t];
                                        if(tp_dev.x[t]>(lcddev.width-24)&&tp_dev.y[t]<16)
                                        {
                                                Load_Drow_Dialog();//&#199;&#229;3y
                                        }
                                }
                        }else lastpos[t][0]=0XFFFF;
                }
                 OS_CRITICAL_EXIT();       
                OSTimeDlyHMSM(0,0,0,5,OS_OPT_TIME_HMSM_STRICT,&err);
        }
}

//任务2,只打印task2,执行成功!
void led1_task(void *p_arg)
{
        OS_ERR err;
        p_arg = p_arg;
        while(1)
        {
                 printf("task2 \n");
                OSTimeDlyHMSM(0,0,4,0,OS_OPT_TIME_HMSM_STRICT,&err); //&#209;óê±500ms
        }
}

//任务3,只打印task3, 执行成功!
void float_task(void *p_arg)
{
        CPU_SR_ALLOC();

        while(1)
        {
                OS_CRITICAL_ENTER();       
                printf("task3 \n");
                OS_CRITICAL_EXIT();       
                delay_ms(5000);
        }
}














微信图片_20190814093848.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-8-13
在线时间
3 小时
 楼主| 发表于 2019-8-14 15:55:09 | 显示全部楼层
这问题没大神遇到过?
回复 支持 反对

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-8-13
在线时间
3 小时
 楼主| 发表于 2019-8-14 16:00:08 | 显示全部楼层
按道理UCOSIII和显示屏没关系的,UCOS能用之后调用显示屏应该是没问题的,怎么会出现显示屏可以正常触摸屏没反应呢?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 23:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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