不含stm32 底层的代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MyStm32Code/bsp/Inc/bsp_ltdc.h

188 lines
6.6 KiB

2 years ago
#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)