【小安派S1WSL&&Linux使用记录(一)】LVGL编译

[复制链接]
查看790 | 回复8 | 2024-1-2 00:15:34 | 显示全部楼层 |阅读模式
本贴只记录从搭建好环境以后可能遇到的坑,请同学们择优而观
坑(一)
make以后出现
  1. fatal error: lwip/dns.h: No such file or directory
复制代码
原因是bl616板级模块中的没有添加该库依赖而引用,由于我并不会cmake,所以只能注释掉11行
  1. #include "lwip/dns.h"
复制代码
和212行
  1. ip_addr_t dns_addr;
复制代码
之后就完美编译了
坑(二)
GPIO引脚错误,默认的lcd_conf_user.h里面与屏幕有关的引脚设置错了,我用的是官方屏幕,而原始的ST7796配置中用的是反色初始化,解决方法是加入下列内容
  1. #define LCD_SPI_ST7796_Ai

复制代码
在定义使用的屏幕(304行左右)
  1. #elif defined LCD_SPI_ST7796_Ai

  2.     /* Selecting interface type, more configuration of peripherals comes later
  3.         1: SPI peripheral, supported functions: spi-4wire,
  4.     */
  5. #define LCD_SPI_INTERFACE_TYPE 1

  6.     /* Selecting pixel format
  7.         1: rgb565
  8.     */
  9. #define ST7796_SPI_PIXEL_FORMAT 1

  10.     /* enable the lcd reset function
  11.         0: Does not care about lcd hard reset
  12.         1: use gpio to reset the lcd
  13.     */
  14. #define LCD_RESET_EN 1

  15.     /* LCD width and height */
  16. #define ST7796_SPI_W 240
  17. #define ST7796_SPI_H 320

  18. /* The offset of the area can be displayed */
  19. #define ST7796_SPI_OFFSET_X 0
  20. #define ST7796_SPI_OFFSET_Y 0

  21. /* Color reversal, Some screens are required
  22.     0: disable
  23.     1: enable
  24. */
  25. #define ST7796_SPI_COLOR_REVERSAL 0
  26. // #define LCD_ROTATED_NONE
  27. #define LCD_ROTATED_90
  28. // #define LCD_ROTATED_180
  29. // #define LCD_ROTATED_270
  30. #endif
复制代码
在413行 左右,定义LCD_GPIO引脚处(官方S1配套屏幕用的是4线驱动)
修改成
  1. /* spi pin, hardware controlled */
  2. #define LCD_SPI_HARD_4_PIN_CLK   GPIO_PIN_17 //SPI_SCK  屏幕SCK引脚
  3. #define LCD_SPI_HARD_4_PIN_DAT   GPIO_PIN_15 //SPI_MOSI 屏幕MOSI
  4. /* cs/dc pin, software controlled */
  5. #define LCD_SPI_HARD_4_PIN_CS   GPIO_PIN_12  //SPI_CS  屏幕CS
  6. #define LCD_SPI_HARD_4_PIN_DC   GPIO_PIN_16  //SPI_LCD_DC (SPI_LCD_RS) 屏幕RS/DC
复制代码
  1. lv_task_handler();
复制代码
卡死,这个原因也不知道为啥,就算放在主函数while循环也是一样,现象如下
IMG_1974 (2).jpg

我把lvgl刷屏函数直接丢到一个FreeRTOS线程里面就能跑了。
现在main.c里面的文件如下
  1. #include "FreeRTOS.h"
  2. #include "task.h"
  3. #include "timers.h"

  4. #include "board.h"


  5. #define DBG_TAG "MAIN"
  6. #include "log.h"


  7. #include "lv_conf.h"
  8. #include "lvgl.h"

  9. #include "lv_port_disp.h"
  10. #include "lv_port_indev.h"

  11. #include "lcd.h"
  12. #include "portable.h"
  13. #include "easyflash.h"
  14. #include "bflb_mtd.h"

  15. /* lvgl log cb */
  16. void lv_log_print_g_cb(const char *buf)
  17. {
  18.     printf("[LVGL] %s", buf);
  19. }

  20. static TaskHandle_t lvgl_TaskHandle;
  21. #define LVGL_STACK_SIZE 2048     //1024
  22. #define LVGL_TASK_PRIORITY 15

  23. void lvgl_task(void* param)
  24. {

  25.     while (1)
  26.     {
  27.         lv_task_handler();
  28.         vTaskDelay(1);
  29.     }
  30. }


  31. int main(void)
  32. {
  33.     board_init();

  34.     printf("lvgl case\r\n");

  35.     /* lvgl init */
  36.     lv_log_register_print_cb(lv_log_print_g_cb);
  37.     lv_init();
  38.     lv_port_disp_init();
  39.     lv_port_indev_init();

  40.     lv_demo_benchmark();
  41.     // lv_demo_stress();
  42.     // lv_timer_handler();
  43.     printf("lvgl success\r\n");
  44.     xTaskCreate(lvgl_task, (char*)"lvgl", LVGL_STACK_SIZE, NULL, LVGL_TASK_PRIORITY, &lvgl_TaskHandle);
  45.     vTaskStartScheduler();
  46.     while (1) {
  47.         // lv_task_handler();
  48.         // bflb_mtimer_delay_ms(1);
  49.         vTaskDelay(5000/portTICK_RATE_MS);
  50.     }
  51. }
复制代码
另外在examples/lvgl目录下要添加如下文件内容
QQ截图20240102000221.png

FreeRTOSConfig.h是有关于FreeRTOS的配置,比如tick_rate和最大优先级等,其中最大优先级需改成32(或者将LVGL任务优先级改成5)
QQ截图20240102000441.png

QQ截图20240102000457.png

IMG_1975 (1).jpg

最后结果当然是轻松刷屏啦!

本帖被以下淘专辑推荐:

  • · LVGL|主题: 19, 订阅: 2
回复

使用道具 举报

爱笑 | 2024-1-2 08:41:21 | 显示全部楼层
优秀!
用心做好保姆工作
回复

使用道具 举报

bzhou830 | 2024-1-2 08:42:32 | 显示全部楼层
华仔都开始玩小安派了
选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

wukong50 | 2024-1-2 08:48:29 | 显示全部楼层
赞一个
回复

使用道具 举报

lazy | 2024-1-2 10:03:00 | 显示全部楼层
真不错
回复

使用道具 举报

粉色小风扇 | 2024-1-2 11:23:16 | 显示全部楼层
德华太棒了
回复 支持 反对

使用道具 举报

1084504793 | 2024-1-2 13:34:26 | 显示全部楼层
回复

使用道具 举报

hdydy | 2024-1-2 22:21:27 | 显示全部楼层
德华真棒
回复

使用道具 举报

mamba | 2024-2-23 19:50:23 | 显示全部楼层
照你的方法做了,还是卡死
回复 支持 反对

使用道具 举报

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

本版积分规则