OpenEdv-开源电子网

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

我用JTAG跟踪TFT触摸程序时,出现了一个奇怪的现象,见下

[复制链接]

36

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
265
金钱
265
注册时间
2013-8-3
在线时间
0 小时
发表于 2013-8-10 23:00:53 | 显示全部楼层 |阅读模式

// Set_direction(0);
    for(i=0;i<4;i++)
    {
    
        GUI_Rectangle(0,0,320,240,Green,1);  //使整个屏幕显示背景颜色   
        //LCD_Str_6x12_O(10, 10,"Touch Calibrate", 0);  //显示提示信息
  //LCD_Num_6x12_O(10,25, i+1,  0);      //显示触点次数
       
        delay_ms(500);
        DrawCross(DisplaySample.x,DisplaySample.y,Red);  //显示校正用的“十”字
        do
        { 
       //Ptr=Read_2046_2();
            Ptr=Read_2046();  //读取TSC2046数据到变量ptr
        }
        while( Ptr == (void*)0 );  //当ptr为空时表示没有触点被按下
        ScreenSample.x= Ptr->x;    //把读取的原始数据存放到ScreenSample结构体
        ScreenSample.y= Ptr->y;

    }

  /* 用原始参数计算出 原始参数与坐标的转换系数。 */
    Cal_touch_para( &DisplaySample[0],&ScreenSample[0],&touch_para ) ;     
   
  /*计算X值*/
    test_x = ( (touch_para.An * ScreenSample[3].x) +
               (touch_para.Bn * ScreenSample[3].y) +
               touch_para.Cn
               ) / touch_para.Divider ;   
   
  /*计算Y值*/
    test_y = ( (touch_para.Dn * ScreenSample[3].x) +
               (touch_para.En * ScreenSample[3].y) +
               touch_para.Fn
               ) / touch_para.Divider ;   
   
    gap_x = (test_x > DisplaySample[3].x)?(test_x - DisplaySample[3].x)DisplaySample[3].x - test_x);
    gap_x = (test_y > DisplaySample[3].y)?(test_y - DisplaySample[3].y)DisplaySample[3].y - test_y);
   

     GUI_Rectangle(0,0,320,240,CAL_BACKGROUND_COLOR,1);
    if((gap_x>11)||(gap_y>11))
    {

        //LCD_Str_6x12_O(100, 100,"Calibrate fail", 0);
  //LCD_Str_6x12_O(100, 120,"  try again   ", 0);
  delay_ms(2000);
  GUI_Rectangle(0,0,320,240,Blue ,1);
        return 1;

    }
   
   
    aa1 = (touch_para.An*1.0)/touch_para.Divider;
    bb1 = (touch_para.Bn*1.0)/touch_para.Divider;
    cc1 = (touch_para.Cn*1.0)/touch_para.Divider;
   
    aa2 = (touch_para.Dn*1.0)/touch_para.Divider;
    bb2 = (touch_para.En*1.0)/touch_para.Divider;
    cc2 = (touch_para.Fn*1.0)/touch_para.Divider;
    GUI_Rectangle(0,0,320,240,Blue ,1);
 //LCD_Str_6x12_O(100, 100,"Calibrate Success", 0);
    delay_ms(1000);
   
    return 0;   
}这个代码应该执行完了 if((gap_x>11)||(gap_y>11))
    {

        //LCD_Str_6x12_O(100, 100,"Calibrate fail", 0);
  //LCD_Str_6x12_O(100, 120,"  try again   ", 0);
  delay_ms(2000);
  GUI_Rectangle(0,0,320,240,Blue ,1);
        return 1;

    }

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

这个代码继续向下执行的,可是它却回到了for(i=0;i<4;i++)
    {
    
        GUI_Rectangle(0,0,320,240,Green,1);  //使整个屏幕显示背景颜色   
        //LCD_Str_6x12_O(10, 10,"Touch Calibrate", 0);  //显示提示信息
  //LCD_Num_6x12_O(10,25, i+1,  0);      //显示触点次数
       
        delay_ms(500);
        DrawCross(DisplaySample.x,DisplaySample.y,Red);  //显示校正用的“十”字
        do
        { 
       //Ptr=Read_2046_2();
            Ptr=Read_2046();  //读取TSC2046数据到变量ptr
        }
        while( Ptr == (void*)0 );  //当ptr为空时表示没有触点被按下
        ScreenSample.x= Ptr->x;    //把读取的原始数据存放到ScreenSample结构体
        ScreenSample.y= Ptr->y;

    }

不知道这个我代码哪有返回的啊,求原子哥好好看看那???

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-11 10:22:49 | 显示全部楼层
回复【楼主位】1756143812:
---------------------------------
你怎么跟踪的啊...
你是用了os吧???
是不是被os打断了,重新进入这个函数了又?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-15 06:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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