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.
247 lines
7.6 KiB
247 lines
7.6 KiB
/* USER CODE BEGIN Header */ |
|
/** |
|
****************************************************************************** |
|
* @file ltdc.c |
|
* @brief This file provides code for the configuration |
|
* of the LTDC instances. |
|
****************************************************************************** |
|
* @attention |
|
* |
|
* Copyright (c) 2022 STMicroelectronics. |
|
* All rights reserved. |
|
* |
|
* This software is licensed under terms that can be found in the LICENSE file |
|
* in the root directory of this software component. |
|
* If no LICENSE file comes with this software, it is provided AS-IS. |
|
* |
|
****************************************************************************** |
|
*/ |
|
/* USER CODE END Header */ |
|
/* Includes ------------------------------------------------------------------*/ |
|
#include "ltdc.h" |
|
|
|
/* USER CODE BEGIN 0 */ |
|
|
|
/* USER CODE END 0 */ |
|
|
|
LTDC_HandleTypeDef hltdc; |
|
|
|
/* LTDC init function */ |
|
void MX_LTDC_Init(void) |
|
{ |
|
|
|
/* USER CODE BEGIN LTDC_Init 0 */ |
|
|
|
/* USER CODE END LTDC_Init 0 */ |
|
|
|
LTDC_LayerCfgTypeDef pLayerCfg = {0}; |
|
|
|
/* USER CODE BEGIN LTDC_Init 1 */ |
|
|
|
/* USER CODE END LTDC_Init 1 */ |
|
hltdc.Instance = LTDC; |
|
hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; |
|
hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; |
|
hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; |
|
hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; |
|
hltdc.Init.HorizontalSync = 40; |
|
hltdc.Init.VerticalSync = 9; |
|
hltdc.Init.AccumulatedHBP = 53; |
|
hltdc.Init.AccumulatedVBP = 11; |
|
hltdc.Init.AccumulatedActiveW = 533; |
|
hltdc.Init.AccumulatedActiveH = 283; |
|
hltdc.Init.TotalWidth = 565; |
|
hltdc.Init.TotalHeigh = 285; |
|
hltdc.Init.Backcolor.Blue = 0; |
|
hltdc.Init.Backcolor.Green = 0; |
|
hltdc.Init.Backcolor.Red = 0; |
|
if (HAL_LTDC_Init(&hltdc) != HAL_OK) |
|
{ |
|
Error_Handler(); |
|
} |
|
pLayerCfg.WindowX0 = 0; |
|
pLayerCfg.WindowX1 = 480; |
|
pLayerCfg.WindowY0 = 0; |
|
pLayerCfg.WindowY1 = 272; |
|
pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; |
|
pLayerCfg.Alpha = 255; |
|
pLayerCfg.Alpha0 = 0; |
|
pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; |
|
pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; |
|
pLayerCfg.FBStartAdress = 0xC0000000; |
|
pLayerCfg.ImageWidth = 480; |
|
pLayerCfg.ImageHeight = 272; |
|
pLayerCfg.Backcolor.Blue = 0; |
|
pLayerCfg.Backcolor.Green = 0; |
|
pLayerCfg.Backcolor.Red = 0; |
|
if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) |
|
{ |
|
Error_Handler(); |
|
} |
|
/* USER CODE BEGIN LTDC_Init 2 */ |
|
|
|
/* USER CODE END LTDC_Init 2 */ |
|
|
|
} |
|
|
|
void HAL_LTDC_MspInit(LTDC_HandleTypeDef* ltdcHandle) |
|
{ |
|
|
|
GPIO_InitTypeDef GPIO_InitStruct = {0}; |
|
if(ltdcHandle->Instance==LTDC) |
|
{ |
|
/* USER CODE BEGIN LTDC_MspInit 0 */ |
|
|
|
/* USER CODE END LTDC_MspInit 0 */ |
|
/* LTDC clock enable */ |
|
__HAL_RCC_LTDC_CLK_ENABLE(); |
|
|
|
__HAL_RCC_GPIOE_CLK_ENABLE(); |
|
__HAL_RCC_GPIOJ_CLK_ENABLE(); |
|
__HAL_RCC_GPIOK_CLK_ENABLE(); |
|
__HAL_RCC_GPIOG_CLK_ENABLE(); |
|
__HAL_RCC_GPIOI_CLK_ENABLE(); |
|
/**LTDC GPIO Configuration |
|
PE4 ------> LTDC_B0 |
|
PJ13 ------> LTDC_B1 |
|
PK7 ------> LTDC_DE |
|
PK6 ------> LTDC_B7 |
|
PK5 ------> LTDC_B6 |
|
PG12 ------> LTDC_B4 |
|
PJ14 ------> LTDC_B2 |
|
PI10 ------> LTDC_HSYNC |
|
PK4 ------> LTDC_B5 |
|
PJ15 ------> LTDC_B3 |
|
PI9 ------> LTDC_VSYNC |
|
PK1 ------> LTDC_G6 |
|
PK2 ------> LTDC_G7 |
|
PI15 ------> LTDC_R0 |
|
PJ11 ------> LTDC_G4 |
|
PK0 ------> LTDC_G5 |
|
PI14 ------> LTDC_CLK |
|
PJ8 ------> LTDC_G1 |
|
PJ10 ------> LTDC_G3 |
|
PJ7 ------> LTDC_G0 |
|
PJ9 ------> LTDC_G2 |
|
PJ6 ------> LTDC_R7 |
|
PJ4 ------> LTDC_R5 |
|
PJ5 ------> LTDC_R6 |
|
PJ3 ------> LTDC_R4 |
|
PJ2 ------> LTDC_R3 |
|
PJ0 ------> LTDC_R1 |
|
PJ1 ------> LTDC_R2 |
|
*/ |
|
GPIO_InitStruct.Pin = LCD_B0_Pin; |
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
|
GPIO_InitStruct.Pull = GPIO_NOPULL; |
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
|
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; |
|
HAL_GPIO_Init(LCD_B0_GPIO_Port, &GPIO_InitStruct); |
|
|
|
GPIO_InitStruct.Pin = LCD_B1_Pin|LCD_B2_Pin|LCD_B3_Pin|LCD_G4_Pin |
|
|LCD_G1_Pin|LCD_G3_Pin|LCD_G0_Pin|LCD_G2_Pin |
|
|LCD_R7_Pin|LCD_R5_Pin|LCD_R6_Pin|LCD_R4_Pin |
|
|LCD_R3_Pin|LCD_R1_Pin|LCD_R2_Pin; |
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
|
GPIO_InitStruct.Pull = GPIO_NOPULL; |
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
|
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; |
|
HAL_GPIO_Init(GPIOJ, &GPIO_InitStruct); |
|
|
|
GPIO_InitStruct.Pin = LCD_DE_Pin|LCD_B7_Pin|LCD_B6_Pin|LCD_B5_Pin |
|
|LCD_G6_Pin|LCD_G7_Pin|LCD_G5_Pin; |
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
|
GPIO_InitStruct.Pull = GPIO_NOPULL; |
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
|
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; |
|
HAL_GPIO_Init(GPIOK, &GPIO_InitStruct); |
|
|
|
GPIO_InitStruct.Pin = LCD_B4_Pin; |
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
|
GPIO_InitStruct.Pull = GPIO_NOPULL; |
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
|
GPIO_InitStruct.Alternate = GPIO_AF9_LTDC; |
|
HAL_GPIO_Init(LCD_B4_GPIO_Port, &GPIO_InitStruct); |
|
|
|
GPIO_InitStruct.Pin = LCD_HSYNC_Pin|LCD_VSYNC_Pin|LCD_R0_Pin|LCD_CLK_Pin; |
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
|
GPIO_InitStruct.Pull = GPIO_NOPULL; |
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
|
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; |
|
HAL_GPIO_Init(GPIOI, &GPIO_InitStruct); |
|
|
|
/* LTDC interrupt Init */ |
|
HAL_NVIC_SetPriority(LTDC_IRQn, 5, 0); |
|
HAL_NVIC_EnableIRQ(LTDC_IRQn); |
|
/* USER CODE BEGIN LTDC_MspInit 1 */ |
|
|
|
/* USER CODE END LTDC_MspInit 1 */ |
|
} |
|
} |
|
|
|
void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef* ltdcHandle) |
|
{ |
|
|
|
if(ltdcHandle->Instance==LTDC) |
|
{ |
|
/* USER CODE BEGIN LTDC_MspDeInit 0 */ |
|
|
|
/* USER CODE END LTDC_MspDeInit 0 */ |
|
/* Peripheral clock disable */ |
|
__HAL_RCC_LTDC_CLK_DISABLE(); |
|
|
|
/**LTDC GPIO Configuration |
|
PE4 ------> LTDC_B0 |
|
PJ13 ------> LTDC_B1 |
|
PK7 ------> LTDC_DE |
|
PK6 ------> LTDC_B7 |
|
PK5 ------> LTDC_B6 |
|
PG12 ------> LTDC_B4 |
|
PJ14 ------> LTDC_B2 |
|
PI10 ------> LTDC_HSYNC |
|
PK4 ------> LTDC_B5 |
|
PJ15 ------> LTDC_B3 |
|
PI9 ------> LTDC_VSYNC |
|
PK1 ------> LTDC_G6 |
|
PK2 ------> LTDC_G7 |
|
PI15 ------> LTDC_R0 |
|
PJ11 ------> LTDC_G4 |
|
PK0 ------> LTDC_G5 |
|
PI14 ------> LTDC_CLK |
|
PJ8 ------> LTDC_G1 |
|
PJ10 ------> LTDC_G3 |
|
PJ7 ------> LTDC_G0 |
|
PJ9 ------> LTDC_G2 |
|
PJ6 ------> LTDC_R7 |
|
PJ4 ------> LTDC_R5 |
|
PJ5 ------> LTDC_R6 |
|
PJ3 ------> LTDC_R4 |
|
PJ2 ------> LTDC_R3 |
|
PJ0 ------> LTDC_R1 |
|
PJ1 ------> LTDC_R2 |
|
*/ |
|
HAL_GPIO_DeInit(LCD_B0_GPIO_Port, LCD_B0_Pin); |
|
|
|
HAL_GPIO_DeInit(GPIOJ, LCD_B1_Pin|LCD_B2_Pin|LCD_B3_Pin|LCD_G4_Pin |
|
|LCD_G1_Pin|LCD_G3_Pin|LCD_G0_Pin|LCD_G2_Pin |
|
|LCD_R7_Pin|LCD_R5_Pin|LCD_R6_Pin|LCD_R4_Pin |
|
|LCD_R3_Pin|LCD_R1_Pin|LCD_R2_Pin); |
|
|
|
HAL_GPIO_DeInit(GPIOK, LCD_DE_Pin|LCD_B7_Pin|LCD_B6_Pin|LCD_B5_Pin |
|
|LCD_G6_Pin|LCD_G7_Pin|LCD_G5_Pin); |
|
|
|
HAL_GPIO_DeInit(LCD_B4_GPIO_Port, LCD_B4_Pin); |
|
|
|
HAL_GPIO_DeInit(GPIOI, LCD_HSYNC_Pin|LCD_VSYNC_Pin|LCD_R0_Pin|LCD_CLK_Pin); |
|
|
|
/* LTDC interrupt Deinit */ |
|
HAL_NVIC_DisableIRQ(LTDC_IRQn); |
|
/* USER CODE BEGIN LTDC_MspDeInit 1 */ |
|
|
|
/* USER CODE END LTDC_MspDeInit 1 */ |
|
} |
|
} |
|
|
|
/* USER CODE BEGIN 1 */ |
|
|
|
/* USER CODE END 1 */
|
|
|