你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STemWin上GUI_Builder和电阻触摸屏详细移植

[复制链接]
lvpeng-1619958 发布时间:2018-1-19 16:27
l 本文的设置前提是STemWin已经移植成功
l 感谢原子的电阻触摸例程
电阻触摸屏设置
一、准备TOUCH驱动文件
Touch.c touch.h:需包含基本触摸屏初始化程序(TP_Init())和读取坐标函数(TP_Read_XOY(CMD)CMD是命令)
二、添加GUI_X_Touch.cSTemWin
配置文件中的接口程序,只需配置以下两个函数:
int  GUI_TOUCH_X_MeasureX(void)
{
                return TP_Read_XOY(0XD0);  //CMD_RDX=0XD0,代表读取x轴命令
}
int  GUI_TOUCH_X_MeasureY(void)
{       
                return TP_Read_XOY(0X90);  //CMD_RDX=0X90,代表读取y轴命令
}
三、添加触摸校准(必须的一步)
本例子没有设置横屏显示,所以只在LCD_X_Confg()函数中添加了下面两行代码
GUI_TOUCH_Calibrate(GUI_COORD_X, 0, 239, TOUCH_AD_LEFT, TOUCH_AD_RIGHT);
GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, 319, TOUCH_AD_TOP, TOUCH_AD_BOTTOM);
需提前手动define四个常量TOUCH_AD_LEFTTOUCH_AD_RIGHTTOUCH_AD_TOPTOUCH_AD_BOTTOM,触摸屏幕获取AD值得到,本例程中通过触摸左上和右下两个点获得这4个值
#define TOUCH_AD_LEFT 490 //触摸左上角x轴的AD(注意是AD值,也叫物理坐标)
#define TOUCH_AD_RIGHT 3717//触摸屏幕右下角边x轴的AD
#define TOUCH_AD_TOP 460  //触摸左上角y轴的AD
#define TOUCH_AD_BOTTOM 3831//触摸右上角y轴的AD
四、运行GUI_TOUCH_Exec()
本例程中是放在main函数while循环中执行
GUI_BUILDER使用
GUI_BUILDER路径:STemWinLibrary532\Software\GUIBuilder.exe
一、界面,双击打开
图片1.png
二、首先放置FrameWin或者Window,不然会提示没有parent dialog
图片2.png
放置一个framewin 和两个button
图片3.png
设置framwin参数,点击framewin空白处选中它,然后在左边编辑参数,例程中只设置了位置和显示屏大小。下图是按240x320屏幕设置。Button图标可以随意拉大。
图片4.png 图片5.png    
三、保存
配置好后,直接file->save,C文件就生成在GUI_builder同一个文件夹中了,下图中的FramewinDLG.c
图片6.png
四、移植和修改
FramewinDLG.c文件中的内容复制到GUIDEMO_Start.c当中,只需移植如下三部分内容:define,资源列表和回调函数
1.Define部分
/*********************************************************************
*
*       Defines
*
**********************************************************************
*/
#define ID_FRAMEWIN_0 (GUI_ID_USER + 0x00)
#define ID_BUTTON_0 (GUI_ID_USER + 0x01)
#define ID_BUTTON_1 (GUI_ID_USER + 0x02)
2.资源列表部分
/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { FRAMEWIN_CreateIndirect, "Framewin", ID_FRAMEWIN_0, 1, 1, 240, 320, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button", ID_BUTTON_0, 11, 8, 146, 59, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button", ID_BUTTON_1, 12, 81, 136, 93, 0, 0x0, 0 },
};
3.回调函数部分
/*********************************************************************
*
*       _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg)
{
.
.
.
}
然后如下修改MainTask函数
void MainTask(void);
WM_HWIN Hdlg;
void MainTask(void)
{
  WM_SetCreateFlags(WM_CF_MEMDEV);
  GUI_Init();
  Hdlg = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
}
五、运行
Main函数中代码修改如下,然后编译下载运行了。
图片7.png
六、运行结果
通过触摸选中button按钮的图片
图片8.png 图片9.png
/ o& W- U3 K7 l- e( M. P
收藏 3 评论9 发布时间:2018-1-19 16:27

举报

9个回答
zero99 回答时间:2018-1-22 09:51:38
谢谢支持  
Veiko 回答时间:2018-1-22 17:42:45
航顺芯片是哪家哦
lvpeng-1619958 回答时间:2018-1-22 17:50:56
Veiko 发表于 2018-1-22 17:426 u, g) R) u4 V1 r6 k' ^8 }
航顺芯片是哪家哦
* w+ ~5 |" e, o) W- S2 J* C, `
航顺推广免费送的代码级完全兼容ST芯片的国产芯片,驱动和代码完全不用修改,还是非常好用
Veiko 回答时间:2018-1-22 17:52:44
lvpeng-1619958 发表于 2018-1-22 17:501 v+ J2 {  t7 B: k
航顺推广免费送的代码级完全兼容ST芯片的国产芯片,驱动和代码完全不用修改,还是非常好用 ...

$ P9 N) q5 g4 _  N: x8 a) _' u不错哦,国产的,顶起
MrJiu 回答时间:2018-1-23 15:45:45
又是一个pin to pin,资料to资料的国产芯片?
lvpeng-1619958 回答时间:2018-1-24 09:39:15
MrJiu 发表于 2018-1-23 15:456 b* n0 ~; n+ Y; C% M' T
又是一个pin to pin,资料to资料的国产芯片?
( I: m: g5 k1 N; d: W2 B  J8 `; T
不光是pin to pin,代码完全移植,我觉得有点牛,我是在ST上开发的,然后直接download过来,就可以用,没做任何修改。之前我用GD的不得行,GD的要修改一点代码。% I+ [, E1 m1 `; t. b# `
这航顺芯片 给的是R8,实际代码已经超过64K了,实验发现可以用到128K
MrJiu 回答时间:2018-1-25 10:40:05
lvpeng-1619958 发表于 2018-1-24 09:39
% G1 b- m9 @5 {9 _$ Q不光是pin to pin,代码完全移植,我觉得有点牛,我是在ST上开发的,然后直接download过来,就可以用,没 ...

4 M  u/ U) L' t2 W这种芯片,还是不要用在生产上了,无法保证,说不定那天就倒闭了!!!
xiaolonghun 回答时间:2020-1-15 16:32:32
有没有资料压缩包,发送一份来看一下。我最近在一直stemWin移植到l476上面:邮箱374034723@qq.com
李康1202 回答时间:2020-5-15 09:15:00
支持一下
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版