查看: 4367|回复: 0

[分享] GUI Guider使用实战篇——创建Keil下LPC54608非OS GUI项目

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3302

    主题

    6549

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32045
    最后登录
    2024-4-29
    发表于 2021-5-20 09:59:16 | 显示全部楼层 |阅读模式
    手头有LPC54xx系列的小伙伴看过了!
    引言
    不久前我已经给大家分享了NXP新近推出的GUI Guider工具的实用基础篇,主要介绍此工具的安装和一些特色,以帮助初识者快速上手和初学者更深入了解本工具。


    想必有读者安装试用后,跃跃欲试,想进入实战吧。这些读者应该都知道,GUI Guider工具安装后,可获得一份“万能”的用户手册,可作为使用者的“宝典”,随时翻阅学习。
    然而,工具不只是用来学习的,最终是要实用的,要用来开发产品项目的。
    但是,“宝典”只介绍了如何结合MCUXpresso来创建自己的项目,若使用/开发者想在Keil下创建自己的嵌入式项目,该如何做呢?另外,GUI Guider工具只提供了自动产生基于FreeRTOS的GUI项目,实际中,可能只需要开发非OS的项目,这又该如何做呢?通过GUI Guider开发这样的产品项目,会不会很麻烦呢?
    本篇就从一个实际很典型的例子——如何通过GUI Guider创建Keil下LPC54608不带OS的GUI嵌入式项目,来具体说明。读者可以举一反三,开发其他的IDE或NXP MCU项目。

    创建GUI项目
    注意:这里是创建GUI Guider下的GUI项目,非Keil下的嵌入式项目。


    此项目产生的代码最后要融入到Keil下的嵌入式项目中。使用过的读者应该对创建GUI项目轻车熟路,打开GUI Guider,即弹出用于创建项目和打开最近项目的窗口。填写好GUI项目名称,比如“lpc54608_gui”(见图),选择GUI项目路径。
    1.png
    点击进入板子模块,选择LPC54628板子模板。
    2.png
    注:
    LPC54628和LPC54608是兼容的,只是最高主频支持不同,LPC54628最高到220Mhz,LPC54608则是180Mhz,所以后面需要对此进行修改;


    它们用的DEMO板也是一样的,只是换个MCU而已,所以选择此板子模板用到LPC54608 EVB上毫无违和感;
    选择此板子模板,默认是带FreeRTOS的,但这对我们这个非OS项目的建立没有影响,看到后面就知道了。
    接着选应用模板,这里选择默认的空模板,开发自己的GUI。
    最后选择显示色深16bit和480*272的分辨率。点击“Create”,创建完成项目,进入GUI开发主界面。

    开发GUI
    我之前的实用基础篇对开发GUI基本过程已有说明,具体开发读者也可以自己通过相关“宝典”边学边用,这里就不赘述。


    本文作为例子,开发了一个简单的GUI界面,类似于一个开机界面,启动运行后,写着“LPC546xx GUI Demo”的标签和”NXP” logo图会作动画移动到中心位置。


    如图,上边是开发界面,下边是simulator运行(实际板上运行也是此效果)后界面:
    3.png



    产生GUI相关代码
    开发好GUI界面后,则需要产生相关代码,以并入嵌入式产品项目中。


    其实,执行simulator时就会生成相应代码,不过,一个稳妥的方法是最后点击图标“Generate Code”来产生最终代码。


    然后,在菜单”File”里点击“Export Code”,成功的话,随即弹出“export”文件夹,打开可以看到以下三大文件夹:
    4.png
    这些基本就是我们需要并入到产品项目里的代码文件,除了”source”里的“littlevgl_demo_widgets”文件……


    好了,GUI相关代码生成了(这些都和OS无关),等着后面并入Keil嵌入式项目吧。

    创建Keil下GUI非OS项目
    兜了一圈,最后回到我们熟悉的Keil环境……


    我们知道,当开发自己的产品项目时,最简单常用的方法就是,基于NXP SDK包进行开发。本例亦如此。


    下载最新NXP LPC54628 SDK软件包,在“littlevgl_examples”文件夹下已经有多个关于LVGL的GUI例程,有带FreeRTOS的,也有不带OS的。我们自然是选择其中的非OS的“littlevgl_demo_widgets_bm”文件夹下的例程,基于它来创建项目。


    因此,复制此文件夹到当前目录下。接着开始根据自己项目需要对复制过来的项目进行一番改头换面,目的就是变成自己的项目(估计很多读者对此事都是“熟手”)。


    江湖中闯名号,各有各的一套。在下将对复制过来的文件夹及其内容改造的“易容之术“归结为以下三大环节供各位参考:


    1. 文件夹的改造
    修改复制过来的文件夹及其mdk下项目文件名字。
    这里提醒一点,改了项目文件名字,也必须将这些文件内容中对应的名字进行同样修改,这样,点击打开mdk项目时,项目下的文件路径环境才能正常搜索到,并正常呈现在“WorkSpace”下,否则,得自己手动重新在“WorkSpace”下添加所有文件夹/文件,这就多耗费劳力了。


    复制通过GUI Guider开发生成的GUI代码,即复制“custom”和“generated”两个文件夹及“source”下的“lv_conf.h”文件,粘贴到改造了的你自己的文件夹根目录下,即和mdk文件夹并列,“lv_conf.h”文件将覆盖当前目录下的对应文件。
    然后删除此目录下的“armgcc”和“iar”文件夹(因为咱当前是在创建mdk keil项目)。
    改造前后的文件夹资源对比如下,供参考(注:其中的“littlevgl_guider_demo_bm”文件当前只是由原来的“littlevgl_demo_widgets_bm”改名而来):
    改造前:
    5.png


    改造后:
    6.png
    2. Keil项目配置改造
    点击打开“mdk”文件夹下的项目文件后,在Keil环境下先改造项目下的文件,就是添加新的文件(主要是GUI相关代码文件)和去除原项目中不需要的文件。如图所示,绿框中的内容表示需要添加的,红框中的表示要删除的。
    7.png


    几点说明:
    “Groups”下有关“lv_examples”的是原SDK项目例程代码文件,自然在此要移除。
    “littlevgl_guider_demo_bm.c”文件因为修改了名字需要重新添加,它是main()实现所在文件,后面需要改造其内容。


    另外,请注意:虽然此图没有呈现出来,但显然地,图中显示的“Groups”下的有关“generated”和“custom”还需要将它们文件夹下的.c和.h文件添加到“Files”下。

    添加编译路径,主要是GUI相关代码文件路径。如图绿框所示:
    8.png


    3. 修改文件内容
    主要就是修改main()所在的文件,本例即“littlevgl_guider_demo_bm.c”文件,目的就是将自己开发的GUI代码融入到主流程中。


    先添加/删除头文件。添加和自己开发的GUI有关的头文件,删除原来的GUI例程头文件,如图:
    9.png


    还记得前面提到的要修改LPC54608的主频么?此时就需要在mian()里将BOARD_BootClockPLL220M()改为BOARD_BootClockPLL180M()。


    然后,删除原GUI调用lv_demo_widgets(),添加自己通过GUI Guider产生的GUI代码主调用setup_ui(&guider_ui),为此,还需要添加定义lv_ui guider_ui; 这样,代码合并就完成了。

    千里之行,始于足下
    至此,就完成了keil下非OS的GUI项目创建。编译链接下载到lpcxpresso54608EVB上运行,可以看到显示屏上如simulator运行的动画效果。


    别看我这里吧嗒吧嗒说了不少,实际这个“创建”的工作量并不大。主要的工作还是在开发上。


    实际通过GUI Guider来开发GUI嵌入式产品项目时,因为应用的复杂性,需要修改实现的内容更复杂,且难免会遇到各种各样的实际问题……


    千里之行,始于足下,希望本文能助你开启使用GUI Guider开发LVGL GUI项目的“千里之行”。

    签到签到
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-30 00:54 , Processed in 0.295347 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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