1534|5

7003

帖子

11

TA的资源

版主

楼主
 

【DigiKey“智造万物,快乐不停”创意大赛】移植RT-Thread + LVGL [复制链接]

 

我的项目是冷链温度监控系统,运行的基础环境为rtthread操作系统,用lvgl来写交界面。下面介绍如何创建rtthread以及移植lvgl。

【开发环境】

此次开发用rtthread studio来作为ide进行开发。

【实现步骤】

  1. 安装stm32f746开发板。打开SDK管理器,按下图安装stm32f746-ST-DISCO开发板:
  2. 新建RT-Thread项目,选择STM32F746-ST-DISCO开发板,并生成基础工程:
  3. 生成工程后,打开RT-Thread Settings安装lvgl安装包:
  4. 复制官方的开发板驱动包到工程:
  5. 添加lv_config.h、lv_port_disp.c/h、lv_port_indev.c/h的配置文件到application目录下,

    Lv_conifg.h为lvgl的工程配置文件。
    Lv_port_disp 为LCD驱动库
    Lv_port_indev为触摸驱动库。
  6. 在main.c中添加lvgl驱动测试如下:
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include "lvgl.h"
#include "lv_port_indev.h"

/* defined the LED1 pin: PI1 */
#define LED1_PIN    GET_PIN(I, 1)
lv_obj_t *label;

void lvgl_lable_test(){
    /* 创建一个标签 */

    static lv_style_t font_style;
    lv_style_init(&font_style);
    lv_style_set_text_font(&font_style,  &lv_font_montserrat_14);
//    font_label = lv_label_create(src, NULL);
    label = lv_label_create(lv_scr_act());
    if (NULL != label)
    {
        // lv_obj_set_x(label, 90);                         // 设置控件的X坐标
        // lv_obj_set_y(label, 100);                        // 设置控件的Y坐标
        // lv_obj_set_size(label, 60, 20);                  // 设置控件大小
        lv_label_set_text(label, "Counter");                // 初始显示 0
        lv_obj_add_style(label, &font_style, LV_STATE_DEFAULT);
        // lv_obj_center(label);                            // 居中显示
        lv_obj_align(label, LV_ALIGN_CENTER, 0, -50);       // 居中显示后,向上偏移50
    }
}

/**
 * [url=home.php?mod=space&uid=159083]@brief[/url] 按钮事件回调函数
 */
static void btn_event_callback(lv_event_t* event)
{
    static uint32_t counter = 1;

    lv_obj_t* btn = lv_event_get_target(event);                 //获取事件对象
    if (btn != NULL)
    {
        lv_label_set_text_fmt(label, "%d", counter);            //设置显示内容
        lv_obj_align(label, LV_ALIGN_CENTER, 0, -50);           // 居中显示后,向上偏移50
        counter++;
    }
}

/**
 * @brief 创建按钮
 */
void lvgl_button_test(){
    /* 在当前界面中创建一个按钮 */
    lv_obj_t* btn = lv_btn_create(lv_scr_act());                                        // 创建Button对象
    if (btn != NULL)
    {
        lv_obj_set_size(btn, 80, 20);                                                   // 设置对象宽度和高度
        // lv_obj_set_pos(btn, 90, 200);                                                // 设置按钮的X和Y坐标
        lv_obj_add_event_cb(btn, btn_event_callback, LV_EVENT_CLICKED, NULL);           // 给对象添加CLICK事件和事件处理回调函数
        lv_obj_align(btn, LV_ALIGN_CENTER, 0, 50);                                      // 居中显示后,向下偏移50
//
        lv_obj_t* btn_label = lv_label_create(btn);                                     // 基于Button对象创建Label对象
        if (btn_label != NULL)
        {
            lv_label_set_text(btn_label, "button");                                     // 设置显示内容
            lv_obj_center(btn_label);                                                   // 对象居中显示
        }
    }
}
int main(void)
{
    int count = 1;
    /* set LED1 pin mode to output */
    rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
    /* Enable I-Cache */
    SCB_EnableICache();

    /* Enable D-Cache */
    SCB_EnableDCache();

    lv_init();
    lvgl_lable_test();
    lvgl_button_test();
    while (count++)
    {
        lv_task_handler();
        rt_thread_mdelay(5);
//        rt_pin_write(LED1_PIN, PIN_HIGH);
//        rt_thread_mdelay(500);
//        rt_pin_write(LED1_PIN, PIN_LOW);
//        rt_thread_mdelay(500);
    }

    return RT_EOK;
}

下载到开发板后效果如下:

 

RTT+LVGL

 

最新回复

上网口也不错,比较现在很多单片机都能支持网口通信。   详情 回复 发表于 2023-10-24 09:11
点赞 关注
 
 

回复
举报

7205

帖子

2

TA的资源

版主

沙发
 

这项目框架感觉很快就搭建出来了呀。

点评

还有很长的路呀,看了一下,感觉串口不够用,得换成网口做交互才行了。  详情 回复 发表于 2023-10-24 07:35
 
 
 

回复

441

帖子

3

TA的资源

纯净的硅(高级)

板凳
 

还是软件创建项目方便

 
 
 

回复

7003

帖子

11

TA的资源

版主

4
 
wangerxian 发表于 2023-10-23 20:04 这项目框架感觉很快就搭建出来了呀。

还有很长的路呀,看了一下,感觉串口不够用,得换成网口做交互才行了。

点评

上网口也不错,比较现在很多单片机都能支持网口通信。  详情 回复 发表于 2023-10-24 09:11
 
 
 

回复

7205

帖子

2

TA的资源

版主

5
 
lugl4313820 发表于 2023-10-24 07:35 还有很长的路呀,看了一下,感觉串口不够用,得换成网口做交互才行了。

上网口也不错,比较现在很多单片机都能支持网口通信。

点评

开发板有网口,正准备移植lwip,还在学习之中,长路漫漫。  详情 回复 发表于 2023-10-24 10:51
 
 
 

回复

7003

帖子

11

TA的资源

版主

6
 
wangerxian 发表于 2023-10-24 09:11 上网口也不错,比较现在很多单片机都能支持网口通信。

开发板有网口,正准备移植lwip,还在学习之中,长路漫漫。

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表