lvgl
This commit is contained in:
1 parent
8565af8a2e
commit
d8854fea10
16 files changed
+945
-901
No files matched your search
@@ -22,6 +22,8 @@
|
||||
#define CYAN 0x07FF
|
||||
#define MAGENTA 0xF81F
|
||||
|
||||
#define RGB_DIR 1
|
||||
|
||||
/* 注意:_lcd_dev 必须在 extern 之前定义! */
|
||||
typedef struct {
|
||||
uint16_t width;
|
||||
@@ -35,7 +37,7 @@ extern uint32_t g_back_color;
|
||||
extern _lcd_dev lcddev;
|
||||
|
||||
/* 函数声明 */
|
||||
void lcd_init(void);
|
||||
int lcd_init(void);
|
||||
void lcd_clear(uint32_t color);
|
||||
void lcd_draw_point(uint16_t x, uint16_t y, uint32_t color);
|
||||
void lcd_fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint32_t color);
|
||||
|
||||
@@ -95,7 +95,7 @@ extern DMA2D_HandleTypeDef g_dma2d_handle; /* DMA2D句柄 */
|
||||
#define LTDC_BACKLAYERCOLOR 0X00000000
|
||||
|
||||
/* LTDC帧缓冲区首地址,这里定义在SDRAM里面. */
|
||||
#define LTDC_FRAME_BUF_ADDR 0XC0000000
|
||||
//#define LTDC_FRAME_BUF_ADDR 0XC0000000
|
||||
|
||||
/* LTDC背光控制 */
|
||||
#define LTDC_BL(x) do{ x ? \
|
||||
@@ -124,6 +124,6 @@ uint8_t ltdc_clk_set(uint32_t pll3n, uint32_t pll3m, uint32_t pll3r);
|
||||
void ltdc_layer_window_config(uint8_t layerx, uint16_t sx, uint16_t sy, uint16_t width, uint16_t height); /* LTDC层窗口设置 */
|
||||
void ltdc_layer_parameter_config(uint8_t layerx, uint32_t bufaddr, uint8_t pixformat, uint8_t alpha, uint8_t alpha0, uint8_t bfac1, uint8_t bfac2, uint32_t bkcolor); /* LTDC层基本参数设置 */
|
||||
uint16_t ltdc_panelid_read(void); /* LTDC 面板ID读取函数 */
|
||||
int ltdc_init(void); /* LTDC初始化函数 */
|
||||
int ltdc_init(void);
|
||||
|
||||
#endif /* DRIVERS_INCLUDE_LTDC_H_ */
|
||||
+9
-8
@@ -16,19 +16,20 @@ uint32_t g_point_color = RED;
|
||||
uint32_t g_back_color = WHITE;
|
||||
_lcd_dev lcddev;
|
||||
|
||||
void lcd_init(void) {
|
||||
lcddev.id = 0x7016; // 模拟 ID
|
||||
int lcd_init(void) {
|
||||
// lcddev.id = 0x7016; // 模拟 ID
|
||||
|
||||
rt_kprintf("LCD ID:%x\r\n", lcddev.id);
|
||||
// rt_kprintf("LCD ID:%x\r\n", lcddev.id);
|
||||
|
||||
if (lcdltdc.pwidth != 0) {
|
||||
lcd_display_dir(1); // 横屏
|
||||
lcd_display_dir(RGB_DIR); // 横屏
|
||||
}
|
||||
|
||||
lcd_clear(WHITE);
|
||||
lcd_rgb_test();
|
||||
|
||||
return 0;
|
||||
}
|
||||
//INIT_APP_EXPORT(lcd_init);
|
||||
INIT_APP_EXPORT(lcd_init);
|
||||
|
||||
void lcd_rgb_test(void)
|
||||
{
|
||||
@@ -106,8 +107,8 @@ void lcd_show_xnum(uint16_t x, uint16_t y, uint32_t num, uint8_t len, uint8_t si
|
||||
void lcd_show_string(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint8_t size, char *p, uint32_t color) {}
|
||||
|
||||
// 工具函数(若未使用可删除)
|
||||
static uint32_t lcd_pow(uint8_t m, uint8_t n) {
|
||||
/*static uint32_t lcd_pow(uint8_t m, uint8_t n) {
|
||||
uint32_t result = 1;
|
||||
while (n--) result *= m;
|
||||
return result;
|
||||
}
|
||||
}*/
|
||||
+17
-7
@@ -19,10 +19,8 @@
|
||||
LTDC_HandleTypeDef g_ltdc_handle; /* LTDC句柄 */
|
||||
DMA2D_HandleTypeDef g_dma2d_handle; /* DMA2D句柄 */
|
||||
|
||||
/* 移除原始静态帧缓存数组定义 */
|
||||
|
||||
#define MAX_FRAME_WIDTH 1280
|
||||
#define MAX_FRAME_HEIGHT 800
|
||||
#define MAX_FRAME_WIDTH 1024
|
||||
#define MAX_FRAME_HEIGHT 600
|
||||
|
||||
#if LTDC_PIXFORMAT == LTDC_PIXFORMAT_ARGB8888 || LTDC_PIXFORMAT == LTDC_PIXFORMAT_RGB888
|
||||
#define BYTES_PER_PIXEL 4
|
||||
@@ -234,8 +232,16 @@ void ltdc_fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint32_t colo
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ex >= lcdltdc.pheight) ex = lcdltdc.pheight - 1;
|
||||
if (sx >= lcdltdc.pheight) sx = lcdltdc.pheight - 1;
|
||||
if (ex >= lcdltdc.pheight)
|
||||
{
|
||||
ex = lcdltdc.pheight - 1;
|
||||
}
|
||||
|
||||
if (sx >= lcdltdc.pheight)
|
||||
{
|
||||
sx = lcdltdc.pheight - 1;
|
||||
}
|
||||
|
||||
psx = sy;
|
||||
psy = lcdltdc.pheight - ex - 1;
|
||||
pex = ey;
|
||||
@@ -246,10 +252,12 @@ void ltdc_fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint32_t colo
|
||||
addr = ((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * psy + psx));
|
||||
|
||||
__HAL_RCC_DMA2D_CLK_ENABLE();
|
||||
|
||||
DMA2D->CR &= ~(DMA2D_CR_START);
|
||||
DMA2D->CR = DMA2D_R2M;
|
||||
DMA2D->OPFCCR = LTDC_PIXFORMAT;
|
||||
DMA2D->OOR = offline;
|
||||
|
||||
DMA2D->OMAR = addr;
|
||||
DMA2D->NLR = (pey - psy + 1) | ((pex - psx + 1) << 16);
|
||||
DMA2D->OCOLR = color;
|
||||
@@ -292,11 +300,13 @@ void ltdc_color_fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_
|
||||
addr = ((uint32_t)g_ltdc_framebuf[lcdltdc.activelayer] + lcdltdc.pixsize * (lcdltdc.pwidth * psy + psx));
|
||||
|
||||
__HAL_RCC_DMA2D_CLK_ENABLE();
|
||||
|
||||
DMA2D->CR &= ~(DMA2D_CR_START);
|
||||
DMA2D->CR = DMA2D_M2M;
|
||||
DMA2D->FGPFCCR = LTDC_PIXFORMAT;
|
||||
DMA2D->FGOR = 0;
|
||||
DMA2D->OOR = offline;
|
||||
|
||||
DMA2D->FGMAR = (uint32_t)color;
|
||||
DMA2D->OMAR = addr;
|
||||
DMA2D->NLR = (pey - psy + 1) | ((pex - psx + 1) << 16);
|
||||
@@ -448,7 +458,7 @@ int ltdc_init(void)
|
||||
lcdltdc.pwidth = 1024; lcdltdc.pheight = 600;
|
||||
lcdltdc.hsw = 20; lcdltdc.hbp = 140; lcdltdc.hfp = 160;
|
||||
lcdltdc.vsw = 3; lcdltdc.vbp = 20; lcdltdc.vfp = 12;
|
||||
ltdc_clk_set(300, 25, 6);
|
||||
ltdc_clk_set(129, 32, 5);
|
||||
}
|
||||
else if (lcdid == 0X7018)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user