查看: 2046|回复: 0

【STM32F746试用】跟着小狂玩F7之快速设计GUI

[复制链接]
  • TA的每日心情
    无聊
    2017-3-12 00:04
  • 签到天数: 62 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2016-9-26 09:23:59 | 显示全部楼层 |阅读模式
    分享到:
    书接上回,我们继续玩耍stemwin,做过上位机的都知道,要想实现更炫酷的的GUI就应该支持更多的控件,要想实现快速开发就应该用拖拽的方式来,预览的形式来,再加上绚丽的皮肤设置,哈哈,就完美了。今天呢小狂就带着大家来实现F7中的快速GUI设计。
    今天帖子要讲的内容分为以下两个部分
    1、移植触摸控制程序
    2、利用GUIBuilder实现快速的GUI设计
    接下来我们就按照流程一点点听小狂慢慢道来,首先我们要做的是移植触摸程序,emwin是支持相应的触摸,joystick,以及PS2鼠标。一个没有输入设备的GUI等于白费,所以由此可以看出Stemwin的完善性,各方面都考虑齐全了。其实触摸屏的移植有点费劲。小狂也是花了一下午的时间才搞定,然后晚上来写帖子来啦。当中肯定有小狂做复杂的地方,还可能有更简单的方法来做这些事情,所以要是有其他方法可以在下面留言,小狂会虚心学习的,因为,要想移植触摸程序,就要有个现成的驱动不是吗。虽然没有现成的历程,但是我们可以从discovery自带的应用中把触摸程序拿出来,真是有感自己的聪明啊,哈哈,在这嘚瑟一把,哈哈。下面的过程可能不太注重代码的分析,只注重移植的过程,让大家以后更方便移植其他程序。如果有人真的对驱动很感兴趣,在下面留言,小狂会根据情况,再开一贴专门讲解,哈哈。废话少说直接进入正题
    一、移植触摸程序
    1、首先要找到我们要移植的程序,板子一上电就跑的应用,支持触摸,我们就要这个程序目录呢就在这个目录下F:XX\STM32Cube_FW_F7_VX.X.X\Projects\STM32746G-Discovery\Demonstration\MDK-ARM.然后打开看看文件目录


    这里边几乎包含了所有的应用的代码,我们不止可以在里边移植触摸的代码,我们更可以移植先要的所有其他代码。要先移植触摸程序,是不是要找到初始化的代码在哪,这个就要去主函数中找了,当我们看到什么什么INIT的时候就要格外关心,看代码


    报着试试看的心态,我们点进去看看


    哈哈,黄天不负有心人,好像小狂也没有怎么费劲就找到了,接下来我们就是各种go to 去找啦,一般像这种东西,st这种大公司都会做成相应的独立的模块吃的,我们知道找到模块,那岂不happy,哈哈


    进去之后看到这个,这个我们也需要只不过我们要最后再说这个,看到这个初始化我们应该更加敏感,点进去看看,这个东西用的是一个函数指针,外加结构体的方式,所以,go to的时候要注意。


    这个时候我们找到了结构体的定义,这个时候我们再看一个在哪个c文件中


    正好我们驱动的名字也叫这个,这个就不是巧合了,这个肯定就是触摸屏幕启动存放的地方,我们只需要找到这个文件就行。


    然后找到这个文件拷贝到工程目录下,然后添加到工程中。


    这个时候你发现你的ft5336.h其实还包含一个头文件,那就是


    按照同样的方式把他拷贝到工程目录下,现在编译一下
    发现找不到几个函数


    我们需要把这些函数全部移植到我们得文件中,然后缺什么就补什么,哪有错就修改哪,这个步骤还是很简单的,修改一个编译一次,会发现错误越来越少。具体的修改完成后的代码就不放上来啦,很简单自己试一下就能搞定。如果有需要留言会上传源代码。这两个文件移植完成之后,就要移植初始化代码啦


    按照这个一点点找下去,移植的方法跟上面的方法类似,缺什么补什么你也不是问题。
    我们要向让我们得触摸屏幕让emwin对接啊,这样才能在gui中识别触摸屏幕并使用
    2、移植接口文件
    在stemwin的说明文档中说明了,触摸获取至少要100ms调用一次,得到了值把他传给


    这个函数就行。
    在这之前我们要开一个定时器,代码如下图所示


    开启定时器3开启,计数频率为10K,然后每100ms进一次中断,获取一次坐标值。具体代码如下


    途中红色的部分很重要,是更新触摸的代码


    第一个红框中是我们写的获取触摸的代码,第2/3个是吧触摸坐标传给gui供其使用,到此,我们得触摸程序应该移植完成了,现在加入到我们的系统初始化当中


    初始化完成触摸屏后,初始化时钟。到此就基本完成了。下边我们来讲第二个部分,来快速搭建一个简单的gui,功能很简单,第一个界面上有一个按钮,按下后弹出一个对话框,显示欢迎使用,带取消的。
    二、搭建GUI界面
    搭建GUI需要使用一个工具叫GUIBuilder,打开后如下图所示


    里边有各种支持的控件



    说明一下,在这个软件所在目录下,会有一个ini的文件,打开以后可以修改保存的c文件的文件目录。
    控件必须放在相应的windows上,emwin有两种windows。一种是这个

    ,带标题栏的,第二个是这个

    ,不带标题栏的,根据情况而定,我们测试用第一个,直接点一下,就会出来界面

    这个是这个界面的参数设置,分别是标题栏的名字,左上角那个点的x和y坐标,整个窗口x尺寸和y的尺寸。
    然后我们设置一下字体,右键点击会出来一个菜单


    这里可以设置一些参数比如标题的位置,字体,标题文字,字体对其,颜色,高度等。看看
    然后添加一个按钮,选中后直接拖到界面中就行,我们来改一下文字,最后的效果如下图所示


    然后问来生成第二个对话框,然后放一个Test在里边,打上相应的文字,[url=]Welcom use our system[/url]。做法跟上边的做吧一直,但是有个问题一直没有解决,就是在build里没法添加close按钮,就是最上边的那个[url=]×[/url],没有办法,只有在生成的文件中添加了。
    然后我们生成相应的的c文件,名字都是你设置的windows的名字


    生成了在你设置的目录下,然后把里边的两个文件拷贝到工程目录下,加入到工程中


    这里我们在wecomDLG中加入那个×按钮,在文件中加入如下图所示的红色框中的代码


    然后在setwindowsDLG.C按钮的触发程序中加入建立对话框的程序。


    调用之前,一定要先外部声明一下。
    然后在主函数中创建第一个窗口,就大功告成啦


    让我们最后看一下效果


    还是很方便快捷的,到这里,所有内容都讲完了,帖子都写到第7篇了,也是真心累啊,下边可能还有两到3篇就要结束这次试用

    了,但是在爱板的支持热度上不去写着也有点太无聊了,可能是小狂的内容写的太基础,不好,爱板的大神太多吧。哈哈,但是不管怎么样,最后会把这是试用圆满的完成,最后要是能拿到板子那也是极好不过啦,要是拿不到也希望对接下来的试用者有帮助把。
    下边的几篇可能会讲解视频、音频的播放,最后的大招肯定是移植操作系统到F7中,就这样,希望喜欢的继续支持,不喜欢的继续吐槽。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    手机版|小黑屋|与非网

    GMT+8, 2024-4-24 01:38 , Processed in 0.127484 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.