我们追溯到LTDC_Color_Fill函数,可以看出这个函数主要是在向LCD屏幕传输数据。我选择的是竖屏,会执行else里的语句,进行了坐标系转换。但是DMA2D仍然是按照横屏的方向进行数据传输的。 我们抛弃LCD_Color_Fill的方式填充屏幕,使用最原始的画点方式: 烧录检测: OK噜(●’◡’●)...
voidLCD_LVGL_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,lv_color_t*color){uint32_t y=0;u16 height,width;width=ex-sx+1;//得到填充的宽度height=ey-sy+1;//高度LCD_Address_Set(sx,sy,ex,ey);for(y=0;y<width*height;y++){LCD_WR_DATA(color->full);color++;}} 然后在LVGL的 disp_flu...
void LCD_ColorFill(uint16_t xsta, uint16_t ysta, uint16_t xend, uint16_t yend, const uint16_t* color){uint16_t i, j;LCD_Address_Set(xsta, ysta, xend - 1, yend - 1); // 设置显示范围for (i = ysta; i < yend; i++){for (j = xsta; j < xend; j++){LCD_Writ...
修改disp_flush 函数。这个得阅读 屏幕驱动函数了,就是找 在一个矩形空间填充彩色像素能用哪个函数,或者用绘制一个彩色点的函数一个个像素点绘制(会比较慢)。 其中px_map 是指向像素数据的指针,目前我的理解是传入 屏幕驱动函数 如 LCD_Color_Fill 时,px_map 被强制转换成相应的类型,如本例的 (u16* ) , ...
lcd.LCD_Color_Fill(act_x1,act_y1,act_x2,act_y2,(unsigned short *)color_p); /*IMPORTANT!!! *Inform the graphics library that you are ready with the flushing*/ lv_disp_flush_ready(disp_drv); } 1. 2. 3. 4. 5. 6. 7. ...
LCD_Fill(area->x1, area->y1, area->x2, area->y2, color_p); lv_disp_flush_ready( disp ); } LCD_Fill函数,这种方式为区域填充,也可以多次调用点填充(速度慢,不推荐) /*** *函数名:LCD_Fill *输 入:xsta:x起始 * ysta:y起始 * xend:x结束 * yend:y结束 * color:颜色的指针,指向...
先初始化lcd,再初始化lvgl-》lv_init()。再就是lcd对接到lvgl初始化lv_hal_init(); lcd_init(); lcd_fill(0,0,GLCD_WIDTH-1,GLCD_HEIGHT-1,GLCD_COLOR_RED); Delay_ms(500); lcd_fill(0,0,GLCD_WIDTH-1,GLCD_HEIGHT-1,GLCD_COLOR_GREEN); ...
//disp_drv.gpu_fill_cb = gpu_fill; /*Finally register the driver*/ lv_disp_drv_register(&disp_drv); } 3、修改disp_flush函数 该函数就是调用底层LCD描点函数进行绘制UI界面的。 // LCD描点函数 void LCD_Color_Fill(u16 sx, u16 sy, u16 ex, u16 ey, u16 *color) ...
1、提前准备一个移植好LCD、触摸驱动的工程,并修改工程名。 2、获取lvgl图形库源码。 3、将源码添加到提前准备好的工程。 4、修改配置lv_conf.h文件。 5、调用lvgl的初始化程序 lv_init()。 6、在lvgl中注册显示和输入设备驱动程序。 7、在中断服务函数中调用lv_tick_inc(x)以告知lvgl经过的时间。
复制// LCD描点函数void LCD_Color_Fill(u16 sx, u16 sy, u16 ex, u16 ey, u16 *color){u16 ...