OpenEdv-开源电子网

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

关于战舰触摸屏实验程序疑问

[复制链接]

24

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2012-10-20
在线时间
5 小时
发表于 2013-3-30 22:55:30 | 显示全部楼层 |阅读模式
    触摸屏程序里有个疑问。
先声明一个结构体类型_m_tp_dev

//触摸屏控制器
typedef struct
{
 u8 (*init)(void);   //初始化触摸屏控制器
 u8 (*scan)(u8);    //扫描触摸屏.0,屏幕扫描;1,物理坐标; 
 void (*adjust)(void);  //触摸屏校准
 u16 x0;      //原始坐标(第一次按下时的坐标)
 u16 y0;
 u16 x;       //当前坐标(此次扫描时,触屏的坐标)
 u16 y;             
 u8  sta;     //笔的状态
        //b7:按下1/松开0;
                             //b6:0,没有按键按下;1,有按键按下.             
////////////////////////触摸屏校准参数/////////////////////////        
 float xfac;     
 float yfac;
 short xoff;
 short yoff;   
//新增的参数,当触摸屏的左右上下完全颠倒时需要用到.
//touchtype=0的时候,适合左右为X坐标,上下为Y坐标的TP.
//touchtype=1的时候,适合左右为Y坐标,上下为X坐标的TP.
 u8 touchtype;
}_m_tp_dev;


然后定义一个结构体tp_dev
_m_tp_dev tp_dev=
{
 TP_Init,
 TP_Scan,
 TP_Adjust,
 0,
 0,
  0,
 0,
 0,
 0,
 0,
 0,       
 0,
 0,       
}; 



在main.c有执行了一句tp_dev.init();,疑问:
其实init()是个函数指针,指向 TP_Init,  tp_dev.init();能否直接写成TP_Init(); ?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-30 23:08:58 | 显示全部楼层
回复【楼主位】leshak:
---------------------------------
可以直接写出TP_Init的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

24

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2012-10-20
在线时间
5 小时
 楼主| 发表于 2013-3-31 17:37:08 | 显示全部楼层

 实验里的函数TP_Adjust(void)中有这样一段代码


if(fac<0.95||fac>1.05||d1==0||d2==0)//不合格
     {
      cnt=0;
          TP_Drow_Touch_Point(lcddev.width-20,lcddev.height-20,WHITE); //清除点4
          TP_Drow_Touch_Point(20,20,RED);        //画点1
       TP_Adj_Info_Show(pos_temp[0][0],pos_temp[0][1],pos_temp[1][0],pos_temp[1][1],pos_temp[2][0],pos_temp[2][1],pos_temp[3][0],pos_temp[3][1],fac*100);//显示数据  
       continue;
     }
这个if条件判断加个continue关键字,程序是怎么运行的?这里边没什么循环啊....

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-3-31 18:27:30 | 显示全部楼层
这是配合while用的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2015-12-21
在线时间
23 小时
发表于 2018-4-9 17:18:52 | 显示全部楼层
正点原子 发表于 2013-3-30 23:08
回复【楼主位】leshak:
---------------------------------
可以直接写出TP_Init的。

原子哥,既然直接用TP_Init也是可以的,为什么还要用函数指针呢?不解
回复 支持 反对

使用道具 举报

31

主题

190

帖子

0

精华

高级会员

Rank: 4

积分
601
金钱
601
注册时间
2014-4-3
在线时间
75 小时
发表于 2021-3-11 01:40:12 | 显示全部楼层
简单的函数指针能看懂,但这个用法   tp_dev.init();   实在是看不懂,不知哪里有资料讲解这个????
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 01:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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