专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
UCGUI触摸屏校准问题
2019-10-15 18:12
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
9213
12
968
UCGUI触摸屏校准使用这个函数吗?( _ExecCalibration();)如果不是校准要怎么进行的?
如果是,这个函数获得的X与Y轴的数值与上面的宏定义有关系吗?如果有,要怎么设置?如果不是上面的宏定义要怎么定义的,依据又是什么??
求解!!!!!!!!!!!!!!!!!!!!!!!!!高手!!!!!!!!!!!!!!!!!!!!!!!
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
kassandra
2019-10-16 09:30
回复【3楼】正点原子:
---------------------------------
原子哥 我是这样弄的:屏是3.5寸的
#define GUI_TOUCH_AD_LEFT 0
#define GUI_TOUCH_AD_RIGHT 320
#define GUI_TOUCH_AD_TOP 0
#define GUI_TOUCH_AD_BOTTOM 480
#define GUI_TOUCH_SWAP_XY 0
#define GUI_TOUCH_MIRROR_X 0
#define GUI_TOUCH_MIRROR_Y 0
void GUI_TOUCH_X_ActivateX(void) {
}
void GUI_TOUCH_X_ActivateY(void) {
}
int GUI_TOUCH_X_MeasureY(void) {
tp_dev.scan(0);
return tp_dev.y;
}
int GUI_TOUCH_X_MeasureX(void) {
tp_dev.scan(0);
return tp_dev.x;
}
GUI_TOUCH_Exec()修改了,去除了他原来的状态机方法,因为X,Y直接是通过原子哥底层的触摸程序得到经过转换的逻辑坐标值,去除了GUI_TOUCH_Exec里的AD2X()和AD2Y() 直接返回XY就可以用了,很准,
GUI_TOUCH_Exec()修改如下:
void GUI_TOUCH_Exec(void) {
#ifndef WIN32
static U8 ReadState;
int x,y;
/* calculate Min / Max values */
if (xyMinMax[GUI_COORD_X].Min < xyMinMax[GUI_COORD_X].Max) {
xMin = xyMinMax[GUI_COORD_X].Min;
xMax = xyMinMax[GUI_COORD_X].Max;
} else {
xMax = xyMinMax[GUI_COORD_X].Min;
xMin = xyMinMax[GUI_COORD_X].Max;
}
if (xyMinMax[GUI_COORD_Y].Min < xyMinMax[GUI_COORD_Y].Max) {
yMin = xyMinMax[GUI_COORD_Y].Min;
yMax = xyMinMax[GUI_COORD_Y].Max;
} else {
yMax = xyMinMax[GUI_COORD_Y].Min;
yMin = xyMinMax[GUI_COORD_Y].Max;
}
/* Execute the state machine which reads the touch */
yPhys = TOUCH_X_MeasureY();
xPhys = TOUCH_X_MeasureX();
/* Convert values into logical values */
#if !GUI_TOUCH_SWAP_XY /* Is X/Y swapped ? */
x = xPhys;
y = yPhys;
#else
x = yPhys;
y = xPhys;
#endif
if ((x < xMin) || (x > xMax) || (y < yMin) || (y > yMax)) {
_StoreUnstable(-1, -1);
} else {
_StoreUnstable(x, y);
}
#endif /* WIN32 */
}
准是准但是向左滑有箭头的拖尾现象未解决
加载中...
查看其它12个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
---------------------------------
原子哥 我是这样弄的:屏是3.5寸的
#define GUI_TOUCH_AD_LEFT 0
#define GUI_TOUCH_AD_RIGHT 320
#define GUI_TOUCH_AD_TOP 0
#define GUI_TOUCH_AD_BOTTOM 480
#define GUI_TOUCH_SWAP_XY 0
#define GUI_TOUCH_MIRROR_X 0
#define GUI_TOUCH_MIRROR_Y 0
void GUI_TOUCH_X_ActivateX(void) {
}
void GUI_TOUCH_X_ActivateY(void) {
}
int GUI_TOUCH_X_MeasureY(void) {
tp_dev.scan(0);
return tp_dev.y;
}
int GUI_TOUCH_X_MeasureX(void) {
tp_dev.scan(0);
return tp_dev.x;
}
GUI_TOUCH_Exec()修改了,去除了他原来的状态机方法,因为X,Y直接是通过原子哥底层的触摸程序得到经过转换的逻辑坐标值,去除了GUI_TOUCH_Exec里的AD2X()和AD2Y() 直接返回XY就可以用了,很准,
GUI_TOUCH_Exec()修改如下:
void GUI_TOUCH_Exec(void) {
#ifndef WIN32
static U8 ReadState;
int x,y;
/* calculate Min / Max values */
if (xyMinMax[GUI_COORD_X].Min < xyMinMax[GUI_COORD_X].Max) {
xMin = xyMinMax[GUI_COORD_X].Min;
xMax = xyMinMax[GUI_COORD_X].Max;
} else {
xMax = xyMinMax[GUI_COORD_X].Min;
xMin = xyMinMax[GUI_COORD_X].Max;
}
if (xyMinMax[GUI_COORD_Y].Min < xyMinMax[GUI_COORD_Y].Max) {
yMin = xyMinMax[GUI_COORD_Y].Min;
yMax = xyMinMax[GUI_COORD_Y].Max;
} else {
yMax = xyMinMax[GUI_COORD_Y].Min;
yMin = xyMinMax[GUI_COORD_Y].Max;
}
/* Execute the state machine which reads the touch */
yPhys = TOUCH_X_MeasureY();
xPhys = TOUCH_X_MeasureX();
/* Convert values into logical values */
#if !GUI_TOUCH_SWAP_XY /* Is X/Y swapped ? */
x = xPhys;
y = yPhys;
#else
x = yPhys;
y = xPhys;
#endif
if ((x < xMin) || (x > xMax) || (y < yMin) || (y > yMax)) {
_StoreUnstable(-1, -1);
} else {
_StoreUnstable(x, y);
}
#endif /* WIN32 */
}
准是准但是向左滑有箭头的拖尾现象未解决
一周热门 更多>