[应用相关] 国民技术N32G45X移植LVGL8.3+ILI9488

[复制链接]
4501|56
 楼主| g36xcv 发表于 2023-5-26 23:45 | 显示全部楼层
添加lvgl心跳
  定时器配置为1ms的中断
在定时器中断函数中添加lv_tick_inc(1);
  1. void TIMX_IRQHandler(void)
  2. {
  3.     if (TIM_GetIntStatus(TIMX, TIM_INT_UPDATE) != RESET)
  4.     {
  5.         TIM_ClrIntPendingBit(TIMX, TIM_INT_UPDATE);
  6.                 lv_tick_inc(1);
  7.         /* Pin PC.06 toggling */
  8. //        GPIO_WriteBit(GPIOC, GPIO_PIN_6, (Bit_OperateType)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_PIN_6)));
  9.     }
  10. }




 楼主| g36xcv 发表于 2023-5-26 23:49 | 显示全部楼层
对main.c文件进行操作

    添加LVGL相关头文件
    加入LVGL测试程序

QQ截图20230526234838.jpg
  1. #include "main.h"
  2. #include "NZ_BitBand.h"
  3. #include "delay.h"

  4. #include "time.h"
  5. #include "lcd.h"
  6. #include "lvgl.h"
  7. #include "lv_port_disp.h"

  8. void lv_example_led_1(void)
  9. {
  10.     /*Create a LED and switch it OFF*/
  11.     lv_obj_t * led1  = lv_led_create(lv_scr_act());
  12.     lv_obj_align(led1, LV_ALIGN_CENTER, -80, 0);
  13.     lv_led_off(led1);

  14.     /*Copy the previous LED and set a brightness*/
  15.     lv_obj_t * led2  = lv_led_create(lv_scr_act());
  16.     lv_obj_align(led2, LV_ALIGN_TOP_LEFT, 0, 0);
  17.     lv_led_set_brightness(led2, 150);
  18.     lv_led_set_color(led2, lv_palette_main(LV_PALETTE_RED));

  19.     /*Copy the previous LED and switch it ON*/
  20.     lv_obj_t * led3  = lv_led_create(lv_scr_act());
  21.     lv_obj_align(led3, LV_ALIGN_CENTER, 80, 0);
  22.     lv_led_on(led3);
  23. }
  24. int main(void)
  25. {
  26.         TIME_Configuration_Init(5,5999);
  27.         LCD_Init();
  28.         lv_init();                      // lvgl系统初始化
  29.         lv_port_disp_init();  // lvgl显示接口初始化,放在lv_init()的后面        
  30.         
  31.         lv_example_led_1();
  32.         while(1)
  33.         {
  34.             lv_task_handler(); // lvgl的事务处理
  35.         }
  36. }




 楼主| g36xcv 发表于 2023-5-26 23:50 | 显示全部楼层
程序编译运行

    程序编译后进行烧录,发现全屏只显示一个颜色

QQ截图20230526235039.jpg
 楼主| g36xcv 发表于 2023-5-26 23:51 | 显示全部楼层
屏幕显示不正常,经过检查后发现,ILI9488的填充函数不对,正确的函数如下:
  1. //在指定区域内填充指定颜色块            
  2. //(sx,sy),(ex,ey):填充矩形对角坐标,区域大小为:(ex-sx+1)*(ey-sy+1)   
  3. //color:要填充的颜色
  4. void LCD_Color_Fill(u16 sx, u16 sy, u16 ex, u16 ey, u16 *color)
  5. {
  6.     u16 height, width;
  7.     u16 i, j;
  8.     width = ex - sx + 1;  //得到填充的宽度
  9.     height = ey - sy + 1; //高度
  10.     if (lcddev.id == 0X9486 || lcddev.id == 0X9488)
  11.     {
  12.         for (i = sy; i < ey + 1; i++)
  13.         {
  14.             for (j = sx; j < ex + 1; j++)
  15.                 LCD_Fast_DrawPoint(j, i, color[(i - sy) * width + (j - sx)]);
  16.         }
  17.     }
  18.     else
  19.     {
  20.         for (i = 0; i < height; i++)
  21.         {
  22.             LCD_SetCursor(sx, sy + i); //设置光标位置
  23.             LCD_WriteRAM_Prepare();    //开始写入GRAM
  24.             for (j = 0; j < width; j++)
  25.                 LCD->LCD_RAM = color[i * width + j]; //写入数据
  26.         }
  27.     }
  28. }




 楼主| g36xcv 发表于 2023-5-26 23:52 | 显示全部楼层
经过修改后,屏幕最终可以正常显示

QQ截图20230526235241.jpg
 楼主| g36xcv 发表于 2023-5-26 23:53 | 显示全部楼层
总结

LVGL移植过程中,难免会有一些困难,但移植次数多了,后边会发现基本都差不多的,主要的问题点无非就那几种,堆栈溢出了报错、屏幕填充函数错误、LVGL内存溢出等方面原因。最后的链接中有提供初始项目工程以及移植好的工程,有需要的伙伴可以拿去参考下。

链接:https://pan.baidu.com/s/1fxSSeKr2Vq0WmGyagiMjmQ
提取码:gfep
ulystronglll 发表于 2023-6-6 12:34 | 显示全部楼层
lvgl和emwin哪个好用               
biechedan 发表于 2023-6-6 13:27 | 显示全部楼层
在使用LVGL库时,还需要了解相关的API接口和配置参数,以及特定的芯片平台和外设驱动的适配问题。
robincotton 发表于 2023-6-6 13:35 | 显示全部楼层
下载地址:https://github.com/lvgl/lvgl
vivilyly 发表于 2023-6-6 13:43 | 显示全部楼层
通过调用lv_obj_create()函数来创建GUI对象,例如按钮、标签、列表等控件,并根据需要设置相关属性和事件回调函数。
alvpeg 发表于 2023-6-6 14:38 | 显示全部楼层
lvgl8和lvgl7区别是什么
cashrwood 发表于 2023-6-6 14:49 | 显示全部楼层
LVGL还提供了图形、文字转换工具等
elsaflower 发表于 2023-6-6 15:02 | 显示全部楼层
具有易于使用的图形元素,精美的视觉效果和低内存占用的嵌入式GUI所需的一切。
juliestephen 发表于 2023-6-6 17:17 | 显示全部楼层
LVGL是一个免费的开放源代码图形库  
alvpeg 发表于 2023-6-6 17:33 | 显示全部楼层
可以参考LVGL官方文档和示例代码
Q1n 发表于 2023-6-8 15:07 | 显示全部楼层
本帖最后由 Q1n 于 2023-6-8 15:14 编辑

想问问版主对ram的占用大吗?
wwppd 发表于 2023-6-8 22:32 | 显示全部楼层
LVGL是一种开源的小型嵌入式GUI库,界面比较符合现代的审美观点
chenqianqian 发表于 2023-6-12 09:20 来自手机 | 显示全部楼层
LVGL现在的普及率挺高的啊
jobszheng 发表于 2023-6-12 14:27 | 显示全部楼层
回头我也试试我的N32G455芯片的LVGL图形库的移植去
鹿鼎计 发表于 2023-8-3 12:09 | 显示全部楼层
可以参考LVGL官方文档和示例代码吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部