STM32F4移植LVGL V8.2(一)

添加库文件

1.项目中创建LVGL文件夹,文件夹下新建两个GUI和GUIU_APP两个文件夹
在这里插入图片描述
2.在GUI_APP文件中添加官网LVGL官方的demo实例文件
3.在GUI文件中复制LVGL官方的examples src lv_conf.h lvgl.h(将lv_conf.template.h更改为lv_conf.h 同时将lv_conf.h中的 if 0 改为 if 1)
在这里插入图片描述

配置文件

配置屏幕输出文件

1.把lv_port_disp_template.c/h的条件编译指令#if 0修改成#if 1
2.添加头文件
在这里插入图片描述
3.在disp_init()中加入屏幕初始化函数
在这里插入图片描述
4.配置缓冲区 MY_DISP_HOR_RES修改为屏幕分辨率
在这里插入图片描述
5.修改屏幕对应分辨率
在这里插入图片描述
6修改disp_flush()输出函数
在这里插入图片描述

配置控制输入文件

配置时钟

1.修改stm32f405xx.h中的__NVIC_PRIO_BITS为4
在这里插入图片描述
2.修改lv_conf.h中的时钟源配置
在这里插入图片描述
3.编写freetros线程代码

#include "lvgl_demo.h"
#include "FreeRTOS.h"
#include "task.h"


#include "lvgl.h"
//#include "lv_demo_stress.h"
#include "lv_port_disp_template.h"
#include "lv_port_indev_template.h"


/******************************************************************************************************/
/*FreeRTOS配置*/

/* START_TASK 任务 配置
 * 包括: 任务句柄 任务优先级 堆栈大小 创建任务
 */
#define START_TASK_PRIO     1           /* 任务优先级 */
#define START_STK_SIZE      128         /* 任务堆栈大小 */
TaskHandle_t StartTask_Handler;         /* 任务句柄 */
void start_task(void *pvParameters);    /* 任务函数 */

/* LV_DEMO_TASK 任务 配置
 * 包括: 任务句柄 任务优先级 堆栈大小 创建任务
 */
#define LV_DEMO_TASK_PRIO   1           /* 任务优先级 */
#define LV_DEMO_STK_SIZE    1024        /* 任务堆栈大小 */
TaskHandle_t LV_DEMOTask_Handler;       /* 任务句柄 */
void lv_demo_task(void *pvParameters);  /* 任务函数 */


/******************************************************************************************************/


void lvgl_demo(void)
{
    lv_init();                                          /* lvgl系统初始化 */
    lv_port_disp_init();                                /* lvgl显示接口初始化,放在lv_init()的后面 */
    lv_port_indev_init();                               /* lvgl输入接口初始化,放在lv_init()的后面 */



    xTaskCreate((TaskFunction_t )start_task,            /* 任务函数 */
                 (const char*    )"start_task",          /* 任务名称 */
                 (uint16_t       )START_STK_SIZE,        /* 任务堆栈大小 */
                 (void*          )NULL,                  /* 传递给任务函数的参数 */
                 (UBaseType_t    )START_TASK_PRIO,       /* 任务优先级 */
                 (TaskHandle_t*  )&StartTask_Handler);   /* 任务句柄 */

    vTaskStartScheduler();                              /* 开启任务调度 */
}

/**
 * @brief       start_task
 * @param       pvParameters : 传入参数(未用到)
 * @retval      无
 */
void start_task(void *pvParameters)
{
    pvParameters = pvParameters;
    
    taskENTER_CRITICAL();           /* 进入临界区 */

    /* 创建LVGL任务 */
    xTaskCreate((TaskFunction_t )lv_demo_task,
                (const char*    )"lv_demo_task",
                (uint16_t       )LV_DEMO_STK_SIZE, 
                (void*          )NULL,
                (UBaseType_t    )LV_DEMO_TASK_PRIO,
                (TaskHandle_t*  )&LV_DEMOTask_Handler);


    taskEXIT_CRITICAL();            /* 退出临界区 */
    vTaskDelete(StartTask_Handler); /* 删除开始任务 */
}

/**
 * @brief       LVGL运行例程
 * @param       pvParameters : 传入参数(未用到)
 * @retval      无
 */
void lv_demo_task(void *pvParameters)
{
    pvParameters = pvParameters;
    
    //lv_demo_stress();  /* 测试的demo */
		lv_obj_t* switch_obj = lv_switch_create(lv_scr_act());
    lv_obj_set_size(switch_obj, 24, 12);
    lv_obj_align(switch_obj, LV_ALIGN_CENTER, 0, 0);

    while(1)
    {
        lv_timer_handler(); /* LVGL计时器 */
        vTaskDelay(5);
    }
}

4.将lvgl_demo();加入到主函数中即可

显示效果
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值