查看: 4589|回复: 15

【GUI主题月】lvgl综合界面

[复制链接]
  • TA的每日心情
    慵懒
    2025-5-7 08:45
  • 签到天数: 279 天

    连续签到: 1 天

    [LV.8]以坛为家I

    114

    主题

    1316

    帖子

    29

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    11199

    热心会员

    最后登录
    2025-9-9
    发表于 2022-5-25 12:29:40 | 显示全部楼层 |阅读模式
    【GUI主题月】基于RT1062的lvgl综合界面

    最近确实有点懒,摸了太久的鱼,在日天兄的再三催促下,勉勉强强赶上了这个主题月的尾巴。


    这次用的板子是腾讯IOT的一块卡,主控是RT1062,带一块800*480的RGB屏。
    IMG_20220525_113235.jpg


    配界面的时候,使用了GUI-Guider,不得不说,雀食好用,简单界面拖一拖就能完成,字库图库也是一键完成,比官网网页那个好用多了,就算不用它设计界面,拿来搞个中文小字库,也是超级方便。
    QQ截图20220525114115.png


    直接拷贝出来的代码,编译会报错,要把guider_fonts.h文件里面 lv_font.h 修改成 lvgl/lvgl.h。

    板子的官方没有把触摸屏的驱动放出来,这里就把我写的放下面,有需要的可以看看。

    1. #include "fsl_common.h"
    2. #include "fsl_lpi2c.h"
    3. #include "fsl_gt911_rt.h"

    4. #include "pin_mux.h"
    5. #include "fsl_gpio.h"
    6. #include "fsl_debug_console.h"
    7. #include "FreeRTOS.h"
    8. #include "task.h"

    9. typedef struct _ft5406_rt_touch_point
    10. {
    11.     uint8_t XH;
    12.     uint8_t XL;
    13.     uint8_t YH;
    14.     uint8_t YL;
    15.     uint8_t RESERVED[2];
    16. } ft5406_rt_touch_point_t;

    17. typedef struct _ft5406_rt_touch_data
    18. {
    19.     uint8_t GEST_ID;
    20.     uint8_t TD_STATUS;
    21.     ft5406_rt_touch_point_t TOUCH[FT5406_RT_MAX_TOUCHES];
    22. } ft5406_rt_touch_data_t;

    23. #define TOUCH_POINT_GET_EVENT(T) ((touch_event_t)((T).XH >> 6))
    24. #define TOUCH_POINT_GET_ID(T)    ((T).YH >> 4)
    25. #define TOUCH_POINT_GET_X(T)     ((((T).XH & 0x0f) << 8) | (T).XL)
    26. #define TOUCH_POINT_GET_Y(T)     ((((T).YH & 0x0f) << 8) | (T).YL)

    27. status_t FT5406_RT_Init(ft5406_rt_handle_t *handle, LPI2C_Type *base)
    28. {
    29.     lpi2c_master_transfer_t *xfer = &(handle->xfer);
    30.     status_t status;
    31.     uint8_t mode;

    32.     assert(handle);
    33.     assert(base);

    34.     if (!handle || !base)
    35.     {
    36.         return kStatus_InvalidArgument;
    37.     }

    38.     GPIO_PinWrite(GPIO5, 0U, 1); //复位
    39.     vTaskDelay(10);
    40.    
    41.     GPIO_PinWrite(GPIO5, 0U, 0); //复位
    42.     vTaskDelay(100);
    43.     GPIO_PinWrite(GPIO5, 0U, 0); //INT
    44.     vTaskDelay(100);
    45.     GPIO_PinWrite(GPIO5, 0U, 1); //复位
    46.     vTaskDelay(200);
    47.    
    48.   gpio_pin_config_t PMIC_ON_REQ_config = {
    49.       .direction = kGPIO_DigitalInput,
    50.       .outputLogic = 0U,
    51.       .interruptMode = kGPIO_NoIntmode
    52.   };
    53.   GPIO_PinInit(GPIO5, 1U, &PMIC_ON_REQ_config);
    54.    
    55.     handle->base = base;

    56.     /* clear transfer structure and buffer */
    57.     memset(xfer, 0, sizeof(*xfer));
    58.     memset(handle->touch_buf, 0, FT5406_RT_TOUCH_DATA_LEN);

    59.     /* set device mode to normal operation */
    60.     uint8_t id[4] = {0};
    61.    
    62.     xfer->slaveAddress   = FT5406_RT_I2C_ADDRESS;
    63.     xfer->direction      = kLPI2C_Read;
    64.     xfer->subaddress     = 0X8140;
    65.     xfer->subaddressSize = 2;
    66.     xfer->data           = id;
    67.     xfer->dataSize       = 4;
    68.     xfer->flags          = kLPI2C_TransferDefaultFlag;
    69.     status = LPI2C_MasterTransferBlocking(handle->base, &handle->xfer);
    70.     PRINTF("%c%c%c%c\r\n",id[0],id[1],id[2],id[3]);

    71.     return status;
    72. }

    73. status_t FT5406_RT_Denit(ft5406_rt_handle_t *handle)
    74. {
    75.     assert(handle);

    76.     if (!handle)
    77.     {
    78.         return kStatus_InvalidArgument;
    79.     }

    80.     handle->base = NULL;
    81.     return kStatus_Success;
    82. }

    83. status_t FT5406_RT_GetSingleTouch(ft5406_rt_handle_t *handle, touch_event_t *touch_event, int *touch_x, int *touch_y)
    84. {
    85.     status_t status;
    86.     touch_event_t touch_event_local;
    87.     uint8_t Clearbuf = 0;
    88.     *touch_event = kTouch_Reserved;
    89.     if(GPIO_PinRead(GPIO5, 0U) == 0)
    90.         return kStatus_Success;
    91.         
    92.     handle->xfer.slaveAddress   = FT5406_RT_I2C_ADDRESS;
    93.     handle->xfer.direction      = kLPI2C_Read;
    94.     handle->xfer.subaddress     = 0x814E;
    95.     handle->xfer.subaddressSize = 2;
    96.     handle->xfer.data           = handle->touch_buf;
    97.     handle->xfer.dataSize       = FT5406_RT_TOUCH_DATA_LEN;
    98.     handle->xfer.flags          = kLPI2C_TransferDefaultFlag;

    99.     status = LPI2C_MasterTransferBlocking(handle->base, &handle->xfer);

    100.     if (status == kStatus_Success)
    101.     {
    102.         if(handle->touch_buf[0] != 0x00)
    103.         {
    104.             handle->xfer.slaveAddress   = FT5406_RT_I2C_ADDRESS;
    105.             handle->xfer.direction      = kLPI2C_Write;
    106.             handle->xfer.subaddress     = 0x814E;
    107.             handle->xfer.subaddressSize = 2;
    108.             handle->xfer.data           = &Clearbuf;
    109.             handle->xfer.dataSize       = 1;
    110.             handle->xfer.flags          = kLPI2C_TransferDefaultFlag;
    111.             status = LPI2C_MasterTransferBlocking(handle->base, &handle->xfer);
    112.             
    113.             if((handle->touch_buf[0] & 0x0f) != 0)
    114.             {
    115.                 *touch_event = kTouch_Down;
    116.                 *touch_y = ((uint16_t)handle->touch_buf[3]<<8) + handle->touch_buf[2];
    117.                 *touch_x = ((uint16_t)handle->touch_buf[5]<<8) + handle->touch_buf[4];
    118.             }
    119.             //PRINTF("%x %x %x\r\n",handle->touch_buf[0],handle->touch_buf[1],handle->touch_buf[2]);
    120.         }
    121.         
    122.     }

    123.     return status;
    124. }
    复制代码

    刚刚真的欲哭无泪,好不容易写的帖子,保存草稿之后直接没了,就因为打了个特殊字符,在这个字符后面的全没了。我人麻辣,刚刚写的一大坨全忘了,记住啥就写啥吧。这个符号 QQ截图20220525121125.png ,千万小心

    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3938

    主题

    7559

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    40221
    最后登录
    2025-9-9
    发表于 2022-5-25 12:46:10 | 显示全部楼层
    那这可太惨了吧
    qiandao qiandao
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12

    主题

    789

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    3463
    最后登录
    2025-4-17
    发表于 2022-5-25 13:18:09 | 显示全部楼层
    本帖最后由 eefocus_3766738 于 2022-5-25 13:24 编辑

    MARK一下,向大佬学习;这套硬件是申请的吗?哪里能搞到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 2422 天

    连续签到: 131 天

    [LV.Master]伴坛终老

    84

    主题

    2万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    22507
    最后登录
    2025-9-9
    发表于 2022-5-25 15:20:22 | 显示全部楼层
    大佬可以
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3938

    主题

    7559

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    40221
    最后登录
    2025-9-9
    发表于 2022-5-25 15:47:35 | 显示全部楼层
    eefocus_3766738 发表于 2022-5-25 13:18
    MARK一下,向大佬学习;这套硬件是申请的吗?哪里能搞到

    这应该是大佬自己的
    qiandao qiandao
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12

    主题

    789

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    3463
    最后登录
    2025-4-17
    发表于 2022-5-25 16:04:35 | 显示全部楼层
    NXP管管 发表于 2022-5-25 15:47
    这应该是大佬自己的

    好吧,我以为是腾讯Iot申请的呢,还去腾讯看了下,没找到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3938

    主题

    7559

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    40221
    最后登录
    2025-9-9
    发表于 2022-5-25 16:15:35 | 显示全部楼层
    eefocus_3766738 发表于 2022-5-25 16:04
    好吧,我以为是腾讯Iot申请的呢,还去腾讯看了下,没找到

    腾讯那个是1052应该
    qiandao qiandao
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12

    主题

    789

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    3463
    最后登录
    2025-4-17
    发表于 2022-5-25 16:46:25 | 显示全部楼层
    NXP管管 发表于 2022-5-25 16:15
    腾讯那个是1052应该

    那也可以啊,主要是有个rgb屏
       
    我现在用的就是野火的1052
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-5-7 08:45
  • 签到天数: 279 天

    连续签到: 1 天

    [LV.8]以坛为家I

    114

    主题

    1316

    帖子

    29

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    11199

    热心会员

    最后登录
    2025-9-9
     楼主| 发表于 2022-5-25 17:12:50 | 显示全部楼层
    eefocus_3766738 发表于 2022-5-25 16:46
    那也可以啊,主要是有个rgb屏
       
    我现在用的就是野火的1052

    现在没有了,这个屏是微雪的4.3寸RGB屏,你可以找找
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 20:29
  • 签到天数: 1880 天

    连续签到: 5 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112739
    最后登录
    2025-9-8
    发表于 2022-5-25 20:04:58 | 显示全部楼层
    eefocus_3766738 发表于 2022-5-25 16:46
    那也可以啊,主要是有个rgb屏
       
    我现在用的就是野火的1052

    野火有个7寸的RGB屏~之前买IMX6ULL的时候一起入手的,好像可以单独买
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-9 20:10 , Processed in 0.104890 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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