#ifndef __BSP_LTDC_H #define __BSP_LTDC_H #ifdef __cplusplus extern "C" { #endif #include "main.h" #include "stm32f4xx.h" #include "ltdc.h" // #include "fonts.h" #define LCD_BUF_ADDRESS 0xD0000000 #define LCD_PIXFORMAT LTDC_PIXEL_FORMAT_ARGB8888 #define LTDC_BACKLAYERCOLOR 0X00000000 // #define LCD_DEFAULT_FONT Font16 // extern LTDC_HandleTypeDef *Ltdc_Handler; extern uint8_t *DISP_BUF[2]; typedef struct { uint16_t pixel_width; // 像素宽 uint16_t pixel_height; // 像素高 // uint16_t width; //LCD 宽度 // uint16_t height; //LCD 高度 // uint8_t dir; //横屏还是竖屏控制:0,竖屏;1,横屏。 // uint8_t pixelsize; //像素大小。 uint8_t hbp; //HSYNC后的无效像素 uint8_t vbp; //VSYNC后的无效行数 uint8_t hsw; //HSYNC宽度 uint8_t vsw; //VSYNC宽度 uint8_t hfp; //HSYNC前的无效像素 uint8_t vfp; //VSYNC前的无效行数 uint16_t id; //LCD ID uint16_t activelayer; //LCD ID // uint32_t layeraddr[2]; // Layer0 Addr // uint32_t layer_1_Addr; // Layer1 Addr }MY_LTDC_TypeDef; //LCD参数 extern MY_LTDC_TypeDef my_ltdc; //管理LCD重要参数 //LCD的画笔颜色和背景色 extern uint32_t POINT_COLOR;//默认红色 extern uint32_t BACK_COLOR; //背景颜色.默认为白色 #define LTDC_DISP_ON() HAL_GPIO_WritePin(LTDC_BL_GPIO_Port,LTDC_BL_Pin,SET); //LCD背光 PB5 // typedef struct // { // /*根据液晶数据手册的参数配置*/ // uint8_t hbp; //HSYNC后的无效像素 // uint8_t vbp; //VSYNC后的无效行数 // uint8_t hsw; //HSYNC宽度 // uint8_t vsw; //VSYNC宽度 // uint8_t hfp; //HSYNC前的无效像素 // uint8_t vfp; //VSYNC前的无效行数 // uint8_t comment_clock_2byte; //rgb565/argb4444等双字节像素时推荐使用的液晶时钟频率 // uint8_t comment_clock_4byte; //Argb8888等四字节像素时推荐使用的液晶时钟频率 // uint8_t dir; //0,竖屏;1,横屏; // uint8_t activelayer; // 0,第一层;1 第二层 // uint16_t lcd_pixel_width; //液晶分辨率,宽 // uint16_t lcd_pixel_height;//液晶分辨率,高 // // uint8_t pixel_format; // 像素格式 // // uint8_t pixel_bytes; // 像素字节数 // }LCD_PARAM_TypeDef; /** * @brief LCD color */ #if LCD_PIXFORMAT == LTDC_PIXEL_FORMAT_ARGB8888 || LCD_PIXFORMAT == LTDC_PIXEL_FORMAT_RGB888 #define LTDC_COLOR_BLUE ((uint32_t)0xFF0000FF) #define LTDC_COLOR_GREEN ((uint32_t)0xFF00FF00) #define LTDC_COLOR_RED ((uint32_t)0xFFFF0000) #else #define LTDC_COLOR_BLUE ((uint16_t)0x001F) #define LTDC_COLOR_GREEN ((uint16_t)0x07E0) #define LTDC_COLOR_RED ((uint16_t)0xF800) #endif uint16_t LTDC_PanelID_Read(void); void LTDC_Init(void); uint8_t LTDC_Clk_Set(uint32_t pllsain, uint32_t pllsair ,uint32_t pllsaidivr); // void LCD_LayerInit(uint16_t LayerIndex, // uint16_t sx,uint16_t sy,uint16_t width,uint16_t height, // uint8_t alpha,uint8_t alpha0,uint8_t bfac1,uint8_t bfac2, // uint32_t Layer_Address,uint32_t PixelFormat,uint32_t color); 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基本参数设置 void LTDC_Layer_Switch(uint8_t layerx,uint8_t on_off); //层开关 void LTDC_Enable_Line_IT(uint16_t line); // void LTDC_Select_Layer(uint8_t layerx); //层选择 // void LTDC_Display_Dir(uint8_t dir); //显示方向控制 // void LTDC_Clear(uint32_t color); // void LTDC_Fill(uint16_t sx,uint16_t sy,uint16_t ex,uint16_t ey,uint32_t color); // void LTDC_Color_Fill(uint16_t sx,uint16_t sy,uint16_t ex,uint16_t ey,uint16_t *color); // void LCD_SetTransparency(uint32_t LayerIndex, uint8_t Transparency); // void LCD_LayerInit(uint16_t LayerIndex, uint32_t FB_Address,uint32_t PixelFormat); // void LTDC_Draw_Point(uint16_t x,uint16_t y,uint32_t color); // uint32_t LTDC_Read_Point(uint16_t x,uint16_t y); #ifdef __cplusplus } #endif #endif /* // 配置LTDC行中断 LTDC->LIPCR =my_lcd.vsw+my_lcd.vbp+my_lcd.pixel_height-1;//配置行中断的行数为最后一行 // LTDC->IER |=LTDC_IER_LIE; //使能LTDC行中断 // LTDC->SRCR |= (1<<1); // 行中断结束 自动改写寄存器 SRCR // while(LTDC->SRCR & LTDC_SRCR_IMR) { // if(disp->driver->wait_cb) disp->driver->wait_cb(disp->driver); // } */ // //画笔颜色 // #define WHITE_RGB565 0xFFFF // #define BLACK_RGB565 0x0000 // #define BLUE_RGB565 0x001F // #define BRED_RGB565 0XF81F // #define GRED_RGB565 0XFFE0 // #define GBLUE_RGB565 0X07FF // #define RED_RGB565 0xF800 // #define MAGENTA_RGB565 0xF81F // #define GREEN_RGB565 0x07E0 // #define CYAN_RGB565 0x7FFF // #define YELLOW_RGB565 0xFFE0 // #define BROWN_RGB565 0XBC40 //棕色 // #define BRRED_RGB565 0XFC07 //棕红色 // #define GRAY_RGB565 0X8430 //灰色 // #define LGRAY_RGB565 0XC618 //浅灰色(PANNEL),窗体背景色 // //画笔颜色 ARGB8888 // #define LTDC_COLOR_BLUE ((uint32_t)0xFF0000FF) // #define LTDC_COLOR_GREEN ((uint32_t)0xFF00FF00) // #define LTDC_COLOR_RED ((uint32_t)0xFFFF0000) // #define LTDC_COLOR_CYAN ((uint32_t)0xFF00FFFF) // #define LTDC_COLOR_MAGENTA ((uint32_t)0xFFFF00FF) // #define LTDC_COLOR_YELLOW ((uint32_t)0xFFFFFF00) // #define LTDC_COLOR_LIGHTBLUE ((uint32_t)0xFF8080FF) // #define LTDC_COLOR_LIGHTGREEN ((uint32_t)0xFF80FF80) // #define LTDC_COLOR_LIGHTRED ((uint32_t)0xFFFF8080) // #define LTDC_COLOR_LIGHTCYAN ((uint32_t)0xFF80FFFF) // #define LTDC_COLOR_LIGHTMAGENTA ((uint32_t)0xFFFF80FF) // #define LTDC_COLOR_LIGHTYELLOW ((uint32_t)0xFFFFFF80) // #define LTDC_COLOR_DARKBLUE ((uint32_t)0xFF000080) // #define LTDC_COLOR_DARKGREEN ((uint32_t)0xFF008000) // #define LTDC_COLOR_DARKRED ((uint32_t)0xFF800000) // #define LTDC_COLOR_DARKCYAN ((uint32_t)0xFF008080) // #define LTDC_COLOR_DARKMAGENTA ((uint32_t)0xFF800080) // #define LTDC_COLOR_DARKYELLOW ((uint32_t)0xFF808000) // #define LTDC_COLOR_WHITE ((uint32_t)0xFFFFFFFF) // #define LTDC_COLOR_LIGHTGRAY ((uint32_t)0xFFD3D3D3) // #define LTDC_COLOR_GRAY ((uint32_t)0xFF808080) // #define LTDC_COLOR_DARKGRAY ((uint32_t)0xFF404040) // #define LTDC_COLOR_BLACK ((uint32_t)0xFF000000) // #define LTDC_COLOR_BROWN ((uint32_t)0xFFA52A2A) // #define LTDC_COLOR_ORANGE ((uint32_t)0xFFFFA500) // #define LTDC_COLOR_TRANSPARENT ((uint32_t)0xFF000000)