Initial commit
This commit is contained in:
		
							
								
								
									
										80
									
								
								ide-touchgfx-gen/Core/Src/freertos.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								ide-touchgfx-gen/Core/Src/freertos.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
| /* USER CODE BEGIN Header */ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * File Name          : freertos.c | ||||
|   * Description        : Code for freertos applications | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2020 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under Ultimate Liberty license | ||||
|   * SLA0044, the "License"; You may not use this file except in compliance with | ||||
|   * the License. You may obtain a copy of the License at: | ||||
|   *                             www.st.com/SLA0044 | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
| /* USER CODE END Header */ | ||||
|  | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| #include "FreeRTOS.h" | ||||
| #include "task.h" | ||||
| #include "main.h" | ||||
|  | ||||
| /* Private includes ----------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN Includes */ | ||||
|  | ||||
| /* USER CODE END Includes */ | ||||
|  | ||||
| /* Private typedef -----------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PTD */ | ||||
|  | ||||
| /* USER CODE END PTD */ | ||||
|  | ||||
| /* Private define ------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PD */ | ||||
|  | ||||
| /* USER CODE END PD */ | ||||
|  | ||||
| /* Private macro -------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PM */ | ||||
|  | ||||
| /* USER CODE END PM */ | ||||
|  | ||||
| /* Private variables ---------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN Variables */ | ||||
|  | ||||
| /* USER CODE END Variables */ | ||||
|  | ||||
| /* Private function prototypes -----------------------------------------------*/ | ||||
| /* USER CODE BEGIN FunctionPrototypes */ | ||||
| extern portBASE_TYPE IdleTaskHook(void* p);   | ||||
| /* USER CODE END FunctionPrototypes */ | ||||
|  | ||||
| /* Hook prototypes */ | ||||
| void vApplicationIdleHook(void); | ||||
|  | ||||
| /* USER CODE BEGIN 2 */ | ||||
| void vApplicationIdleHook( void ) | ||||
| { | ||||
|    /* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set | ||||
|    to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle | ||||
|    task. It is essential that code added to this hook function never attempts | ||||
|    to block in any way (for example, call xQueueReceive() with a block time | ||||
|    specified, or call vTaskDelay()). If the application makes use of the | ||||
|    vTaskDelete() API function (as this demo application does) then it is also | ||||
|    important that vApplicationIdleHook() is permitted to return to its calling | ||||
|    function, because it is the responsibility of the idle task to clean up | ||||
|    memory allocated by the kernel to any task that has since been deleted. */ | ||||
|    vTaskSetApplicationTaskTag(NULL, IdleTaskHook); | ||||
| } | ||||
| /* USER CODE END 2 */ | ||||
|  | ||||
| /* Private application code --------------------------------------------------*/ | ||||
| /* USER CODE BEGIN Application */ | ||||
|  | ||||
| /* USER CODE END Application */ | ||||
|  | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
							
								
								
									
										735
									
								
								ide-touchgfx-gen/Core/Src/main.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										735
									
								
								ide-touchgfx-gen/Core/Src/main.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,735 @@ | ||||
| /* USER CODE BEGIN Header */ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file           : main.c | ||||
|   * @brief          : Main program body | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2020 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under Ultimate Liberty license | ||||
|   * SLA0044, the "License"; You may not use this file except in compliance with | ||||
|   * the License. You may obtain a copy of the License at: | ||||
|   *                             www.st.com/SLA0044 | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
| /* USER CODE END Header */ | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| #include "main.h" | ||||
| #include "cmsis_os.h" | ||||
| #include "app_touchgfx.h" | ||||
|  | ||||
| /* Private includes ----------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN Includes */ | ||||
| #include <stm32746g_discovery_qspi.h> | ||||
| /* USER CODE END Includes */ | ||||
|  | ||||
| /* Private typedef -----------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PTD */ | ||||
|  | ||||
| /* USER CODE END PTD */ | ||||
|  | ||||
| /* Private define ------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PD */ | ||||
|  | ||||
| #define REFRESH_COUNT        1835 | ||||
|  | ||||
| #define SDRAM_TIMEOUT                            ((uint32_t)0xFFFF) | ||||
| #define SDRAM_MODEREG_BURST_LENGTH_1             ((uint16_t)0x0000) | ||||
| #define SDRAM_MODEREG_BURST_LENGTH_2             ((uint16_t)0x0001) | ||||
| #define SDRAM_MODEREG_BURST_LENGTH_4             ((uint16_t)0x0002) | ||||
| #define SDRAM_MODEREG_BURST_LENGTH_8             ((uint16_t)0x0004) | ||||
| #define SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL      ((uint16_t)0x0000) | ||||
| #define SDRAM_MODEREG_BURST_TYPE_INTERLEAVED     ((uint16_t)0x0008) | ||||
| #define SDRAM_MODEREG_CAS_LATENCY_2              ((uint16_t)0x0020) | ||||
| #define SDRAM_MODEREG_CAS_LATENCY_3              ((uint16_t)0x0030) | ||||
| #define SDRAM_MODEREG_OPERATING_MODE_STANDARD    ((uint16_t)0x0000) | ||||
| #define SDRAM_MODEREG_WRITEBURST_MODE_PROGRAMMED ((uint16_t)0x0000) | ||||
| #define SDRAM_MODEREG_WRITEBURST_MODE_SINGLE     ((uint16_t)0x0200) | ||||
|  | ||||
| /* USER CODE END PD */ | ||||
|  | ||||
| /* Private macro -------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PM */ | ||||
|  | ||||
| /* USER CODE END PM */ | ||||
|  | ||||
| /* Private variables ---------------------------------------------------------*/ | ||||
|  | ||||
| CRC_HandleTypeDef hcrc; | ||||
|  | ||||
| DMA2D_HandleTypeDef hdma2d; | ||||
|  | ||||
| I2C_HandleTypeDef hi2c3; | ||||
|  | ||||
| LTDC_HandleTypeDef hltdc; | ||||
|  | ||||
| QSPI_HandleTypeDef hqspi; | ||||
|  | ||||
| SDRAM_HandleTypeDef hsdram1; | ||||
|  | ||||
| /* Definitions for TouchGFXTask */ | ||||
| osThreadId_t TouchGFXTaskHandle; | ||||
| const osThreadAttr_t TouchGFXTask_attributes = { | ||||
|   .name = "TouchGFXTask", | ||||
|   .priority = (osPriority_t) osPriorityNormal, | ||||
|   .stack_size = 4096 * 4 | ||||
| }; | ||||
| /* USER CODE BEGIN PV */ | ||||
| static FMC_SDRAM_CommandTypeDef Command; | ||||
| /* USER CODE END PV */ | ||||
|  | ||||
| /* Private function prototypes -----------------------------------------------*/ | ||||
| void SystemClock_Config(void); | ||||
| static void MPU_Config(void); | ||||
| static void MX_GPIO_Init(void); | ||||
| static void MX_CRC_Init(void); | ||||
| static void MX_DMA2D_Init(void); | ||||
| static void MX_FMC_Init(void); | ||||
| static void MX_I2C3_Init(void); | ||||
| static void MX_LTDC_Init(void); | ||||
| static void MX_QUADSPI_Init(void); | ||||
| void TouchGFX_Task(void *argument); | ||||
|  | ||||
| /* USER CODE BEGIN PFP */ | ||||
|  | ||||
| /* USER CODE END PFP */ | ||||
|  | ||||
| /* Private user code ---------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN 0 */ | ||||
|  | ||||
| /* USER CODE END 0 */ | ||||
|  | ||||
| /** | ||||
|   * @brief  The application entry point. | ||||
|   * @retval int | ||||
|   */ | ||||
| int main(void) | ||||
| { | ||||
|   /* USER CODE BEGIN 1 */ | ||||
|  | ||||
|   /* USER CODE END 1 */ | ||||
|  | ||||
|   /* MPU Configuration--------------------------------------------------------*/ | ||||
|   MPU_Config(); | ||||
|  | ||||
|   /* Enable I-Cache---------------------------------------------------------*/ | ||||
|   SCB_EnableICache(); | ||||
|  | ||||
|   /* Enable D-Cache---------------------------------------------------------*/ | ||||
|   SCB_EnableDCache(); | ||||
|  | ||||
|   /* MCU Configuration--------------------------------------------------------*/ | ||||
|  | ||||
|   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ | ||||
|   HAL_Init(); | ||||
|  | ||||
|   /* USER CODE BEGIN Init */ | ||||
|  | ||||
|   /* USER CODE END Init */ | ||||
|  | ||||
|   /* Configure the system clock */ | ||||
|   SystemClock_Config(); | ||||
|  | ||||
|   /* USER CODE BEGIN SysInit */ | ||||
|  | ||||
|   /* USER CODE END SysInit */ | ||||
|  | ||||
|   /* Initialize all configured peripherals */ | ||||
|   MX_GPIO_Init(); | ||||
|   MX_CRC_Init(); | ||||
|   MX_DMA2D_Init(); | ||||
|   MX_FMC_Init(); | ||||
|   MX_I2C3_Init(); | ||||
|   MX_LTDC_Init(); | ||||
|   MX_QUADSPI_Init(); | ||||
|   MX_TouchGFX_Init(); | ||||
|   /* USER CODE BEGIN 2 */ | ||||
|  | ||||
|   /* USER CODE END 2 */ | ||||
|  | ||||
|   /* Init scheduler */ | ||||
|   osKernelInitialize(); | ||||
|  | ||||
|   /* USER CODE BEGIN RTOS_MUTEX */ | ||||
|   /* add mutexes, ... */ | ||||
|   /* USER CODE END RTOS_MUTEX */ | ||||
|  | ||||
|   /* USER CODE BEGIN RTOS_SEMAPHORES */ | ||||
|   /* add semaphores, ... */ | ||||
|   /* USER CODE END RTOS_SEMAPHORES */ | ||||
|  | ||||
|   /* USER CODE BEGIN RTOS_TIMERS */ | ||||
|   /* start timers, add new ones, ... */ | ||||
|   /* USER CODE END RTOS_TIMERS */ | ||||
|  | ||||
|   /* USER CODE BEGIN RTOS_QUEUES */ | ||||
|   /* add queues, ... */ | ||||
|   /* USER CODE END RTOS_QUEUES */ | ||||
|  | ||||
|   /* Create the thread(s) */ | ||||
|   /* creation of TouchGFXTask */ | ||||
|   TouchGFXTaskHandle = osThreadNew(TouchGFX_Task, NULL, &TouchGFXTask_attributes); | ||||
|  | ||||
|   /* USER CODE BEGIN RTOS_THREADS */ | ||||
|   /* add threads, ... */ | ||||
|   /* USER CODE END RTOS_THREADS */ | ||||
|  | ||||
|   /* USER CODE BEGIN RTOS_EVENTS */ | ||||
|   /* add events, ... */ | ||||
|   /* USER CODE END RTOS_EVENTS */ | ||||
|  | ||||
|   /* Start scheduler */ | ||||
|   osKernelStart(); | ||||
|  | ||||
|   /* We should never get here as control is now taken by the scheduler */ | ||||
|   /* Infinite loop */ | ||||
|   /* USER CODE BEGIN WHILE */ | ||||
|   while (1) | ||||
|   { | ||||
|     /* USER CODE END WHILE */ | ||||
|  | ||||
|     /* USER CODE BEGIN 3 */ | ||||
|   } | ||||
|   /* USER CODE END 3 */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief System Clock Configuration | ||||
|   * @retval None | ||||
|   */ | ||||
| void SystemClock_Config(void) | ||||
| { | ||||
|   RCC_OscInitTypeDef RCC_OscInitStruct = {0}; | ||||
|   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; | ||||
|   RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; | ||||
|  | ||||
|   /** Configure the main internal regulator output voltage | ||||
|   */ | ||||
|   __HAL_RCC_PWR_CLK_ENABLE(); | ||||
|   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); | ||||
|   /** Initializes the RCC Oscillators according to the specified parameters | ||||
|   * in the RCC_OscInitTypeDef structure. | ||||
|   */ | ||||
|   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; | ||||
|   RCC_OscInitStruct.HSEState = RCC_HSE_ON; | ||||
|   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; | ||||
|   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; | ||||
|   RCC_OscInitStruct.PLL.PLLM = 25; | ||||
|   RCC_OscInitStruct.PLL.PLLN = 400; | ||||
|   RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; | ||||
|   RCC_OscInitStruct.PLL.PLLQ = 2; | ||||
|   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   /** Activate the Over-Drive mode | ||||
|   */ | ||||
|   if (HAL_PWREx_EnableOverDrive() != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   /** Initializes the CPU, AHB and APB buses clocks | ||||
|   */ | ||||
|   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK | ||||
|                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; | ||||
|   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; | ||||
|   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; | ||||
|   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; | ||||
|   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; | ||||
|  | ||||
|   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_6) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC|RCC_PERIPHCLK_I2C3; | ||||
|   PeriphClkInitStruct.PLLSAI.PLLSAIN = 384; | ||||
|   PeriphClkInitStruct.PLLSAI.PLLSAIR = 5; | ||||
|   PeriphClkInitStruct.PLLSAI.PLLSAIQ = 2; | ||||
|   PeriphClkInitStruct.PLLSAI.PLLSAIP = RCC_PLLSAIP_DIV2; | ||||
|   PeriphClkInitStruct.PLLSAIDivQ = 1; | ||||
|   PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_8; | ||||
|   PeriphClkInitStruct.I2c3ClockSelection = RCC_I2C3CLKSOURCE_PCLK1; | ||||
|   if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief CRC Initialization Function | ||||
|   * @param None | ||||
|   * @retval None | ||||
|   */ | ||||
| static void MX_CRC_Init(void) | ||||
| { | ||||
|  | ||||
|   /* USER CODE BEGIN CRC_Init 0 */ | ||||
|  | ||||
|   /* USER CODE END CRC_Init 0 */ | ||||
|  | ||||
|   /* USER CODE BEGIN CRC_Init 1 */ | ||||
|  | ||||
|   /* USER CODE END CRC_Init 1 */ | ||||
|   hcrc.Instance = CRC; | ||||
|   hcrc.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_ENABLE; | ||||
|   hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_ENABLE; | ||||
|   hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE; | ||||
|   hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE; | ||||
|   hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_BYTES; | ||||
|   if (HAL_CRC_Init(&hcrc) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   /* USER CODE BEGIN CRC_Init 2 */ | ||||
|  | ||||
|   /* USER CODE END CRC_Init 2 */ | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief DMA2D Initialization Function | ||||
|   * @param None | ||||
|   * @retval None | ||||
|   */ | ||||
| static void MX_DMA2D_Init(void) | ||||
| { | ||||
|  | ||||
|   /* USER CODE BEGIN DMA2D_Init 0 */ | ||||
|  | ||||
|   /* USER CODE END DMA2D_Init 0 */ | ||||
|  | ||||
|   /* USER CODE BEGIN DMA2D_Init 1 */ | ||||
|  | ||||
|   /* USER CODE END DMA2D_Init 1 */ | ||||
|   hdma2d.Instance = DMA2D; | ||||
|   hdma2d.Init.Mode = DMA2D_M2M; | ||||
|   hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; | ||||
|   hdma2d.Init.OutputOffset = 0; | ||||
|   hdma2d.LayerCfg[1].InputOffset = 0; | ||||
|   hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; | ||||
|   hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; | ||||
|   hdma2d.LayerCfg[1].InputAlpha = 0; | ||||
|   if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   /* USER CODE BEGIN DMA2D_Init 2 */ | ||||
|  | ||||
|   /* USER CODE END DMA2D_Init 2 */ | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief I2C3 Initialization Function | ||||
|   * @param None | ||||
|   * @retval None | ||||
|   */ | ||||
| static void MX_I2C3_Init(void) | ||||
| { | ||||
|  | ||||
|   /* USER CODE BEGIN I2C3_Init 0 */ | ||||
|  | ||||
|   /* USER CODE END I2C3_Init 0 */ | ||||
|  | ||||
|   /* USER CODE BEGIN I2C3_Init 1 */ | ||||
|  | ||||
|   /* USER CODE END I2C3_Init 1 */ | ||||
|   hi2c3.Instance = I2C3; | ||||
|   hi2c3.Init.Timing = 0x00C0EAFF; | ||||
|   hi2c3.Init.OwnAddress1 = 0; | ||||
|   hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; | ||||
|   hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; | ||||
|   hi2c3.Init.OwnAddress2 = 0; | ||||
|   hi2c3.Init.OwnAddress2Masks = I2C_OA2_NOMASK; | ||||
|   hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; | ||||
|   hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; | ||||
|   if (HAL_I2C_Init(&hi2c3) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   /** Configure Analogue filter | ||||
|   */ | ||||
|   if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   /** Configure Digital filter | ||||
|   */ | ||||
|   if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   /* USER CODE BEGIN I2C3_Init 2 */ | ||||
|  | ||||
|   /* USER CODE END I2C3_Init 2 */ | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief LTDC Initialization Function | ||||
|   * @param None | ||||
|   * @retval None | ||||
|   */ | ||||
| static 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_CA; | ||||
|   pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA; | ||||
|   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 */ | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief QUADSPI Initialization Function | ||||
|   * @param None | ||||
|   * @retval None | ||||
|   */ | ||||
| static void MX_QUADSPI_Init(void) | ||||
| { | ||||
|  | ||||
|   /* USER CODE BEGIN QUADSPI_Init 0 */ | ||||
|  | ||||
|   /* USER CODE END QUADSPI_Init 0 */ | ||||
|  | ||||
|   /* USER CODE BEGIN QUADSPI_Init 1 */ | ||||
|  | ||||
|   /* USER CODE END QUADSPI_Init 1 */ | ||||
|   /* QUADSPI parameter configuration*/ | ||||
|   hqspi.Instance = QUADSPI; | ||||
|   hqspi.Init.ClockPrescaler = 1; | ||||
|   hqspi.Init.FifoThreshold = 4; | ||||
|   hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_HALFCYCLE; | ||||
|   hqspi.Init.FlashSize = 24; | ||||
|   hqspi.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_6_CYCLE; | ||||
|   hqspi.Init.ClockMode = QSPI_CLOCK_MODE_0; | ||||
|   hqspi.Init.FlashID = QSPI_FLASH_ID_1; | ||||
|   hqspi.Init.DualFlash = QSPI_DUALFLASH_DISABLE; | ||||
|   if (HAL_QSPI_Init(&hqspi) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   /* USER CODE BEGIN QUADSPI_Init 2 */ | ||||
|   BSP_QSPI_Init(); | ||||
|  | ||||
|   BSP_QSPI_MemoryMappedMode(); | ||||
|   HAL_NVIC_DisableIRQ(QUADSPI_IRQn); | ||||
|   /* USER CODE END QUADSPI_Init 2 */ | ||||
|  | ||||
| } | ||||
|  | ||||
| /* FMC initialization function */ | ||||
| static void MX_FMC_Init(void) | ||||
| { | ||||
|  | ||||
|   /* USER CODE BEGIN FMC_Init 0 */ | ||||
|  | ||||
|   /* USER CODE END FMC_Init 0 */ | ||||
|  | ||||
|   FMC_SDRAM_TimingTypeDef SdramTiming = {0}; | ||||
|  | ||||
|   /* USER CODE BEGIN FMC_Init 1 */ | ||||
|  | ||||
|   /* USER CODE END FMC_Init 1 */ | ||||
|  | ||||
|   /** Perform the SDRAM1 memory initialization sequence | ||||
|   */ | ||||
|   hsdram1.Instance = FMC_SDRAM_DEVICE; | ||||
|   /* hsdram1.Init */ | ||||
|   hsdram1.Init.SDBank = FMC_SDRAM_BANK1; | ||||
|   hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; | ||||
|   hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; | ||||
|   hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; | ||||
|   hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; | ||||
|   hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; | ||||
|   hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; | ||||
|   hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; | ||||
|   hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_ENABLE; | ||||
|   hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_0; | ||||
|   /* SdramTiming */ | ||||
|   SdramTiming.LoadToActiveDelay = 2; | ||||
|   SdramTiming.ExitSelfRefreshDelay = 7; | ||||
|   SdramTiming.SelfRefreshTime = 4; | ||||
|   SdramTiming.RowCycleDelay = 7; | ||||
|   SdramTiming.WriteRecoveryTime = 3; | ||||
|   SdramTiming.RPDelay = 2; | ||||
|   SdramTiming.RCDDelay = 2; | ||||
|  | ||||
|   if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler( ); | ||||
|   } | ||||
|  | ||||
|   /* USER CODE BEGIN FMC_Init 2 */ | ||||
|   __IO uint32_t tmpmrd = 0; | ||||
|  | ||||
|     /* Step 1: Configure a clock configuration enable command */ | ||||
|     Command.CommandMode            = FMC_SDRAM_CMD_CLK_ENABLE; | ||||
|     Command.CommandTarget          =  FMC_SDRAM_CMD_TARGET_BANK1; | ||||
|     Command.AutoRefreshNumber      = 1; | ||||
|     Command.ModeRegisterDefinition = 0; | ||||
|  | ||||
|     /* Send the command */ | ||||
|     HAL_SDRAM_SendCommand(&hsdram1, &Command, SDRAM_TIMEOUT); | ||||
|  | ||||
|     /* Step 2: Insert 100 us minimum delay */ | ||||
|     /* Inserted delay is equal to 1 ms due to systick time base unit (ms) */ | ||||
|     HAL_Delay(1); | ||||
|  | ||||
|     /* Step 3: Configure a PALL (precharge all) command */ | ||||
|     Command.CommandMode            = FMC_SDRAM_CMD_PALL; | ||||
|     Command.CommandTarget          = FMC_SDRAM_CMD_TARGET_BANK1; | ||||
|     Command.AutoRefreshNumber      = 1; | ||||
|     Command.ModeRegisterDefinition = 0; | ||||
|  | ||||
|     /* Send the command */ | ||||
|     HAL_SDRAM_SendCommand(&hsdram1, &Command, SDRAM_TIMEOUT); | ||||
|  | ||||
|     /* Step 4: Configure an Auto Refresh command */ | ||||
|     Command.CommandMode            = FMC_SDRAM_CMD_AUTOREFRESH_MODE; | ||||
|     Command.CommandTarget          = FMC_SDRAM_CMD_TARGET_BANK1; | ||||
|     Command.AutoRefreshNumber      = 8; | ||||
|     Command.ModeRegisterDefinition = 0; | ||||
|  | ||||
|     /* Send the command */ | ||||
|     HAL_SDRAM_SendCommand(&hsdram1, &Command, SDRAM_TIMEOUT); | ||||
|  | ||||
|     /* Step 5: Program the external memory mode register */ | ||||
|     tmpmrd = (uint32_t)SDRAM_MODEREG_BURST_LENGTH_1 | \ | ||||
|              SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL    | \ | ||||
|              SDRAM_MODEREG_CAS_LATENCY_3            | \ | ||||
|              SDRAM_MODEREG_OPERATING_MODE_STANDARD  | \ | ||||
|              SDRAM_MODEREG_WRITEBURST_MODE_SINGLE; | ||||
|  | ||||
|     Command.CommandMode            = FMC_SDRAM_CMD_LOAD_MODE; | ||||
|     Command.CommandTarget          = FMC_SDRAM_CMD_TARGET_BANK1; | ||||
|     Command.AutoRefreshNumber      = 1; | ||||
|     Command.ModeRegisterDefinition = tmpmrd; | ||||
|  | ||||
|     /* Send the command */ | ||||
|     HAL_SDRAM_SendCommand(&hsdram1, &Command, SDRAM_TIMEOUT); | ||||
|  | ||||
|     /* Step 6: Set the refresh rate counter */ | ||||
|     /* Set the device refresh rate */ | ||||
|     HAL_SDRAM_ProgramRefreshRate(&hsdram1, REFRESH_COUNT); | ||||
|      | ||||
|     //Deactivate speculative/cache access to first FMC Bank to save FMC bandwidth | ||||
|     FMC_Bank1->BTCR[0] = 0x000030D2; | ||||
|   /* USER CODE END FMC_Init 2 */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief GPIO Initialization Function | ||||
|   * @param None | ||||
|   * @retval None | ||||
|   */ | ||||
| static void MX_GPIO_Init(void) | ||||
| { | ||||
|   GPIO_InitTypeDef GPIO_InitStruct = {0}; | ||||
|  | ||||
|   /* GPIO Ports Clock Enable */ | ||||
|   __HAL_RCC_GPIOE_CLK_ENABLE(); | ||||
|   __HAL_RCC_GPIOA_CLK_ENABLE(); | ||||
|   __HAL_RCC_GPIOB_CLK_ENABLE(); | ||||
|   __HAL_RCC_GPIOG_CLK_ENABLE(); | ||||
|   __HAL_RCC_GPIOJ_CLK_ENABLE(); | ||||
|   __HAL_RCC_GPIOD_CLK_ENABLE(); | ||||
|   __HAL_RCC_GPIOK_CLK_ENABLE(); | ||||
|   __HAL_RCC_GPIOF_CLK_ENABLE(); | ||||
|   __HAL_RCC_GPIOI_CLK_ENABLE(); | ||||
|   __HAL_RCC_GPIOH_CLK_ENABLE(); | ||||
|   __HAL_RCC_GPIOC_CLK_ENABLE(); | ||||
|  | ||||
|   /*Configure GPIO pin Output Level */ | ||||
|   HAL_GPIO_WritePin(LCD_BL_CTRL_GPIO_Port, LCD_BL_CTRL_Pin, GPIO_PIN_SET); | ||||
|  | ||||
|   /*Configure GPIO pin Output Level */ | ||||
|   HAL_GPIO_WritePin(LCD_DISP_GPIO_Port, LCD_DISP_Pin, GPIO_PIN_SET); | ||||
|  | ||||
|   /*Configure GPIO pin : LCD_BL_CTRL_Pin */ | ||||
|   GPIO_InitStruct.Pin = LCD_BL_CTRL_Pin; | ||||
|   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; | ||||
|   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; | ||||
|   HAL_GPIO_Init(LCD_BL_CTRL_GPIO_Port, &GPIO_InitStruct); | ||||
|  | ||||
|   /*Configure GPIO pin : LCD_DISP_Pin */ | ||||
|   GPIO_InitStruct.Pin = LCD_DISP_Pin; | ||||
|   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; | ||||
|   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; | ||||
|   HAL_GPIO_Init(LCD_DISP_GPIO_Port, &GPIO_InitStruct); | ||||
|  | ||||
| } | ||||
|  | ||||
| /* USER CODE BEGIN 4 */ | ||||
|  | ||||
| /* USER CODE END 4 */ | ||||
|  | ||||
| /* USER CODE BEGIN Header_TouchGFX_Task */ | ||||
| /** | ||||
|   * @brief  Function implementing the TouchGFXTask thread. | ||||
|   * @param  argument: Not used | ||||
|   * @retval None | ||||
|   */ | ||||
| /* USER CODE END Header_TouchGFX_Task */ | ||||
| __weak void TouchGFX_Task(void *argument) | ||||
| { | ||||
|   /* USER CODE BEGIN 5 */ | ||||
|   MX_TouchGFX_Process(); | ||||
|   /* Infinite loop */ | ||||
|   for(;;) | ||||
|   { | ||||
|     osDelay(1); | ||||
|   } | ||||
|   /* USER CODE END 5 */ | ||||
| } | ||||
|  | ||||
| /* MPU Configuration */ | ||||
|  | ||||
| void MPU_Config(void) | ||||
| { | ||||
|   MPU_Region_InitTypeDef MPU_InitStruct = {0}; | ||||
|  | ||||
|   /* Disables the MPU */ | ||||
|   HAL_MPU_Disable(); | ||||
|   /** Initializes and configures the Region and the memory to be protected | ||||
|   */ | ||||
|   MPU_InitStruct.Enable = MPU_REGION_ENABLE; | ||||
|   MPU_InitStruct.Number = MPU_REGION_NUMBER0; | ||||
|   MPU_InitStruct.BaseAddress = 0x90000000; | ||||
|   MPU_InitStruct.Size = MPU_REGION_SIZE_256MB; | ||||
|   MPU_InitStruct.SubRegionDisable = 0x0; | ||||
|   MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; | ||||
|   MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; | ||||
|   MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; | ||||
|   MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; | ||||
|   MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; | ||||
|   MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; | ||||
|  | ||||
|   HAL_MPU_ConfigRegion(&MPU_InitStruct); | ||||
|   /** Initializes and configures the Region and the memory to be protected | ||||
|   */ | ||||
|   MPU_InitStruct.Enable = MPU_REGION_ENABLE; | ||||
|   MPU_InitStruct.Number = MPU_REGION_NUMBER1; | ||||
|   MPU_InitStruct.BaseAddress = 0x90000000; | ||||
|   MPU_InitStruct.Size = MPU_REGION_SIZE_16MB; | ||||
|   MPU_InitStruct.SubRegionDisable = 0x0; | ||||
|   MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; | ||||
|   MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; | ||||
|   MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; | ||||
|   MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; | ||||
|   MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE; | ||||
|   MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; | ||||
|  | ||||
|   HAL_MPU_ConfigRegion(&MPU_InitStruct); | ||||
|   /* Enables the MPU */ | ||||
|   HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); | ||||
|  | ||||
| } | ||||
| /** | ||||
|   * @brief  Period elapsed callback in non blocking mode | ||||
|   * @note   This function is called  when TIM6 interrupt took place, inside | ||||
|   * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment | ||||
|   * a global variable "uwTick" used as application time base. | ||||
|   * @param  htim : TIM handle | ||||
|   * @retval None | ||||
|   */ | ||||
| void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) | ||||
| { | ||||
|   /* USER CODE BEGIN Callback 0 */ | ||||
|  | ||||
|   /* USER CODE END Callback 0 */ | ||||
|   if (htim->Instance == TIM6) { | ||||
|     HAL_IncTick(); | ||||
|   } | ||||
|   /* USER CODE BEGIN Callback 1 */ | ||||
|  | ||||
|   /* USER CODE END Callback 1 */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief  This function is executed in case of error occurrence. | ||||
|   * @retval None | ||||
|   */ | ||||
| void Error_Handler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN Error_Handler_Debug */ | ||||
|   /* User can add his own implementation to report the HAL error return state */ | ||||
|  | ||||
|   /* USER CODE END Error_Handler_Debug */ | ||||
| } | ||||
|  | ||||
| #ifdef  USE_FULL_ASSERT | ||||
| /** | ||||
|   * @brief  Reports the name of the source file and the source line number | ||||
|   *         where the assert_param error has occurred. | ||||
|   * @param  file: pointer to the source file name | ||||
|   * @param  line: assert_param error line source number | ||||
|   * @retval None | ||||
|   */ | ||||
| void assert_failed(uint8_t *file, uint32_t line) | ||||
| { | ||||
|   /* USER CODE BEGIN 6 */ | ||||
|   /* User can add his own implementation to report the file name and line number, | ||||
|      tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ | ||||
|   /* USER CODE END 6 */ | ||||
| } | ||||
| #endif /* USE_FULL_ASSERT */ | ||||
|  | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
							
								
								
									
										721
									
								
								ide-touchgfx-gen/Core/Src/stm32f7xx_hal_msp.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										721
									
								
								ide-touchgfx-gen/Core/Src/stm32f7xx_hal_msp.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,721 @@ | ||||
| /* USER CODE BEGIN Header */ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * File Name          : stm32f7xx_hal_msp.c | ||||
|   * Description        : This file provides code for the MSP Initialization | ||||
|   *                      and de-Initialization codes. | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2020 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under Ultimate Liberty license | ||||
|   * SLA0044, the "License"; You may not use this file except in compliance with | ||||
|   * the License. You may obtain a copy of the License at: | ||||
|   *                             www.st.com/SLA0044 | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
| /* USER CODE END Header */ | ||||
|  | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| #include "main.h" | ||||
| /* USER CODE BEGIN Includes */ | ||||
|  | ||||
| /* USER CODE END Includes */ | ||||
|  | ||||
| /* Private typedef -----------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN TD */ | ||||
|  | ||||
| /* USER CODE END TD */ | ||||
|  | ||||
| /* Private define ------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN Define */ | ||||
|  | ||||
| /* USER CODE END Define */ | ||||
|  | ||||
| /* Private macro -------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN Macro */ | ||||
|  | ||||
| /* USER CODE END Macro */ | ||||
|  | ||||
| /* Private variables ---------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PV */ | ||||
|  | ||||
| /* USER CODE END PV */ | ||||
|  | ||||
| /* Private function prototypes -----------------------------------------------*/ | ||||
| /* USER CODE BEGIN PFP */ | ||||
|  | ||||
| /* USER CODE END PFP */ | ||||
|  | ||||
| /* External functions --------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN ExternalFunctions */ | ||||
|  | ||||
| /* USER CODE END ExternalFunctions */ | ||||
|  | ||||
| /* USER CODE BEGIN 0 */ | ||||
|  | ||||
| /* USER CODE END 0 */ | ||||
| /** | ||||
|   * Initializes the Global MSP. | ||||
|   */ | ||||
| void HAL_MspInit(void) | ||||
| { | ||||
|   /* USER CODE BEGIN MspInit 0 */ | ||||
|  | ||||
|   /* USER CODE END MspInit 0 */ | ||||
|  | ||||
|   __HAL_RCC_PWR_CLK_ENABLE(); | ||||
|   __HAL_RCC_SYSCFG_CLK_ENABLE(); | ||||
|  | ||||
|   /* System interrupt init*/ | ||||
|   /* PendSV_IRQn interrupt configuration */ | ||||
|   HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0); | ||||
|  | ||||
|   /* USER CODE BEGIN MspInit 1 */ | ||||
|  | ||||
|   /* USER CODE END MspInit 1 */ | ||||
| } | ||||
|  | ||||
| /** | ||||
| * @brief CRC MSP Initialization | ||||
| * This function configures the hardware resources used in this example | ||||
| * @param hcrc: CRC handle pointer | ||||
| * @retval None | ||||
| */ | ||||
| void HAL_CRC_MspInit(CRC_HandleTypeDef* hcrc) | ||||
| { | ||||
|   if(hcrc->Instance==CRC) | ||||
|   { | ||||
|   /* USER CODE BEGIN CRC_MspInit 0 */ | ||||
|  | ||||
|   /* USER CODE END CRC_MspInit 0 */ | ||||
|     /* Peripheral clock enable */ | ||||
|     __HAL_RCC_CRC_CLK_ENABLE(); | ||||
|   /* USER CODE BEGIN CRC_MspInit 1 */ | ||||
|  | ||||
|   /* USER CODE END CRC_MspInit 1 */ | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
| * @brief CRC MSP De-Initialization | ||||
| * This function freeze the hardware resources used in this example | ||||
| * @param hcrc: CRC handle pointer | ||||
| * @retval None | ||||
| */ | ||||
| void HAL_CRC_MspDeInit(CRC_HandleTypeDef* hcrc) | ||||
| { | ||||
|   if(hcrc->Instance==CRC) | ||||
|   { | ||||
|   /* USER CODE BEGIN CRC_MspDeInit 0 */ | ||||
|  | ||||
|   /* USER CODE END CRC_MspDeInit 0 */ | ||||
|     /* Peripheral clock disable */ | ||||
|     __HAL_RCC_CRC_CLK_DISABLE(); | ||||
|   /* USER CODE BEGIN CRC_MspDeInit 1 */ | ||||
|  | ||||
|   /* USER CODE END CRC_MspDeInit 1 */ | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
| * @brief DMA2D MSP Initialization | ||||
| * This function configures the hardware resources used in this example | ||||
| * @param hdma2d: DMA2D handle pointer | ||||
| * @retval None | ||||
| */ | ||||
| void HAL_DMA2D_MspInit(DMA2D_HandleTypeDef* hdma2d) | ||||
| { | ||||
|   if(hdma2d->Instance==DMA2D) | ||||
|   { | ||||
|   /* USER CODE BEGIN DMA2D_MspInit 0 */ | ||||
|  | ||||
|   /* USER CODE END DMA2D_MspInit 0 */ | ||||
|     /* Peripheral clock enable */ | ||||
|     __HAL_RCC_DMA2D_CLK_ENABLE(); | ||||
|     /* DMA2D interrupt Init */ | ||||
|     HAL_NVIC_SetPriority(DMA2D_IRQn, 5, 0); | ||||
|     HAL_NVIC_EnableIRQ(DMA2D_IRQn); | ||||
|   /* USER CODE BEGIN DMA2D_MspInit 1 */ | ||||
|  | ||||
|   /* USER CODE END DMA2D_MspInit 1 */ | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
| * @brief DMA2D MSP De-Initialization | ||||
| * This function freeze the hardware resources used in this example | ||||
| * @param hdma2d: DMA2D handle pointer | ||||
| * @retval None | ||||
| */ | ||||
| void HAL_DMA2D_MspDeInit(DMA2D_HandleTypeDef* hdma2d) | ||||
| { | ||||
|   if(hdma2d->Instance==DMA2D) | ||||
|   { | ||||
|   /* USER CODE BEGIN DMA2D_MspDeInit 0 */ | ||||
|  | ||||
|   /* USER CODE END DMA2D_MspDeInit 0 */ | ||||
|     /* Peripheral clock disable */ | ||||
|     __HAL_RCC_DMA2D_CLK_DISABLE(); | ||||
|  | ||||
|     /* DMA2D interrupt DeInit */ | ||||
|     HAL_NVIC_DisableIRQ(DMA2D_IRQn); | ||||
|   /* USER CODE BEGIN DMA2D_MspDeInit 1 */ | ||||
|  | ||||
|   /* USER CODE END DMA2D_MspDeInit 1 */ | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
| * @brief I2C MSP Initialization | ||||
| * This function configures the hardware resources used in this example | ||||
| * @param hi2c: I2C handle pointer | ||||
| * @retval None | ||||
| */ | ||||
| void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) | ||||
| { | ||||
|   GPIO_InitTypeDef GPIO_InitStruct = {0}; | ||||
|   if(hi2c->Instance==I2C3) | ||||
|   { | ||||
|   /* USER CODE BEGIN I2C3_MspInit 0 */ | ||||
|  | ||||
|   /* USER CODE END I2C3_MspInit 0 */ | ||||
|  | ||||
|     __HAL_RCC_GPIOH_CLK_ENABLE(); | ||||
|     /**I2C3 GPIO Configuration | ||||
|     PH7     ------> I2C3_SCL | ||||
|     PH8     ------> I2C3_SDA | ||||
|     */ | ||||
|     GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8; | ||||
|     GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; | ||||
|     GPIO_InitStruct.Pull = GPIO_PULLUP; | ||||
|     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|     GPIO_InitStruct.Alternate = GPIO_AF4_I2C3; | ||||
|     HAL_GPIO_Init(GPIOH, &GPIO_InitStruct); | ||||
|  | ||||
|     /* Peripheral clock enable */ | ||||
|     __HAL_RCC_I2C3_CLK_ENABLE(); | ||||
|   /* USER CODE BEGIN I2C3_MspInit 1 */ | ||||
|  | ||||
|   /* USER CODE END I2C3_MspInit 1 */ | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
| * @brief I2C MSP De-Initialization | ||||
| * This function freeze the hardware resources used in this example | ||||
| * @param hi2c: I2C handle pointer | ||||
| * @retval None | ||||
| */ | ||||
| void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c) | ||||
| { | ||||
|   if(hi2c->Instance==I2C3) | ||||
|   { | ||||
|   /* USER CODE BEGIN I2C3_MspDeInit 0 */ | ||||
|  | ||||
|   /* USER CODE END I2C3_MspDeInit 0 */ | ||||
|     /* Peripheral clock disable */ | ||||
|     __HAL_RCC_I2C3_CLK_DISABLE(); | ||||
|  | ||||
|     /**I2C3 GPIO Configuration | ||||
|     PH7     ------> I2C3_SCL | ||||
|     PH8     ------> I2C3_SDA | ||||
|     */ | ||||
|     HAL_GPIO_DeInit(GPIOH, GPIO_PIN_7); | ||||
|  | ||||
|     HAL_GPIO_DeInit(GPIOH, GPIO_PIN_8); | ||||
|  | ||||
|   /* USER CODE BEGIN I2C3_MspDeInit 1 */ | ||||
|  | ||||
|   /* USER CODE END I2C3_MspDeInit 1 */ | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
| * @brief LTDC MSP Initialization | ||||
| * This function configures the hardware resources used in this example | ||||
| * @param hltdc: LTDC handle pointer | ||||
| * @retval None | ||||
| */ | ||||
| void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc) | ||||
| { | ||||
|   GPIO_InitTypeDef GPIO_InitStruct = {0}; | ||||
|   if(hltdc->Instance==LTDC) | ||||
|   { | ||||
|   /* USER CODE BEGIN LTDC_MspInit 0 */ | ||||
|  | ||||
|   /* USER CODE END LTDC_MspInit 0 */ | ||||
|     /* Peripheral 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 = GPIO_PIN_4; | ||||
|     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(GPIOE, &GPIO_InitStruct); | ||||
|  | ||||
|     GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_11 | ||||
|                           |GPIO_PIN_8|GPIO_PIN_10|GPIO_PIN_7|GPIO_PIN_9 | ||||
|                           |GPIO_PIN_6|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_3 | ||||
|                           |GPIO_PIN_2|GPIO_PIN_0|GPIO_PIN_1; | ||||
|     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 = GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4 | ||||
|                           |GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_0; | ||||
|     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 = GPIO_PIN_12; | ||||
|     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(GPIOG, &GPIO_InitStruct); | ||||
|  | ||||
|     GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_9|GPIO_PIN_15|GPIO_PIN_14; | ||||
|     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 */ | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
| * @brief LTDC MSP De-Initialization | ||||
| * This function freeze the hardware resources used in this example | ||||
| * @param hltdc: LTDC handle pointer | ||||
| * @retval None | ||||
| */ | ||||
| void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef* hltdc) | ||||
| { | ||||
|   if(hltdc->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(GPIOE, GPIO_PIN_4); | ||||
|  | ||||
|     HAL_GPIO_DeInit(GPIOJ, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_11 | ||||
|                           |GPIO_PIN_8|GPIO_PIN_10|GPIO_PIN_7|GPIO_PIN_9 | ||||
|                           |GPIO_PIN_6|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_3 | ||||
|                           |GPIO_PIN_2|GPIO_PIN_0|GPIO_PIN_1); | ||||
|  | ||||
|     HAL_GPIO_DeInit(GPIOK, GPIO_PIN_7|GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4 | ||||
|                           |GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_0); | ||||
|  | ||||
|     HAL_GPIO_DeInit(GPIOG, GPIO_PIN_12); | ||||
|  | ||||
|     HAL_GPIO_DeInit(GPIOI, GPIO_PIN_10|GPIO_PIN_9|GPIO_PIN_15|GPIO_PIN_14); | ||||
|  | ||||
|     /* LTDC interrupt DeInit */ | ||||
|     HAL_NVIC_DisableIRQ(LTDC_IRQn); | ||||
|   /* USER CODE BEGIN LTDC_MspDeInit 1 */ | ||||
|  | ||||
|   /* USER CODE END LTDC_MspDeInit 1 */ | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
| * @brief QSPI MSP Initialization | ||||
| * This function configures the hardware resources used in this example | ||||
| * @param hqspi: QSPI handle pointer | ||||
| * @retval None | ||||
| */ | ||||
| void HAL_QSPI_MspInit(QSPI_HandleTypeDef* hqspi) | ||||
| { | ||||
|   GPIO_InitTypeDef GPIO_InitStruct = {0}; | ||||
|   if(hqspi->Instance==QUADSPI) | ||||
|   { | ||||
|   /* USER CODE BEGIN QUADSPI_MspInit 0 */ | ||||
|  | ||||
|   /* USER CODE END QUADSPI_MspInit 0 */ | ||||
|     /* Peripheral clock enable */ | ||||
|     __HAL_RCC_QSPI_CLK_ENABLE(); | ||||
|  | ||||
|     __HAL_RCC_GPIOE_CLK_ENABLE(); | ||||
|     __HAL_RCC_GPIOB_CLK_ENABLE(); | ||||
|     __HAL_RCC_GPIOD_CLK_ENABLE(); | ||||
|     /**QUADSPI GPIO Configuration | ||||
|     PE2     ------> QUADSPI_BK1_IO2 | ||||
|     PB6     ------> QUADSPI_BK1_NCS | ||||
|     PB2     ------> QUADSPI_CLK | ||||
|     PD12     ------> QUADSPI_BK1_IO1 | ||||
|     PD13     ------> QUADSPI_BK1_IO3 | ||||
|     PD11     ------> QUADSPI_BK1_IO0 | ||||
|     */ | ||||
|     GPIO_InitStruct.Pin = GPIO_PIN_2; | ||||
|     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||
|     GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||
|     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|     GPIO_InitStruct.Alternate = GPIO_AF9_QUADSPI; | ||||
|     HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); | ||||
|  | ||||
|     GPIO_InitStruct.Pin = GPIO_PIN_6; | ||||
|     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||
|     GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||
|     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|     GPIO_InitStruct.Alternate = GPIO_AF10_QUADSPI; | ||||
|     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); | ||||
|  | ||||
|     GPIO_InitStruct.Pin = GPIO_PIN_2; | ||||
|     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||
|     GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||
|     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|     GPIO_InitStruct.Alternate = GPIO_AF9_QUADSPI; | ||||
|     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); | ||||
|  | ||||
|     GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_11; | ||||
|     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||
|     GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||
|     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|     GPIO_InitStruct.Alternate = GPIO_AF9_QUADSPI; | ||||
|     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); | ||||
|  | ||||
|   /* USER CODE BEGIN QUADSPI_MspInit 1 */ | ||||
|  | ||||
|   /* USER CODE END QUADSPI_MspInit 1 */ | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| /** | ||||
| * @brief QSPI MSP De-Initialization | ||||
| * This function freeze the hardware resources used in this example | ||||
| * @param hqspi: QSPI handle pointer | ||||
| * @retval None | ||||
| */ | ||||
| void HAL_QSPI_MspDeInit(QSPI_HandleTypeDef* hqspi) | ||||
| { | ||||
|   if(hqspi->Instance==QUADSPI) | ||||
|   { | ||||
|   /* USER CODE BEGIN QUADSPI_MspDeInit 0 */ | ||||
|  | ||||
|   /* USER CODE END QUADSPI_MspDeInit 0 */ | ||||
|     /* Peripheral clock disable */ | ||||
|     __HAL_RCC_QSPI_CLK_DISABLE(); | ||||
|  | ||||
|     /**QUADSPI GPIO Configuration | ||||
|     PE2     ------> QUADSPI_BK1_IO2 | ||||
|     PB6     ------> QUADSPI_BK1_NCS | ||||
|     PB2     ------> QUADSPI_CLK | ||||
|     PD12     ------> QUADSPI_BK1_IO1 | ||||
|     PD13     ------> QUADSPI_BK1_IO3 | ||||
|     PD11     ------> QUADSPI_BK1_IO0 | ||||
|     */ | ||||
|     HAL_GPIO_DeInit(GPIOE, GPIO_PIN_2); | ||||
|  | ||||
|     HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_2); | ||||
|  | ||||
|     HAL_GPIO_DeInit(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_11); | ||||
|  | ||||
|   /* USER CODE BEGIN QUADSPI_MspDeInit 1 */ | ||||
|  | ||||
|   /* USER CODE END QUADSPI_MspDeInit 1 */ | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| static uint32_t FMC_Initialized = 0; | ||||
|  | ||||
| static void HAL_FMC_MspInit(void){ | ||||
|   /* USER CODE BEGIN FMC_MspInit 0 */ | ||||
|  | ||||
|   /* USER CODE END FMC_MspInit 0 */ | ||||
|   GPIO_InitTypeDef GPIO_InitStruct ={0}; | ||||
|   if (FMC_Initialized) { | ||||
|     return; | ||||
|   } | ||||
|   FMC_Initialized = 1; | ||||
|  | ||||
|   /* Peripheral clock enable */ | ||||
|   __HAL_RCC_FMC_CLK_ENABLE(); | ||||
|  | ||||
|   /** FMC GPIO Configuration | ||||
|   PE1   ------> FMC_NBL1 | ||||
|   PE0   ------> FMC_NBL0 | ||||
|   PG15   ------> FMC_SDNCAS | ||||
|   PD0   ------> FMC_D2 | ||||
|   PD1   ------> FMC_D3 | ||||
|   PF0   ------> FMC_A0 | ||||
|   PF1   ------> FMC_A1 | ||||
|   PF2   ------> FMC_A2 | ||||
|   PF3   ------> FMC_A3 | ||||
|   PG8   ------> FMC_SDCLK | ||||
|   PF4   ------> FMC_A4 | ||||
|   PH5   ------> FMC_SDNWE | ||||
|   PH3   ------> FMC_SDNE0 | ||||
|   PF5   ------> FMC_A5 | ||||
|   PD15   ------> FMC_D1 | ||||
|   PD10   ------> FMC_D15 | ||||
|   PC3   ------> FMC_SDCKE0 | ||||
|   PD14   ------> FMC_D0 | ||||
|   PD9   ------> FMC_D14 | ||||
|   PD8   ------> FMC_D13 | ||||
|   PF12   ------> FMC_A6 | ||||
|   PG1   ------> FMC_A11 | ||||
|   PF15   ------> FMC_A9 | ||||
|   PF13   ------> FMC_A7 | ||||
|   PG0   ------> FMC_A10 | ||||
|   PE8   ------> FMC_D5 | ||||
|   PG5   ------> FMC_BA1 | ||||
|   PG4   ------> FMC_BA0 | ||||
|   PF14   ------> FMC_A8 | ||||
|   PF11   ------> FMC_SDNRAS | ||||
|   PE9   ------> FMC_D6 | ||||
|   PE11   ------> FMC_D8 | ||||
|   PE14   ------> FMC_D11 | ||||
|   PE7   ------> FMC_D4 | ||||
|   PE10   ------> FMC_D7 | ||||
|   PE12   ------> FMC_D9 | ||||
|   PE15   ------> FMC_D12 | ||||
|   PE13   ------> FMC_D10 | ||||
|   */ | ||||
|   GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_0|GPIO_PIN_8|GPIO_PIN_9 | ||||
|                           |GPIO_PIN_11|GPIO_PIN_14|GPIO_PIN_7|GPIO_PIN_10 | ||||
|                           |GPIO_PIN_12|GPIO_PIN_15|GPIO_PIN_13; | ||||
|   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||
|   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|   GPIO_InitStruct.Alternate = GPIO_AF12_FMC; | ||||
|   HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); | ||||
|  | ||||
|   GPIO_InitStruct.Pin = GPIO_PIN_15|GPIO_PIN_8|GPIO_PIN_1|GPIO_PIN_0 | ||||
|                           |GPIO_PIN_5|GPIO_PIN_4; | ||||
|   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||
|   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|   GPIO_InitStruct.Alternate = GPIO_AF12_FMC; | ||||
|   HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); | ||||
|  | ||||
|   GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_15|GPIO_PIN_10 | ||||
|                           |GPIO_PIN_14|GPIO_PIN_9|GPIO_PIN_8; | ||||
|   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||
|   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|   GPIO_InitStruct.Alternate = GPIO_AF12_FMC; | ||||
|   HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); | ||||
|  | ||||
|   GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3 | ||||
|                           |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_12|GPIO_PIN_15 | ||||
|                           |GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_11; | ||||
|   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||
|   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|   GPIO_InitStruct.Alternate = GPIO_AF12_FMC; | ||||
|   HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); | ||||
|  | ||||
|   GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_3; | ||||
|   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||
|   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|   GPIO_InitStruct.Alternate = GPIO_AF12_FMC; | ||||
|   HAL_GPIO_Init(GPIOH, &GPIO_InitStruct); | ||||
|  | ||||
|   GPIO_InitStruct.Pin = GPIO_PIN_3; | ||||
|   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; | ||||
|   GPIO_InitStruct.Pull = GPIO_NOPULL; | ||||
|   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; | ||||
|   GPIO_InitStruct.Alternate = GPIO_AF12_FMC; | ||||
|   HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); | ||||
|  | ||||
|   /* USER CODE BEGIN FMC_MspInit 1 */ | ||||
|  | ||||
|   /* USER CODE END FMC_MspInit 1 */ | ||||
| } | ||||
|  | ||||
| void HAL_SDRAM_MspInit(SDRAM_HandleTypeDef* hsdram){ | ||||
|   /* USER CODE BEGIN SDRAM_MspInit 0 */ | ||||
|  | ||||
|   /* USER CODE END SDRAM_MspInit 0 */ | ||||
|   HAL_FMC_MspInit(); | ||||
|   /* USER CODE BEGIN SDRAM_MspInit 1 */ | ||||
|  | ||||
|   /* USER CODE END SDRAM_MspInit 1 */ | ||||
| } | ||||
|  | ||||
| static uint32_t FMC_DeInitialized = 0; | ||||
|  | ||||
| static void HAL_FMC_MspDeInit(void){ | ||||
|   /* USER CODE BEGIN FMC_MspDeInit 0 */ | ||||
|  | ||||
|   /* USER CODE END FMC_MspDeInit 0 */ | ||||
|   if (FMC_DeInitialized) { | ||||
|     return; | ||||
|   } | ||||
|   FMC_DeInitialized = 1; | ||||
|   /* Peripheral clock enable */ | ||||
|   __HAL_RCC_FMC_CLK_DISABLE(); | ||||
|  | ||||
|   /** FMC GPIO Configuration | ||||
|   PE1   ------> FMC_NBL1 | ||||
|   PE0   ------> FMC_NBL0 | ||||
|   PG15   ------> FMC_SDNCAS | ||||
|   PD0   ------> FMC_D2 | ||||
|   PD1   ------> FMC_D3 | ||||
|   PF0   ------> FMC_A0 | ||||
|   PF1   ------> FMC_A1 | ||||
|   PF2   ------> FMC_A2 | ||||
|   PF3   ------> FMC_A3 | ||||
|   PG8   ------> FMC_SDCLK | ||||
|   PF4   ------> FMC_A4 | ||||
|   PH5   ------> FMC_SDNWE | ||||
|   PH3   ------> FMC_SDNE0 | ||||
|   PF5   ------> FMC_A5 | ||||
|   PD15   ------> FMC_D1 | ||||
|   PD10   ------> FMC_D15 | ||||
|   PC3   ------> FMC_SDCKE0 | ||||
|   PD14   ------> FMC_D0 | ||||
|   PD9   ------> FMC_D14 | ||||
|   PD8   ------> FMC_D13 | ||||
|   PF12   ------> FMC_A6 | ||||
|   PG1   ------> FMC_A11 | ||||
|   PF15   ------> FMC_A9 | ||||
|   PF13   ------> FMC_A7 | ||||
|   PG0   ------> FMC_A10 | ||||
|   PE8   ------> FMC_D5 | ||||
|   PG5   ------> FMC_BA1 | ||||
|   PG4   ------> FMC_BA0 | ||||
|   PF14   ------> FMC_A8 | ||||
|   PF11   ------> FMC_SDNRAS | ||||
|   PE9   ------> FMC_D6 | ||||
|   PE11   ------> FMC_D8 | ||||
|   PE14   ------> FMC_D11 | ||||
|   PE7   ------> FMC_D4 | ||||
|   PE10   ------> FMC_D7 | ||||
|   PE12   ------> FMC_D9 | ||||
|   PE15   ------> FMC_D12 | ||||
|   PE13   ------> FMC_D10 | ||||
|   */ | ||||
|   HAL_GPIO_DeInit(GPIOE, GPIO_PIN_1|GPIO_PIN_0|GPIO_PIN_8|GPIO_PIN_9 | ||||
|                           |GPIO_PIN_11|GPIO_PIN_14|GPIO_PIN_7|GPIO_PIN_10 | ||||
|                           |GPIO_PIN_12|GPIO_PIN_15|GPIO_PIN_13); | ||||
|  | ||||
|   HAL_GPIO_DeInit(GPIOG, GPIO_PIN_15|GPIO_PIN_8|GPIO_PIN_1|GPIO_PIN_0 | ||||
|                           |GPIO_PIN_5|GPIO_PIN_4); | ||||
|  | ||||
|   HAL_GPIO_DeInit(GPIOD, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_15|GPIO_PIN_10 | ||||
|                           |GPIO_PIN_14|GPIO_PIN_9|GPIO_PIN_8); | ||||
|  | ||||
|   HAL_GPIO_DeInit(GPIOF, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3 | ||||
|                           |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_12|GPIO_PIN_15 | ||||
|                           |GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_11); | ||||
|  | ||||
|   HAL_GPIO_DeInit(GPIOH, GPIO_PIN_5|GPIO_PIN_3); | ||||
|  | ||||
|   HAL_GPIO_DeInit(GPIOC, GPIO_PIN_3); | ||||
|  | ||||
|   /* USER CODE BEGIN FMC_MspDeInit 1 */ | ||||
|  | ||||
|   /* USER CODE END FMC_MspDeInit 1 */ | ||||
| } | ||||
|  | ||||
| void HAL_SDRAM_MspDeInit(SDRAM_HandleTypeDef* hsdram){ | ||||
|   /* USER CODE BEGIN SDRAM_MspDeInit 0 */ | ||||
|  | ||||
|   /* USER CODE END SDRAM_MspDeInit 0 */ | ||||
|   HAL_FMC_MspDeInit(); | ||||
|   /* USER CODE BEGIN SDRAM_MspDeInit 1 */ | ||||
|  | ||||
|   /* USER CODE END SDRAM_MspDeInit 1 */ | ||||
| } | ||||
|  | ||||
| /* USER CODE BEGIN 1 */ | ||||
|  | ||||
| /* USER CODE END 1 */ | ||||
|  | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
							
								
								
									
										111
									
								
								ide-touchgfx-gen/Core/Src/stm32f7xx_hal_timebase_tim.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								ide-touchgfx-gen/Core/Src/stm32f7xx_hal_timebase_tim.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | ||||
| /* USER CODE BEGIN Header */ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file    stm32f7xx_hal_timebase_TIM.c | ||||
|   * @brief   HAL time base based on the hardware TIM. | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2020 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under Ultimate Liberty license | ||||
|   * SLA0044, the "License"; You may not use this file except in compliance with | ||||
|   * the License. You may obtain a copy of the License at: | ||||
|   *                             www.st.com/SLA0044 | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
| /* USER CODE END Header */ | ||||
|  | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| #include "stm32f7xx_hal.h" | ||||
| #include "stm32f7xx_hal_tim.h" | ||||
|  | ||||
| /* Private typedef -----------------------------------------------------------*/ | ||||
| /* Private define ------------------------------------------------------------*/ | ||||
| /* Private macro -------------------------------------------------------------*/ | ||||
| /* Private variables ---------------------------------------------------------*/ | ||||
| TIM_HandleTypeDef        htim6; | ||||
| /* Private function prototypes -----------------------------------------------*/ | ||||
| /* Private functions ---------------------------------------------------------*/ | ||||
|  | ||||
| /** | ||||
|   * @brief  This function configures the TIM6 as a time base source. | ||||
|   *         The time source is configured  to have 1ms time base with a dedicated | ||||
|   *         Tick interrupt priority. | ||||
|   * @note   This function is called  automatically at the beginning of program after | ||||
|   *         reset by HAL_Init() or at any time when clock is configured, by HAL_RCC_ClockConfig(). | ||||
|   * @param  TickPriority: Tick interrupt priority. | ||||
|   * @retval HAL status | ||||
|   */ | ||||
| HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) | ||||
| { | ||||
|   RCC_ClkInitTypeDef    clkconfig; | ||||
|   uint32_t              uwTimclock = 0; | ||||
|   uint32_t              uwPrescalerValue = 0; | ||||
|   uint32_t              pFLatency; | ||||
|   /*Configure the TIM6 IRQ priority */ | ||||
|   HAL_NVIC_SetPriority(TIM6_DAC_IRQn, TickPriority ,0); | ||||
|  | ||||
|   /* Enable the TIM6 global Interrupt */ | ||||
|   HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn); | ||||
|   /* Enable TIM6 clock */ | ||||
|   __HAL_RCC_TIM6_CLK_ENABLE(); | ||||
|  | ||||
|   /* Get clock configuration */ | ||||
|   HAL_RCC_GetClockConfig(&clkconfig, &pFLatency); | ||||
|  | ||||
|   /* Compute TIM6 clock */ | ||||
|   uwTimclock = 2*HAL_RCC_GetPCLK1Freq(); | ||||
|   /* Compute the prescaler value to have TIM6 counter clock equal to 1MHz */ | ||||
|   uwPrescalerValue = (uint32_t) ((uwTimclock / 1000000U) - 1U); | ||||
|  | ||||
|   /* Initialize TIM6 */ | ||||
|   htim6.Instance = TIM6; | ||||
|  | ||||
|   /* Initialize TIMx peripheral as follow: | ||||
|   + Period = [(TIM6CLK/1000) - 1]. to have a (1/1000) s time base. | ||||
|   + Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock. | ||||
|   + ClockDivision = 0 | ||||
|   + Counter direction = Up | ||||
|   */ | ||||
|   htim6.Init.Period = (1000000U / 1000U) - 1U; | ||||
|   htim6.Init.Prescaler = uwPrescalerValue; | ||||
|   htim6.Init.ClockDivision = 0; | ||||
|   htim6.Init.CounterMode = TIM_COUNTERMODE_UP; | ||||
|   if(HAL_TIM_Base_Init(&htim6) == HAL_OK) | ||||
|   { | ||||
|     /* Start the TIM time Base generation in interrupt mode */ | ||||
|     return HAL_TIM_Base_Start_IT(&htim6); | ||||
|   } | ||||
|  | ||||
|   /* Return function status */ | ||||
|   return HAL_ERROR; | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief  Suspend Tick increment. | ||||
|   * @note   Disable the tick increment by disabling TIM6 update interrupt. | ||||
|   * @param  None | ||||
|   * @retval None | ||||
|   */ | ||||
| void HAL_SuspendTick(void) | ||||
| { | ||||
|   /* Disable TIM6 update Interrupt */ | ||||
|   __HAL_TIM_DISABLE_IT(&htim6, TIM_IT_UPDATE); | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief  Resume Tick increment. | ||||
|   * @note   Enable the tick increment by Enabling TIM6 update interrupt. | ||||
|   * @param  None | ||||
|   * @retval None | ||||
|   */ | ||||
| void HAL_ResumeTick(void) | ||||
| { | ||||
|   /* Enable TIM6 Update interrupt */ | ||||
|   __HAL_TIM_ENABLE_IT(&htim6, TIM_IT_UPDATE); | ||||
| } | ||||
|  | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
							
								
								
									
										208
									
								
								ide-touchgfx-gen/Core/Src/stm32f7xx_it.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										208
									
								
								ide-touchgfx-gen/Core/Src/stm32f7xx_it.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,208 @@ | ||||
| /* USER CODE BEGIN Header */ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file    stm32f7xx_it.c | ||||
|   * @brief   Interrupt Service Routines. | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2020 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under Ultimate Liberty license | ||||
|   * SLA0044, the "License"; You may not use this file except in compliance with | ||||
|   * the License. You may obtain a copy of the License at: | ||||
|   *                             www.st.com/SLA0044 | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
| /* USER CODE END Header */ | ||||
|  | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| #include "main.h" | ||||
| #include "stm32f7xx_it.h" | ||||
| /* Private includes ----------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN Includes */ | ||||
| /* USER CODE END Includes */ | ||||
|  | ||||
| /* Private typedef -----------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN TD */ | ||||
|  | ||||
| /* USER CODE END TD */ | ||||
|  | ||||
| /* Private define ------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PD */ | ||||
|  | ||||
| /* USER CODE END PD */ | ||||
|  | ||||
| /* Private macro -------------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PM */ | ||||
|  | ||||
| /* USER CODE END PM */ | ||||
|  | ||||
| /* Private variables ---------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN PV */ | ||||
|  | ||||
| /* USER CODE END PV */ | ||||
|  | ||||
| /* Private function prototypes -----------------------------------------------*/ | ||||
| /* USER CODE BEGIN PFP */ | ||||
|  | ||||
| /* USER CODE END PFP */ | ||||
|  | ||||
| /* Private user code ---------------------------------------------------------*/ | ||||
| /* USER CODE BEGIN 0 */ | ||||
|  | ||||
| /* USER CODE END 0 */ | ||||
|  | ||||
| /* External variables --------------------------------------------------------*/ | ||||
| extern DMA2D_HandleTypeDef hdma2d; | ||||
| extern LTDC_HandleTypeDef hltdc; | ||||
| extern TIM_HandleTypeDef htim6; | ||||
|  | ||||
| /* USER CODE BEGIN EV */ | ||||
|  | ||||
| /* USER CODE END EV */ | ||||
|  | ||||
| /******************************************************************************/ | ||||
| /*           Cortex-M7 Processor Interruption and Exception Handlers          */ | ||||
| /******************************************************************************/ | ||||
| /** | ||||
|   * @brief This function handles Non maskable interrupt. | ||||
|   */ | ||||
| void NMI_Handler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END NonMaskableInt_IRQn 0 */ | ||||
|   /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ | ||||
|  | ||||
|   /* USER CODE END NonMaskableInt_IRQn 1 */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles Hard fault interrupt. | ||||
|   */ | ||||
| void HardFault_Handler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN HardFault_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END HardFault_IRQn 0 */ | ||||
|   while (1) | ||||
|   { | ||||
|     /* USER CODE BEGIN W1_HardFault_IRQn 0 */ | ||||
|     /* USER CODE END W1_HardFault_IRQn 0 */ | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles Memory management fault. | ||||
|   */ | ||||
| void MemManage_Handler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN MemoryManagement_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END MemoryManagement_IRQn 0 */ | ||||
|   while (1) | ||||
|   { | ||||
|     /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ | ||||
|     /* USER CODE END W1_MemoryManagement_IRQn 0 */ | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles Pre-fetch fault, memory access fault. | ||||
|   */ | ||||
| void BusFault_Handler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN BusFault_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END BusFault_IRQn 0 */ | ||||
|   while (1) | ||||
|   { | ||||
|     /* USER CODE BEGIN W1_BusFault_IRQn 0 */ | ||||
|     /* USER CODE END W1_BusFault_IRQn 0 */ | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles Undefined instruction or illegal state. | ||||
|   */ | ||||
| void UsageFault_Handler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN UsageFault_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END UsageFault_IRQn 0 */ | ||||
|   while (1) | ||||
|   { | ||||
|     /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ | ||||
|     /* USER CODE END W1_UsageFault_IRQn 0 */ | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles Debug monitor. | ||||
|   */ | ||||
| void DebugMon_Handler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN DebugMonitor_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END DebugMonitor_IRQn 0 */ | ||||
|   /* USER CODE BEGIN DebugMonitor_IRQn 1 */ | ||||
|  | ||||
|   /* USER CODE END DebugMonitor_IRQn 1 */ | ||||
| } | ||||
|  | ||||
| /******************************************************************************/ | ||||
| /* STM32F7xx Peripheral Interrupt Handlers                                    */ | ||||
| /* Add here the Interrupt Handlers for the used peripherals.                  */ | ||||
| /* For the available peripheral interrupt handler names,                      */ | ||||
| /* please refer to the startup file (startup_stm32f7xx.s).                    */ | ||||
| /******************************************************************************/ | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts. | ||||
|   */ | ||||
| void TIM6_DAC_IRQHandler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN TIM6_DAC_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END TIM6_DAC_IRQn 0 */ | ||||
|   HAL_TIM_IRQHandler(&htim6); | ||||
|   /* USER CODE BEGIN TIM6_DAC_IRQn 1 */ | ||||
|  | ||||
|   /* USER CODE END TIM6_DAC_IRQn 1 */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles LTDC global interrupt. | ||||
|   */ | ||||
| void LTDC_IRQHandler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN LTDC_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END LTDC_IRQn 0 */ | ||||
|   HAL_LTDC_IRQHandler(&hltdc); | ||||
|   /* USER CODE BEGIN LTDC_IRQn 1 */ | ||||
|  | ||||
|   /* USER CODE END LTDC_IRQn 1 */ | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @brief This function handles DMA2D global interrupt. | ||||
|   */ | ||||
| void DMA2D_IRQHandler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN DMA2D_IRQn 0 */ | ||||
|  | ||||
|   /* USER CODE END DMA2D_IRQn 0 */ | ||||
|   HAL_DMA2D_IRQHandler(&hdma2d); | ||||
|   /* USER CODE BEGIN DMA2D_IRQn 1 */ | ||||
|  | ||||
|   /* USER CODE END DMA2D_IRQn 1 */ | ||||
| } | ||||
|  | ||||
| /* USER CODE BEGIN 1 */ | ||||
|  | ||||
| /* USER CODE END 1 */ | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
							
								
								
									
										262
									
								
								ide-touchgfx-gen/Core/Src/system_stm32f7xx.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										262
									
								
								ide-touchgfx-gen/Core/Src/system_stm32f7xx.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,262 @@ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file    system_stm32f7xx.c | ||||
|   * @author  MCD Application Team | ||||
|   * @brief   CMSIS Cortex-M7 Device Peripheral Access Layer System Source File. | ||||
|   * | ||||
|   *   This file provides two functions and one global variable to be called from  | ||||
|   *   user application: | ||||
|   *      - SystemInit(): This function is called at startup just after reset and  | ||||
|   *                      before branch to main program. This call is made inside | ||||
|   *                      the "startup_stm32f7xx.s" file. | ||||
|   * | ||||
|   *      - SystemCoreClock variable: Contains the core clock (HCLK), it can be used | ||||
|   *                                  by the user application to setup the SysTick  | ||||
|   *                                  timer or configure other parameters. | ||||
|   *                                      | ||||
|   *      - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must | ||||
|   *                                 be called whenever the core clock is changed | ||||
|   *                                 during program execution. | ||||
|   * | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2016 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under BSD 3-Clause license, | ||||
|   * the "License"; You may not use this file except in compliance with the | ||||
|   * License. You may obtain a copy of the License at: | ||||
|   *                        opensource.org/licenses/BSD-3-Clause | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup CMSIS | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup stm32f7xx_system | ||||
|   * @{ | ||||
|   */   | ||||
|    | ||||
| /** @addtogroup STM32F7xx_System_Private_Includes | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| #include "stm32f7xx.h" | ||||
|  | ||||
| #if !defined  (HSE_VALUE)  | ||||
|   #define HSE_VALUE    ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */ | ||||
| #endif /* HSE_VALUE */ | ||||
|  | ||||
| #if !defined  (HSI_VALUE) | ||||
|   #define HSI_VALUE    ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/ | ||||
| #endif /* HSI_VALUE */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup STM32F7xx_System_Private_TypesDefinitions | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup STM32F7xx_System_Private_Defines | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /************************* Miscellaneous Configuration ************************/ | ||||
|  | ||||
| /*!< Uncomment the following line if you need to relocate your vector Table in | ||||
|      Internal SRAM. */ | ||||
| /* #define VECT_TAB_SRAM */ | ||||
| #define VECT_TAB_OFFSET  0x00 /*!< Vector Table base offset field.  | ||||
|                                    This value must be a multiple of 0x200. */ | ||||
| /******************************************************************************/ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup STM32F7xx_System_Private_Macros | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup STM32F7xx_System_Private_Variables | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
|   /* This variable is updated in three ways: | ||||
|       1) by calling CMSIS function SystemCoreClockUpdate() | ||||
|       2) by calling HAL API function HAL_RCC_GetHCLKFreq() | ||||
|       3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency  | ||||
|          Note: If you use this function to configure the system clock; then there | ||||
|                is no need to call the 2 first functions listed above, since SystemCoreClock | ||||
|                variable is updated automatically. | ||||
|   */ | ||||
|   uint32_t SystemCoreClock = 16000000; | ||||
|   const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; | ||||
|   const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4}; | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup STM32F7xx_System_Private_FunctionPrototypes | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup STM32F7xx_System_Private_Functions | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @brief  Setup the microcontroller system | ||||
|   *         Initialize the Embedded Flash Interface, the PLL and update the  | ||||
|   *         SystemFrequency variable. | ||||
|   * @param  None | ||||
|   * @retval None | ||||
|   */ | ||||
| void SystemInit(void) | ||||
| { | ||||
|   /* FPU settings ------------------------------------------------------------*/ | ||||
| #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) | ||||
|   SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */ | ||||
| #endif | ||||
|   /* Reset the RCC clock configuration to the default reset state ------------*/ | ||||
|   /* Set HSION bit */ | ||||
|   RCC->CR |= (uint32_t)0x00000001; | ||||
|  | ||||
|   /* Reset CFGR register */ | ||||
|   RCC->CFGR = 0x00000000; | ||||
|  | ||||
|   /* Reset HSEON, CSSON and PLLON bits */ | ||||
|   RCC->CR &= (uint32_t)0xFEF6FFFF; | ||||
|  | ||||
|   /* Reset PLLCFGR register */ | ||||
|   RCC->PLLCFGR = 0x24003010; | ||||
|  | ||||
|   /* Reset HSEBYP bit */ | ||||
|   RCC->CR &= (uint32_t)0xFFFBFFFF; | ||||
|  | ||||
|   /* Disable all interrupts */ | ||||
|   RCC->CIR = 0x00000000; | ||||
|  | ||||
|   /* Configure the Vector Table location add offset address ------------------*/ | ||||
| #ifdef VECT_TAB_SRAM | ||||
|   SCB->VTOR = RAMDTCM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ | ||||
| #else | ||||
|   SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ | ||||
| #endif | ||||
| } | ||||
|  | ||||
| /** | ||||
|    * @brief  Update SystemCoreClock variable according to Clock Register Values. | ||||
|   *         The SystemCoreClock variable contains the core clock (HCLK), it can | ||||
|   *         be used by the user application to setup the SysTick timer or configure | ||||
|   *         other parameters. | ||||
|   *            | ||||
|   * @note   Each time the core clock (HCLK) changes, this function must be called | ||||
|   *         to update SystemCoreClock variable value. Otherwise, any configuration | ||||
|   *         based on this variable will be incorrect.          | ||||
|   *      | ||||
|   * @note   - The system frequency computed by this function is not the real  | ||||
|   *           frequency in the chip. It is calculated based on the predefined  | ||||
|   *           constant and the selected clock source: | ||||
|   *              | ||||
|   *           - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) | ||||
|   *                                               | ||||
|   *           - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) | ||||
|   *                           | ||||
|   *           - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)  | ||||
|   *             or HSI_VALUE(*) multiplied/divided by the PLL factors. | ||||
|   *          | ||||
|   *         (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value | ||||
|   *             16 MHz) but the real value may vary depending on the variations | ||||
|   *             in voltage and temperature.    | ||||
|   *     | ||||
|   *         (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value | ||||
|   *              25 MHz), user has to ensure that HSE_VALUE is same as the real | ||||
|   *              frequency of the crystal used. Otherwise, this function may | ||||
|   *              have wrong result. | ||||
|   *                 | ||||
|   *         - The result of this function could be not correct when using fractional | ||||
|   *           value for HSE crystal. | ||||
|   *      | ||||
|   * @param  None | ||||
|   * @retval None | ||||
|   */ | ||||
| void SystemCoreClockUpdate(void) | ||||
| { | ||||
|   uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2; | ||||
|    | ||||
|   /* Get SYSCLK source -------------------------------------------------------*/ | ||||
|   tmp = RCC->CFGR & RCC_CFGR_SWS; | ||||
|  | ||||
|   switch (tmp) | ||||
|   { | ||||
|     case 0x00:  /* HSI used as system clock source */ | ||||
|       SystemCoreClock = HSI_VALUE; | ||||
|       break; | ||||
|     case 0x04:  /* HSE used as system clock source */ | ||||
|       SystemCoreClock = HSE_VALUE; | ||||
|       break; | ||||
|     case 0x08:  /* PLL used as system clock source */ | ||||
|  | ||||
|       /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N | ||||
|          SYSCLK = PLL_VCO / PLL_P | ||||
|          */     | ||||
|       pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22; | ||||
|       pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; | ||||
|        | ||||
|       if (pllsource != 0) | ||||
|       { | ||||
|         /* HSE used as PLL clock source */ | ||||
|         pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); | ||||
|       } | ||||
|       else | ||||
|       { | ||||
|         /* HSI used as PLL clock source */ | ||||
|         pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);       | ||||
|       } | ||||
|  | ||||
|       pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; | ||||
|       SystemCoreClock = pllvco/pllp; | ||||
|       break; | ||||
|     default: | ||||
|       SystemCoreClock = HSI_VALUE; | ||||
|       break; | ||||
|   } | ||||
|   /* Compute HCLK frequency --------------------------------------------------*/ | ||||
|   /* Get HCLK prescaler */ | ||||
|   tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; | ||||
|   /* HCLK frequency */ | ||||
|   SystemCoreClock >>= tmp; | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|    | ||||
| /** | ||||
|   * @} | ||||
|   */     | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
		Reference in New Issue
	
	Block a user