Lvgl screen with stripes and distortion

What do you want to achieve?

What have you tried so far?

I tried modifying the disp_flush function, but it still didn’t work; it only works correctly when displaying solid colors.

Code to reproduce

/*You code here*/

all code in this:GitHub - lsflyh00-maker/at32_lvgl
static void disp_flush(lv_display_t * disp_drv, const lv_area_t * area, uint8_t * px_map)
{
if(disp_flush_enabled) {
/The most simple case (but also the slowest) to put all pixels to the screen one-by-one/

    int32_t x;
    int32_t y;
    for(y = area->y1; y <= area->y2; y++) {
        for(x = area->x1; x <= area->x2; x++) {
            /*Put a pixel to the display. For example:*/
							lcd_draw_point(x,y,*px_map);
            /*put_px(x, y, *px_map)*/
            px_map++;
        }
    }
}

Screenshot and/or video

Environment

  • MCU/MPU/Board:
  • LVGL version: See lv_version.h
    mcu:at32f407avgt7
    lvgl:9.1
    screen:st7789V2,8bit parallel port

In your code above, I noticed this line: if(disp_flush_enabled) {. Could you explain what it does?

I also saw that your code on GitHub is currently in a .rar file. It would be much easier to review if the actual files were available directly on GitHub instead of in a compressed archive.