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

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
& Y1 d' H( ]+ R- 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:42
/ {! R' |* }9 x4 t' w航顺芯片是哪家哦
4 u' H6 O# A. E8 d1 t# [% o1 A
航顺推广免费送的代码级完全兼容ST芯片的国产芯片,驱动和代码完全不用修改,还是非常好用
Veiko 回答时间:2018-1-22 17:52:44
lvpeng-1619958 发表于 2018-1-22 17:50
$ K8 @; q# \  ]9 G6 L" n航顺推广免费送的代码级完全兼容ST芯片的国产芯片,驱动和代码完全不用修改,还是非常好用 ...
/ Z2 q% U/ M7 A% L% u' ]; _2 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:459 P2 A/ f! M( D0 Z7 r$ Y( X/ r
又是一个pin to pin,资料to资料的国产芯片?
# e6 Z! C$ V2 {7 h% h* S
不光是pin to pin,代码完全移植,我觉得有点牛,我是在ST上开发的,然后直接download过来,就可以用,没做任何修改。之前我用GD的不得行,GD的要修改一点代码。
* |- F  u/ a( D2 t* x这航顺芯片 给的是R8,实际代码已经超过64K了,实验发现可以用到128K
MrJiu 回答时间:2018-1-25 10:40:05
lvpeng-1619958 发表于 2018-1-24 09:395 I, q. d0 W& g* v
不光是pin to pin,代码完全移植,我觉得有点牛,我是在ST上开发的,然后直接download过来,就可以用,没 ...
/ T6 Y9 T+ r# E# f' ]: R' f+ I! @
这种芯片,还是不要用在生产上了,无法保证,说不定那天就倒闭了!!!
xiaolonghun 回答时间:2020-1-15 16:32:32
有没有资料压缩包,发送一份来看一下。我最近在一直stemWin移植到l476上面:邮箱374034723@qq.com
李康1202 回答时间:2020-5-15 09:15:00
支持一下
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版