Added WDA_LCD_DrawBmp to the LCD_API branch/feature
This commit is contained in:
@@ -1 +1,65 @@
|
||||
#include "lcd_api.h"
|
||||
|
||||
//LTDC_HandleTypeDef hLtdcHandler;
|
||||
static DMA2D_HandleTypeDef hDma2dHandler2;
|
||||
|
||||
void init_lcd(void){
|
||||
BSP_LCD_Init();
|
||||
BSP_LCD_LayerDefaultInit(1, LCD_FB_START_ADDRESS);
|
||||
BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS + (BSP_LCD_GetXSize()*BSP_LCD_GetYSize()*4));
|
||||
BSP_LCD_DisplayOn();
|
||||
BSP_LCD_SelectLayer(0);
|
||||
BSP_LCD_Clear(LCD_COLOR_BLACK);
|
||||
BSP_LCD_SelectLayer(1);
|
||||
BSP_LCD_Clear(LCD_COLOR_BLACK);
|
||||
|
||||
}
|
||||
|
||||
void init_lcd_with_layers(uint16_t amount_layers){
|
||||
BSP_LCD_Init();
|
||||
BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS);
|
||||
for (uint16_t i = 1; i < amount_layers; i++) {
|
||||
BSP_LCD_LayerDefaultInit(i, LCD_FB_START_ADDRESS + ((BSP_LCD_GetXSize()*BSP_LCD_GetYSize()*4)*i));
|
||||
}
|
||||
BSP_LCD_DisplayOn();
|
||||
for (uint16_t i = 0; i < amount_layers; i++) {
|
||||
BSP_LCD_SelectLayer(i);
|
||||
BSP_LCD_Clear(LCD_COLOR_BLACK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void display_bmp_array(const uint8_t *bmp_data, uint16_t x_pos, uint16_t y_pos, uint16_t layer_idx){
|
||||
BSP_LCD_SelectLayer(layer_idx);
|
||||
BSP_LCD_DrawBitmap(x_pos, y_pos, (uint8_t *)bmp_data);
|
||||
}
|
||||
|
||||
void LCD_DrawBmp(const void *pSrc, uint32_t xPos, uint32_t yPos, uint32_t xSize, uint32_t ySize, uint32_t ColorMode)
|
||||
{
|
||||
|
||||
uint32_t address = hLtdcHandler.LayerCfg[1].FBStartAdress + (((480*yPos) + xPos)*(4));
|
||||
void *pDst = (void *)address;
|
||||
|
||||
|
||||
hDma2dHandler2.Init.Mode = DMA2D_M2M_PFC;
|
||||
hDma2dHandler2.Init.ColorMode = DMA2D_ARGB8888;
|
||||
hDma2dHandler2.Init.OutputOffset = 480-xSize;
|
||||
|
||||
hDma2dHandler2.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA;
|
||||
hDma2dHandler2.LayerCfg[1].InputAlpha = 0xFF;
|
||||
hDma2dHandler2.LayerCfg[1].InputColorMode = ColorMode;
|
||||
hDma2dHandler2.LayerCfg[1].InputOffset = 0;
|
||||
|
||||
hDma2dHandler2.Instance = DMA2D;
|
||||
|
||||
if(HAL_DMA2D_Init(&hDma2dHandler2) == HAL_OK)
|
||||
{
|
||||
if(HAL_DMA2D_ConfigLayer(&hDma2dHandler2, 1) == HAL_OK)
|
||||
{
|
||||
if (HAL_DMA2D_Start(&hDma2dHandler2, (uint32_t)pSrc, (uint32_t)pDst, xSize, ySize) == HAL_OK)
|
||||
{
|
||||
HAL_DMA2D_PollForTransfer(&hDma2dHandler2, 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,10 @@
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
#include "log.h"
|
||||
|
||||
//#include "test_img.h"
|
||||
#include "stlogo.h"
|
||||
#include "lcd_api.h"
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
@@ -108,11 +112,13 @@ int main(void)
|
||||
MX_LWIP_Init();
|
||||
MX_QUADSPI_Init();
|
||||
/* USER CODE BEGIN 2 */
|
||||
//BSP_LCD_Init();
|
||||
HAL_GPIO_WritePin(LCD_BL_CTRL_GPIO_Port,LCD_BL_CTRL_Pin,GPIO_PIN_SET);
|
||||
/* Assert display enable LCD_DISP pin */
|
||||
HAL_GPIO_WritePin(LCD_DISP_GPIO_Port, LCD_DISP_Pin, GPIO_PIN_SET);
|
||||
/* USER CODE END 2 */
|
||||
|
||||
init_lcd();
|
||||
//display_bmp_array(stlogo, 20, 20, 0);
|
||||
/* Infinite loop */
|
||||
/* USER CODE BEGIN WHILE */
|
||||
while (1)
|
||||
@@ -120,6 +126,9 @@ int main(void)
|
||||
/* USER CODE END WHILE */
|
||||
|
||||
/* USER CODE BEGIN 3 */
|
||||
WDA_LCD_DrawBmp(TEST_DATA, 30, 30, 50, 50, 0x00000002U);
|
||||
|
||||
|
||||
}
|
||||
/* USER CODE END 3 */
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user