Update main.c

This commit is contained in:
TeunBugwood
2023-12-11 14:01:24 +01:00
parent cd2839e6ca
commit 5b0666920c

View File

@@ -1,20 +1,20 @@
/* USER CODE BEGIN Header */ /* USER CODE BEGIN Header */
/** /**
****************************************************************************** ******************************************************************************
* @file : main.c * @file : main.c
* @brief : Main program body * @brief : Main program body
****************************************************************************** ******************************************************************************
* @attention * @attention
* *
* Copyright (c) 2023 STMicroelectronics. * Copyright (c) 2023 STMicroelectronics.
* All rights reserved. * All rights reserved.
* *
* This software is licensed under terms that can be found in the LICENSE file * This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component. * in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS. * If no LICENSE file comes with this software, it is provided AS-IS.
* *
****************************************************************************** ******************************************************************************
*/ */
/* USER CODE END Header */ /* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "main.h" #include "main.h"
@@ -86,456 +86,434 @@ static void MX_QUADSPI_Init(void);
/* USER CODE END 0 */ /* USER CODE END 0 */
/** /**
* @brief The application entry point. * @brief The application entry point.
* @retval int * @retval int
*/ */
int main(void) int main(void) {
{ /* USER CODE BEGIN 1 */
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */ /* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/ /* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init(); HAL_Init();
/* USER CODE BEGIN Init */ /* USER CODE BEGIN Init */
/* USER CODE END Init */ /* USER CODE END Init */
/* Configure the system clock */ /* Configure the system clock */
SystemClock_Config(); SystemClock_Config();
/* USER CODE BEGIN SysInit */ /* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */ /* USER CODE END SysInit */
/* Initialize all configured peripherals */ /* Initialize all configured peripherals */
MX_GPIO_Init(); MX_GPIO_Init();
MX_LTDC_Init(); MX_LTDC_Init();
MX_USART1_UART_Init(); MX_USART1_UART_Init();
MX_DMA2D_Init(); MX_DMA2D_Init();
MX_FMC_Init(); MX_FMC_Init();
MX_LWIP_Init(); MX_LWIP_Init();
MX_QUADSPI_Init(); MX_QUADSPI_Init();
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
/* Initialize QSPI */ /* Initialize QSPI */
BSP_QSPI_Init(); BSP_QSPI_Init();
BSP_QSPI_MemoryMappedMode(); BSP_QSPI_MemoryMappedMode();
WRITE_REG(QUADSPI->LPTR, 0xFFF); WRITE_REG(QUADSPI->LPTR, 0xFFF);
/* Clear terminal */ /* Clear terminal */
printf(CLEAR_SCREEN); printf(CLEAR_SCREEN);
/* Initialize the LCD */ /* Initialize the LCD */
lcd_init(true); lcd_init(true);
/* Initialize the filesystem */ /* Initialize the filesystem */
llfs_init(); llfs_init();
/* Initialize the tftp server */ /* Initialize the tftp server */
tftp_server_init(); tftp_server_init();
/* Initialize tcp command interface*/
tcp_cmd_init();
/* Initialize Modbus*/ /* Initialize tcp command interface*/
modbus_init(); tcp_cmd_init();
/* Initialize the MQTT application */
mqtt_application_init();
// Initialize the UDP broadcast service /* Initialize Modbus*/
modbus_init();
if (udp_broadcast_init(10,255) != ERR_OK){ /* Initialize the MQTT application */
LOG_WARN(TAG,"error initializing udp connection, check warnings from udp_broadcast_init() or udp_broadcast_connection_init()"); mqtt_application_init();
}
if (udp_broadcast_set_owner_details("Joran", "Van Nieuwenhoven") != ERR_OK){
LOG_WARN(TAG,"error setting owner's details");
}
/* Initialize website backend */ // Initialize the UDP broadcast service
wbe_init();
/* USER CODE END 2 */ if (udp_broadcast_init(10, 255) != ERR_OK) {
LOG_WARN(TAG,
"error initializing udp connection, check warnings from udp_broadcast_init() or udp_broadcast_connection_init()");
}
if (udp_broadcast_set_owner_details("Joran", "Van Nieuwenhoven") != ERR_OK) {
LOG_WARN(TAG, "error setting owner's details");
}
/* Infinite loop */ /* Initialize website backend */
/* USER CODE BEGIN WHILE */ wbe_init();
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */ /* USER CODE END 2 */
MX_LWIP_Process();
lcd_task(); /* Infinite loop */
} /* USER CODE BEGIN WHILE */
/* USER CODE END 3 */ while (1) {
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
MX_LWIP_Process();
lcd_task();
}
/* USER CODE END 3 */
} }
/** /**
* @brief System Clock Configuration * @brief System Clock Configuration
* @retval None * @retval None
*/ */
void SystemClock_Config(void) void SystemClock_Config(void) {
{ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/** Configure LSE Drive Capability /** Configure LSE Drive Capability
*/ */
HAL_PWR_EnableBkUpAccess(); HAL_PWR_EnableBkUpAccess();
/** Configure the main internal regulator output voltage /** Configure the main internal regulator output voltage
*/ */
__HAL_RCC_PWR_CLK_ENABLE(); __HAL_RCC_PWR_CLK_ENABLE();
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/** Initializes the RCC Oscillators according to the specified parameters /** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure. * in the RCC_OscInitTypeDef structure.
*/ */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 25; RCC_OscInitStruct.PLL.PLLM = 25;
RCC_OscInitStruct.PLL.PLLN = 400; RCC_OscInitStruct.PLL.PLLN = 400;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 2; RCC_OscInitStruct.PLL.PLLQ = 2;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
{ Error_Handler();
Error_Handler(); }
}
/** Activate the Over-Drive mode /** Activate the Over-Drive mode
*/ */
if (HAL_PWREx_EnableOverDrive() != HAL_OK) if (HAL_PWREx_EnableOverDrive() != HAL_OK) {
{ Error_Handler();
Error_Handler(); }
}
/** Initializes the CPU, AHB and APB buses clocks /** Initializes the CPU, AHB and APB buses clocks
*/ */
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_6) != HAL_OK) if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_6) != HAL_OK) {
{ Error_Handler();
Error_Handler(); }
}
} }
/** /**
* @brief DMA2D Initialization Function * @brief DMA2D Initialization Function
* @param None * @param None
* @retval None * @retval None
*/ */
static void MX_DMA2D_Init(void) static void MX_DMA2D_Init(void) {
{
/* USER CODE BEGIN DMA2D_Init 0 */ /* USER CODE BEGIN DMA2D_Init 0 */
/* USER CODE END DMA2D_Init 0 */ /* USER CODE END DMA2D_Init 0 */
/* USER CODE BEGIN DMA2D_Init 1 */ /* USER CODE BEGIN DMA2D_Init 1 */
/* USER CODE END DMA2D_Init 1 */ /* USER CODE END DMA2D_Init 1 */
hdma2d.Instance = DMA2D; hdma2d.Instance = DMA2D;
hdma2d.Init.Mode = DMA2D_M2M; hdma2d.Init.Mode = DMA2D_M2M;
hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888;
hdma2d.Init.OutputOffset = 0; hdma2d.Init.OutputOffset = 0;
hdma2d.LayerCfg[1].InputOffset = 0; hdma2d.LayerCfg[1].InputOffset = 0;
hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888;
hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA;
hdma2d.LayerCfg[1].InputAlpha = 0; hdma2d.LayerCfg[1].InputAlpha = 0;
if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) {
{ Error_Handler();
Error_Handler(); }
} if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) {
if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) Error_Handler();
{ }
Error_Handler(); /* USER CODE BEGIN DMA2D_Init 2 */
}
/* USER CODE BEGIN DMA2D_Init 2 */
/* USER CODE END DMA2D_Init 2 */ /* USER CODE END DMA2D_Init 2 */
} }
/** /**
* @brief LTDC Initialization Function * @brief LTDC Initialization Function
* @param None * @param None
* @retval None * @retval None
*/ */
static void MX_LTDC_Init(void) static void MX_LTDC_Init(void) {
{
/* USER CODE BEGIN LTDC_Init 0 */ /* USER CODE BEGIN LTDC_Init 0 */
/* USER CODE END LTDC_Init 0 */ /* USER CODE END LTDC_Init 0 */
LTDC_LayerCfgTypeDef pLayerCfg = {0}; LTDC_LayerCfgTypeDef pLayerCfg = {0};
LTDC_LayerCfgTypeDef pLayerCfg1 = {0}; LTDC_LayerCfgTypeDef pLayerCfg1 = {0};
/* USER CODE BEGIN LTDC_Init 1 */ /* USER CODE BEGIN LTDC_Init 1 */
/* USER CODE END LTDC_Init 1 */ /* USER CODE END LTDC_Init 1 */
hltdc.Instance = LTDC; hltdc.Instance = LTDC;
hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;
hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;
hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;
hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
hltdc.Init.HorizontalSync = 40; hltdc.Init.HorizontalSync = 40;
hltdc.Init.VerticalSync = 9; hltdc.Init.VerticalSync = 9;
hltdc.Init.AccumulatedHBP = 53; hltdc.Init.AccumulatedHBP = 53;
hltdc.Init.AccumulatedVBP = 11; hltdc.Init.AccumulatedVBP = 11;
hltdc.Init.AccumulatedActiveW = 533; hltdc.Init.AccumulatedActiveW = 533;
hltdc.Init.AccumulatedActiveH = 283; hltdc.Init.AccumulatedActiveH = 283;
hltdc.Init.TotalWidth = 565; hltdc.Init.TotalWidth = 565;
hltdc.Init.TotalHeigh = 285; hltdc.Init.TotalHeigh = 285;
hltdc.Init.Backcolor.Blue = 0; hltdc.Init.Backcolor.Blue = 0;
hltdc.Init.Backcolor.Green = 255; hltdc.Init.Backcolor.Green = 255;
hltdc.Init.Backcolor.Red = 0; hltdc.Init.Backcolor.Red = 0;
if (HAL_LTDC_Init(&hltdc) != HAL_OK) if (HAL_LTDC_Init(&hltdc) != HAL_OK) {
{ Error_Handler();
Error_Handler(); }
} pLayerCfg.WindowX0 = 0;
pLayerCfg.WindowX0 = 0; pLayerCfg.WindowX1 = 480;
pLayerCfg.WindowX1 = 480; pLayerCfg.WindowY0 = 0;
pLayerCfg.WindowY0 = 0; pLayerCfg.WindowY1 = 272;
pLayerCfg.WindowY1 = 272; pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_ARGB1555;
pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_ARGB1555; pLayerCfg.Alpha = 255;
pLayerCfg.Alpha = 255; pLayerCfg.Alpha0 = 0;
pLayerCfg.Alpha0 = 0; pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; pLayerCfg.FBStartAdress = 0;
pLayerCfg.FBStartAdress = 0; pLayerCfg.ImageWidth = 480;
pLayerCfg.ImageWidth = 480; pLayerCfg.ImageHeight = 272;
pLayerCfg.ImageHeight = 272; pLayerCfg.Backcolor.Blue = 0;
pLayerCfg.Backcolor.Blue = 0; pLayerCfg.Backcolor.Green = 0;
pLayerCfg.Backcolor.Green = 0; pLayerCfg.Backcolor.Red = 0;
pLayerCfg.Backcolor.Red = 0; if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) {
if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) Error_Handler();
{ }
Error_Handler(); pLayerCfg1.WindowX0 = 0;
} pLayerCfg1.WindowX1 = 480;
pLayerCfg1.WindowX0 = 0; pLayerCfg1.WindowY0 = 0;
pLayerCfg1.WindowX1 = 480; pLayerCfg1.WindowY1 = 272;
pLayerCfg1.WindowY0 = 0; pLayerCfg1.PixelFormat = LTDC_PIXEL_FORMAT_ARGB1555;
pLayerCfg1.WindowY1 = 272; pLayerCfg1.Alpha = 255;
pLayerCfg1.PixelFormat = LTDC_PIXEL_FORMAT_ARGB1555; pLayerCfg1.Alpha0 = 0;
pLayerCfg1.Alpha = 255; pLayerCfg1.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
pLayerCfg1.Alpha0 = 0; pLayerCfg1.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
pLayerCfg1.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; pLayerCfg1.FBStartAdress = 0;
pLayerCfg1.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; pLayerCfg1.ImageWidth = 480;
pLayerCfg1.FBStartAdress = 0; pLayerCfg1.ImageHeight = 272;
pLayerCfg1.ImageWidth = 480; pLayerCfg1.Backcolor.Blue = 0;
pLayerCfg1.ImageHeight = 272; pLayerCfg1.Backcolor.Green = 0;
pLayerCfg1.Backcolor.Blue = 0; pLayerCfg1.Backcolor.Red = 0;
pLayerCfg1.Backcolor.Green = 0; if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg1, 1) != HAL_OK) {
pLayerCfg1.Backcolor.Red = 0; Error_Handler();
if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg1, 1) != HAL_OK) }
{ /* USER CODE BEGIN LTDC_Init 2 */
Error_Handler();
}
/* USER CODE BEGIN LTDC_Init 2 */
/* USER CODE END LTDC_Init 2 */ /* USER CODE END LTDC_Init 2 */
} }
/** /**
* @brief QUADSPI Initialization Function * @brief QUADSPI Initialization Function
* @param None * @param None
* @retval None * @retval None
*/ */
static void MX_QUADSPI_Init(void) static void MX_QUADSPI_Init(void) {
{
/* USER CODE BEGIN QUADSPI_Init 0 */ /* USER CODE BEGIN QUADSPI_Init 0 */
/* USER CODE END QUADSPI_Init 0 */ /* USER CODE END QUADSPI_Init 0 */
/* USER CODE BEGIN QUADSPI_Init 1 */ /* USER CODE BEGIN QUADSPI_Init 1 */
/* USER CODE END QUADSPI_Init 1 */ /* USER CODE END QUADSPI_Init 1 */
/* QUADSPI parameter configuration*/ /* QUADSPI parameter configuration*/
hqspi.Instance = QUADSPI; hqspi.Instance = QUADSPI;
hqspi.Init.ClockPrescaler = 1; hqspi.Init.ClockPrescaler = 1;
hqspi.Init.FifoThreshold = 4; hqspi.Init.FifoThreshold = 4;
hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_HALFCYCLE; hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_HALFCYCLE;
hqspi.Init.FlashSize = 16; hqspi.Init.FlashSize = 16;
hqspi.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_6_CYCLE; hqspi.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_6_CYCLE;
hqspi.Init.ClockMode = QSPI_CLOCK_MODE_0; hqspi.Init.ClockMode = QSPI_CLOCK_MODE_0;
hqspi.Init.FlashID = QSPI_FLASH_ID_1; hqspi.Init.FlashID = QSPI_FLASH_ID_1;
hqspi.Init.DualFlash = QSPI_DUALFLASH_DISABLE; hqspi.Init.DualFlash = QSPI_DUALFLASH_DISABLE;
if (HAL_QSPI_Init(&hqspi) != HAL_OK) if (HAL_QSPI_Init(&hqspi) != HAL_OK) {
{ Error_Handler();
Error_Handler(); }
} /* USER CODE BEGIN QUADSPI_Init 2 */
/* USER CODE BEGIN QUADSPI_Init 2 */
/* USER CODE END QUADSPI_Init 2 */ /* USER CODE END QUADSPI_Init 2 */
} }
/** /**
* @brief USART1 Initialization Function * @brief USART1 Initialization Function
* @param None * @param None
* @retval None * @retval None
*/ */
static void MX_USART1_UART_Init(void) static void MX_USART1_UART_Init(void) {
{
/* USER CODE BEGIN USART1_Init 0 */ /* USER CODE BEGIN USART1_Init 0 */
/* USER CODE END USART1_Init 0 */ /* USER CODE END USART1_Init 0 */
/* USER CODE BEGIN USART1_Init 1 */ /* USER CODE BEGIN USART1_Init 1 */
/* USER CODE END USART1_Init 1 */ /* USER CODE END USART1_Init 1 */
huart1.Instance = USART1; huart1.Instance = USART1;
huart1.Init.BaudRate = 115200; huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16; huart1.Init.OverSampling = UART_OVERSAMPLING_16;
huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
if (HAL_UART_Init(&huart1) != HAL_OK) if (HAL_UART_Init(&huart1) != HAL_OK) {
{ Error_Handler();
Error_Handler(); }
} /* USER CODE BEGIN USART1_Init 2 */
/* USER CODE BEGIN USART1_Init 2 */
/* USER CODE END USART1_Init 2 */ /* USER CODE END USART1_Init 2 */
} }
/* FMC initialization function */ /* FMC initialization function */
static void MX_FMC_Init(void) static void MX_FMC_Init(void) {
{
/* USER CODE BEGIN FMC_Init 0 */ /* USER CODE BEGIN FMC_Init 0 */
/* USER CODE END FMC_Init 0 */ /* USER CODE END FMC_Init 0 */
FMC_SDRAM_TimingTypeDef SdramTiming = {0}; FMC_SDRAM_TimingTypeDef SdramTiming = {0};
/* USER CODE BEGIN FMC_Init 1 */ /* USER CODE BEGIN FMC_Init 1 */
/* USER CODE END FMC_Init 1 */ /* USER CODE END FMC_Init 1 */
/** Perform the SDRAM1 memory initialization sequence /** Perform the SDRAM1 memory initialization sequence
*/ */
hsdram1.Instance = FMC_SDRAM_DEVICE; hsdram1.Instance = FMC_SDRAM_DEVICE;
/* hsdram1.Init */ /* hsdram1.Init */
hsdram1.Init.SDBank = FMC_SDRAM_BANK1; hsdram1.Init.SDBank = FMC_SDRAM_BANK1;
hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8;
hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12;
hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16;
hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4;
hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_1; hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_1;
hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE;
hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_DISABLE; hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_DISABLE;
hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE;
hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_0; hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_0;
/* SdramTiming */ /* SdramTiming */
SdramTiming.LoadToActiveDelay = 16; SdramTiming.LoadToActiveDelay = 16;
SdramTiming.ExitSelfRefreshDelay = 16; SdramTiming.ExitSelfRefreshDelay = 16;
SdramTiming.SelfRefreshTime = 16; SdramTiming.SelfRefreshTime = 16;
SdramTiming.RowCycleDelay = 16; SdramTiming.RowCycleDelay = 16;
SdramTiming.WriteRecoveryTime = 16; SdramTiming.WriteRecoveryTime = 16;
SdramTiming.RPDelay = 16; SdramTiming.RPDelay = 16;
SdramTiming.RCDDelay = 16; SdramTiming.RCDDelay = 16;
if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) {
{ Error_Handler();
Error_Handler( ); }
}
/* USER CODE BEGIN FMC_Init 2 */ /* USER CODE BEGIN FMC_Init 2 */
/* USER CODE END FMC_Init 2 */ /* USER CODE END FMC_Init 2 */
} }
/** /**
* @brief GPIO Initialization Function * @brief GPIO Initialization Function
* @param None * @param None
* @retval None * @retval None
*/ */
static void MX_GPIO_Init(void) static void MX_GPIO_Init(void) {
{ GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitTypeDef GPIO_InitStruct = {0}; /* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE BEGIN MX_GPIO_Init_1 */ /* USER CODE END MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */
/* GPIO Ports Clock Enable */ /* GPIO Ports Clock Enable */
__HAL_RCC_GPIOE_CLK_ENABLE(); __HAL_RCC_GPIOE_CLK_ENABLE();
__HAL_RCC_GPIOG_CLK_ENABLE(); __HAL_RCC_GPIOG_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOJ_CLK_ENABLE(); __HAL_RCC_GPIOJ_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOK_CLK_ENABLE(); __HAL_RCC_GPIOK_CLK_ENABLE();
__HAL_RCC_GPIOF_CLK_ENABLE(); __HAL_RCC_GPIOF_CLK_ENABLE();
__HAL_RCC_GPIOI_CLK_ENABLE(); __HAL_RCC_GPIOI_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE();
/*Configure GPIO pin Output Level */ /*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(LCD_BL_CTRL_GPIO_Port, LCD_BL_CTRL_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(LCD_BL_CTRL_GPIO_Port, LCD_BL_CTRL_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */ /*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOI, LED_Pin|LCD_DISP_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOI, LED_Pin | LCD_DISP_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin : LCD_BL_CTRL_Pin */ /*Configure GPIO pin : LCD_BL_CTRL_Pin */
GPIO_InitStruct.Pin = LCD_BL_CTRL_Pin; GPIO_InitStruct.Pin = LCD_BL_CTRL_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LCD_BL_CTRL_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(LCD_BL_CTRL_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : LED_Pin LCD_DISP_Pin */ /*Configure GPIO pins : LED_Pin LCD_DISP_Pin */
GPIO_InitStruct.Pin = LED_Pin|LCD_DISP_Pin; GPIO_InitStruct.Pin = LED_Pin | LCD_DISP_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOI, &GPIO_InitStruct); HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);
/*Configure GPIO pin : BUTTON_Pin */ /*Configure GPIO pin : BUTTON_Pin */
GPIO_InitStruct.Pin = BUTTON_Pin; GPIO_InitStruct.Pin = BUTTON_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(BUTTON_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(BUTTON_GPIO_Port, &GPIO_InitStruct);
/* USER CODE BEGIN MX_GPIO_Init_2 */ /* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */ /* USER CODE END MX_GPIO_Init_2 */
} }
/* USER CODE BEGIN 4 */ /* USER CODE BEGIN 4 */
/* USER CODE END 4 */ /* USER CODE END 4 */
/** /**
* @brief This function is executed in case of error occurrence. * @brief This function is executed in case of error occurrence.
* @retval None * @retval None
*/ */
void Error_Handler(void) void Error_Handler(void) {
{ /* USER CODE BEGIN Error_Handler_Debug */
/* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */
/* User can add his own implementation to report the HAL error return state */ __disable_irq();
__disable_irq(); while (1) {
while (1) }
{ /* USER CODE END Error_Handler_Debug */
}
/* USER CODE END Error_Handler_Debug */
} }
#ifdef USE_FULL_ASSERT #ifdef USE_FULL_ASSERT