36 lines
1.3 KiB
C
36 lines
1.3 KiB
C
#include "lv_port_disp.h"
|
|
#include "lvgl.h"
|
|
#include "bsp_lcd_ili9341.h"
|
|
|
|
static lv_color_t lvgl_draw_buff1[LVGL_PORT_BUFF_SIZE];
|
|
static lv_color_t lvgl_draw_buff2[LVGL_PORT_BUFF_SIZE];
|
|
|
|
static void disp_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
|
|
{
|
|
/* 等待上次传输完成 */
|
|
while (bsp_lcd_get_trans_stat() == 0);
|
|
/* 通知lvgl传输已完成 */
|
|
lv_disp_flush_ready(disp_drv);
|
|
/* 启动新的传输 */
|
|
bsp_lcd_draw_rect(area->x1, area->y1, area->x2, area->y2, color_p);
|
|
}
|
|
|
|
void lv_port_disp_init(void)
|
|
{
|
|
/* 向lvgl注册缓冲区 */
|
|
static lv_disp_draw_buf_t draw_buf_dsc; //需要全程生命周期,设置为静态变量
|
|
lv_disp_draw_buf_init(&draw_buf_dsc, lvgl_draw_buff1, lvgl_draw_buff2, LVGL_PORT_BUFF_SIZE);
|
|
/* 创建并初始化用于在lvgl中注册显示设备的结构 */
|
|
static lv_disp_drv_t disp_drv;
|
|
lv_disp_drv_init(&disp_drv); //使用默认值初始化该结构
|
|
/* 设置屏幕分辨率 */
|
|
disp_drv.hor_res = BSP_LCD_X_PIXELS;
|
|
disp_drv.ver_res = BSP_LCD_Y_PIXELS;
|
|
/* 设置显示矩形函数,用于将矩形缓冲区刷新到屏幕上 */
|
|
disp_drv.flush_cb = disp_flush;
|
|
/* 设置缓冲区 */
|
|
disp_drv.draw_buf = &draw_buf_dsc;
|
|
/* 注册显示设备 */
|
|
lv_disp_drv_register(&disp_drv);
|
|
}
|