3.5" inch TFT LCD Display Module 480X320 driven with FSMC.

TFT LCD Display Module 480X320 driven with FSMC

I have recently bought a 3.5" inch TFT LCD Touch Screen Display Module 480X320 with a www.mcufriend.com label on the back side. The display was equipped with an 8bit parallel interface. First I decided to test it with the UniGraphic library using the BUS_8 protocol. The display was very slow but improved when I switched to the PAR_8 protocol. Because I heard about the possibility to use a Flexible Static Memory Controller (FSMC), built into some STM MCU's, to drive LCD's (read/write to LCD's memory rather than to an external SRAM) I thought it would be a fun to try it out.

https://os.mbed.com/media/uploads/hudakz/lcd_3.5_tft_480x320_mcufriend_front.png

Below is the brief story of what I did:

  • Selected FSMC in the Connectivity category and configured it as below: https://os.mbed.com/media/uploads/hudakz/arch_max_fsmc_conf.png
  • Let the STM32CubeIDE generate the code (files).
  • Created a new program for the Seeed Arch Max target in the Mbed Online Compiler by selecting a mbed os blinky template.
  • Replaced the main.cpp with the main.c content of the STM32CubeIDE project.
  • Copy & Pasted the other files with codes from the STM32CubeIDE project to the online compiler project.
  • Renamed and modified:
    "stm32f4xx_it.h" to "stm32f4xx_it_msp.h"
    "stm32f4xx_it.c" to "stm32f4xx_it_msp.c"
  • Added the UniGraphic library to the online compiler project.
  • Extended the UniGraphic library with a FSMC_8 protocol and replaced the TFT::set_orientation(int orient) function with the one used by mcufriend for arduino.
  • Modified the main.cpp as needed.
https://os.mbed.com/media/uploads/hudakz/stm32f407vet6_st-link03.pnghttps://os.mbed.com/media/uploads/hudakz/lcd_3.5_tft_480x320_mcufriend_back.png


Wiring

STM32F407VETFT LCD module
+3.3V3V3
GNDGND
PB_12LCD_RST
GNDLCD_CS
PD_13 (RS)LCD_RS
PD_5 (WR)LCD_WR
PD_4 (RD)LCD_RD
PD_14 (DB00)LCD_D0
PD_15 (DB01)LCD_D1
PD_0 (DB02)LCD_D2
PD_1 (DB03)LCD_D3
PE_7 (DB04)LCD_D4
PE_8 (DB05)LCD_D5
PE_9 (DB06)LCD_D6
PE_10 (DB07)LCD_D7



Results
Execution times
Used protocolBUS_8FSMC_8
Operation \ Timemsms
Clear2283.98038.454
Plot192.06611.365
8bit BMP63.80541.338
Large Font163.8727.895
Sparce pixels2072.265/1458.05174.107/52.168
16bit BMP2288.58959.904
Committer:
hudakz
Date:
Sun May 10 10:44:31 2020 +0000
Revision:
0:fa952828e34c
3.5" inch TFT LCD Display Module 480X320 driven with FSMC.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hudakz 0:fa952828e34c 1 /**
hudakz 0:fa952828e34c 2 ******************************************************************************
hudakz 0:fa952828e34c 3 * @file stm32f4xx_hal_conf_template.h
hudakz 0:fa952828e34c 4 * @author MCD Application Team
hudakz 0:fa952828e34c 5 * @brief HAL configuration template file.
hudakz 0:fa952828e34c 6 * This file should be copied to the application folder and renamed
hudakz 0:fa952828e34c 7 * to stm32f4xx_hal_conf.h.
hudakz 0:fa952828e34c 8 ******************************************************************************
hudakz 0:fa952828e34c 9 * @attention
hudakz 0:fa952828e34c 10 *
hudakz 0:fa952828e34c 11 * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
hudakz 0:fa952828e34c 12 * All rights reserved.</center></h2>
hudakz 0:fa952828e34c 13 *
hudakz 0:fa952828e34c 14 * This software component is licensed by ST under BSD 3-Clause license,
hudakz 0:fa952828e34c 15 * the "License"; You may not use this file except in compliance with the
hudakz 0:fa952828e34c 16 * License. You may obtain a copy of the License at:
hudakz 0:fa952828e34c 17 * opensource.org/licenses/BSD-3-Clause
hudakz 0:fa952828e34c 18 *
hudakz 0:fa952828e34c 19 ******************************************************************************
hudakz 0:fa952828e34c 20 */
hudakz 0:fa952828e34c 21
hudakz 0:fa952828e34c 22 /* Define to prevent recursive inclusion -------------------------------------*/
hudakz 0:fa952828e34c 23 #ifndef __STM32F4xx_HAL_CONF_H
hudakz 0:fa952828e34c 24 #define __STM32F4xx_HAL_CONF_H
hudakz 0:fa952828e34c 25
hudakz 0:fa952828e34c 26 #ifdef __cplusplus
hudakz 0:fa952828e34c 27 extern "C" {
hudakz 0:fa952828e34c 28 #endif
hudakz 0:fa952828e34c 29
hudakz 0:fa952828e34c 30 /* Exported types ------------------------------------------------------------*/
hudakz 0:fa952828e34c 31 /* Exported constants --------------------------------------------------------*/
hudakz 0:fa952828e34c 32
hudakz 0:fa952828e34c 33 /* ########################## Module Selection ############################## */
hudakz 0:fa952828e34c 34 /**
hudakz 0:fa952828e34c 35 * @brief This is the list of modules to be used in the HAL driver
hudakz 0:fa952828e34c 36 */
hudakz 0:fa952828e34c 37 #define HAL_MODULE_ENABLED
hudakz 0:fa952828e34c 38
hudakz 0:fa952828e34c 39 /* #define HAL_ADC_MODULE_ENABLED */
hudakz 0:fa952828e34c 40 /* #define HAL_CRYP_MODULE_ENABLED */
hudakz 0:fa952828e34c 41 /* #define HAL_CAN_MODULE_ENABLED */
hudakz 0:fa952828e34c 42 /* #define HAL_CRC_MODULE_ENABLED */
hudakz 0:fa952828e34c 43 /* #define HAL_CRYP_MODULE_ENABLED */
hudakz 0:fa952828e34c 44 /* #define HAL_DAC_MODULE_ENABLED */
hudakz 0:fa952828e34c 45 /* #define HAL_DCMI_MODULE_ENABLED */
hudakz 0:fa952828e34c 46 /* #define HAL_DMA2D_MODULE_ENABLED */
hudakz 0:fa952828e34c 47 /* #define HAL_ETH_MODULE_ENABLED */
hudakz 0:fa952828e34c 48 /* #define HAL_NAND_MODULE_ENABLED */
hudakz 0:fa952828e34c 49 /* #define HAL_NOR_MODULE_ENABLED */
hudakz 0:fa952828e34c 50 /* #define HAL_PCCARD_MODULE_ENABLED */
hudakz 0:fa952828e34c 51 #define HAL_SRAM_MODULE_ENABLED
hudakz 0:fa952828e34c 52 /* #define HAL_SDRAM_MODULE_ENABLED */
hudakz 0:fa952828e34c 53 /* #define HAL_HASH_MODULE_ENABLED */
hudakz 0:fa952828e34c 54 /* #define HAL_I2C_MODULE_ENABLED */
hudakz 0:fa952828e34c 55 /* #define HAL_I2S_MODULE_ENABLED */
hudakz 0:fa952828e34c 56 /* #define HAL_IWDG_MODULE_ENABLED */
hudakz 0:fa952828e34c 57 /* #define HAL_LTDC_MODULE_ENABLED */
hudakz 0:fa952828e34c 58 /* #define HAL_RNG_MODULE_ENABLED */
hudakz 0:fa952828e34c 59 /* #define HAL_RTC_MODULE_ENABLED */
hudakz 0:fa952828e34c 60 /* #define HAL_SAI_MODULE_ENABLED */
hudakz 0:fa952828e34c 61 /* #define HAL_SD_MODULE_ENABLED */
hudakz 0:fa952828e34c 62 /* #define HAL_MMC_MODULE_ENABLED */
hudakz 0:fa952828e34c 63 /* #define HAL_SPI_MODULE_ENABLED */
hudakz 0:fa952828e34c 64 /* #define HAL_TIM_MODULE_ENABLED */
hudakz 0:fa952828e34c 65 /* #define HAL_UART_MODULE_ENABLED */
hudakz 0:fa952828e34c 66 /* #define HAL_USART_MODULE_ENABLED */
hudakz 0:fa952828e34c 67 /* #define HAL_IRDA_MODULE_ENABLED */
hudakz 0:fa952828e34c 68 /* #define HAL_SMARTCARD_MODULE_ENABLED */
hudakz 0:fa952828e34c 69 /* #define HAL_SMBUS_MODULE_ENABLED */
hudakz 0:fa952828e34c 70 /* #define HAL_WWDG_MODULE_ENABLED */
hudakz 0:fa952828e34c 71 /* #define HAL_PCD_MODULE_ENABLED */
hudakz 0:fa952828e34c 72 /* #define HAL_HCD_MODULE_ENABLED */
hudakz 0:fa952828e34c 73 /* #define HAL_DSI_MODULE_ENABLED */
hudakz 0:fa952828e34c 74 /* #define HAL_QSPI_MODULE_ENABLED */
hudakz 0:fa952828e34c 75 /* #define HAL_QSPI_MODULE_ENABLED */
hudakz 0:fa952828e34c 76 /* #define HAL_CEC_MODULE_ENABLED */
hudakz 0:fa952828e34c 77 /* #define HAL_FMPI2C_MODULE_ENABLED */
hudakz 0:fa952828e34c 78 /* #define HAL_SPDIFRX_MODULE_ENABLED */
hudakz 0:fa952828e34c 79 /* #define HAL_DFSDM_MODULE_ENABLED */
hudakz 0:fa952828e34c 80 /* #define HAL_LPTIM_MODULE_ENABLED */
hudakz 0:fa952828e34c 81 #define HAL_GPIO_MODULE_ENABLED
hudakz 0:fa952828e34c 82 #define HAL_EXTI_MODULE_ENABLED
hudakz 0:fa952828e34c 83 #define HAL_DMA_MODULE_ENABLED
hudakz 0:fa952828e34c 84 #define HAL_RCC_MODULE_ENABLED
hudakz 0:fa952828e34c 85 #define HAL_FLASH_MODULE_ENABLED
hudakz 0:fa952828e34c 86 #define HAL_PWR_MODULE_ENABLED
hudakz 0:fa952828e34c 87 #define HAL_CORTEX_MODULE_ENABLED
hudakz 0:fa952828e34c 88
hudakz 0:fa952828e34c 89 /* ########################## HSE/HSI Values adaptation ##################### */
hudakz 0:fa952828e34c 90 /**
hudakz 0:fa952828e34c 91 * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
hudakz 0:fa952828e34c 92 * This value is used by the RCC HAL module to compute the system frequency
hudakz 0:fa952828e34c 93 * (when HSE is used as system clock source, directly or through the PLL).
hudakz 0:fa952828e34c 94 */
hudakz 0:fa952828e34c 95 #if !defined (HSE_VALUE)
hudakz 0:fa952828e34c 96 #define HSE_VALUE ((uint32_t)8000000U) /*!< Value of the External oscillator in Hz */
hudakz 0:fa952828e34c 97 #endif /* HSE_VALUE */
hudakz 0:fa952828e34c 98
hudakz 0:fa952828e34c 99 #if !defined (HSE_STARTUP_TIMEOUT)
hudakz 0:fa952828e34c 100 #define HSE_STARTUP_TIMEOUT ((uint32_t)100U) /*!< Time out for HSE start up, in ms */
hudakz 0:fa952828e34c 101 #endif /* HSE_STARTUP_TIMEOUT */
hudakz 0:fa952828e34c 102
hudakz 0:fa952828e34c 103 /**
hudakz 0:fa952828e34c 104 * @brief Internal High Speed oscillator (HSI) value.
hudakz 0:fa952828e34c 105 * This value is used by the RCC HAL module to compute the system frequency
hudakz 0:fa952828e34c 106 * (when HSI is used as system clock source, directly or through the PLL).
hudakz 0:fa952828e34c 107 */
hudakz 0:fa952828e34c 108 #if !defined (HSI_VALUE)
hudakz 0:fa952828e34c 109 #define HSI_VALUE ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/
hudakz 0:fa952828e34c 110 #endif /* HSI_VALUE */
hudakz 0:fa952828e34c 111
hudakz 0:fa952828e34c 112 /**
hudakz 0:fa952828e34c 113 * @brief Internal Low Speed oscillator (LSI) value.
hudakz 0:fa952828e34c 114 */
hudakz 0:fa952828e34c 115 #if !defined (LSI_VALUE)
hudakz 0:fa952828e34c 116 #define LSI_VALUE ((uint32_t)32000U) /*!< LSI Typical Value in Hz*/
hudakz 0:fa952828e34c 117 #endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
hudakz 0:fa952828e34c 118 The real value may vary depending on the variations
hudakz 0:fa952828e34c 119 in voltage and temperature.*/
hudakz 0:fa952828e34c 120 /**
hudakz 0:fa952828e34c 121 * @brief External Low Speed oscillator (LSE) value.
hudakz 0:fa952828e34c 122 */
hudakz 0:fa952828e34c 123 #if !defined (LSE_VALUE)
hudakz 0:fa952828e34c 124 #define LSE_VALUE ((uint32_t)32768U) /*!< Value of the External Low Speed oscillator in Hz */
hudakz 0:fa952828e34c 125 #endif /* LSE_VALUE */
hudakz 0:fa952828e34c 126
hudakz 0:fa952828e34c 127 #if !defined (LSE_STARTUP_TIMEOUT)
hudakz 0:fa952828e34c 128 #define LSE_STARTUP_TIMEOUT ((uint32_t)5000U) /*!< Time out for LSE start up, in ms */
hudakz 0:fa952828e34c 129 #endif /* LSE_STARTUP_TIMEOUT */
hudakz 0:fa952828e34c 130
hudakz 0:fa952828e34c 131 /**
hudakz 0:fa952828e34c 132 * @brief External clock source for I2S peripheral
hudakz 0:fa952828e34c 133 * This value is used by the I2S HAL module to compute the I2S clock source
hudakz 0:fa952828e34c 134 * frequency, this source is inserted directly through I2S_CKIN pad.
hudakz 0:fa952828e34c 135 */
hudakz 0:fa952828e34c 136 #if !defined (EXTERNAL_CLOCK_VALUE)
hudakz 0:fa952828e34c 137 #define EXTERNAL_CLOCK_VALUE ((uint32_t)12288000U) /*!< Value of the External audio frequency in Hz*/
hudakz 0:fa952828e34c 138 #endif /* EXTERNAL_CLOCK_VALUE */
hudakz 0:fa952828e34c 139
hudakz 0:fa952828e34c 140 /* Tip: To avoid modifying this file each time you need to use different HSE,
hudakz 0:fa952828e34c 141 === you can define the HSE value in your toolchain compiler preprocessor. */
hudakz 0:fa952828e34c 142
hudakz 0:fa952828e34c 143 /* ########################### System Configuration ######################### */
hudakz 0:fa952828e34c 144 /**
hudakz 0:fa952828e34c 145 * @brief This is the HAL system configuration section
hudakz 0:fa952828e34c 146 */
hudakz 0:fa952828e34c 147 #define VDD_VALUE ((uint32_t)3300U) /*!< Value of VDD in mv */
hudakz 0:fa952828e34c 148 #define TICK_INT_PRIORITY ((uint32_t)0U) /*!< tick interrupt priority */
hudakz 0:fa952828e34c 149 #define USE_RTOS 0U
hudakz 0:fa952828e34c 150 #define PREFETCH_ENABLE 1U
hudakz 0:fa952828e34c 151 #define INSTRUCTION_CACHE_ENABLE 1U
hudakz 0:fa952828e34c 152 #define DATA_CACHE_ENABLE 1U
hudakz 0:fa952828e34c 153
hudakz 0:fa952828e34c 154 /* ########################## Assert Selection ############################## */
hudakz 0:fa952828e34c 155 /**
hudakz 0:fa952828e34c 156 * @brief Uncomment the line below to expanse the "assert_param" macro in the
hudakz 0:fa952828e34c 157 * HAL drivers code
hudakz 0:fa952828e34c 158 */
hudakz 0:fa952828e34c 159 /* #define USE_FULL_ASSERT 1U */
hudakz 0:fa952828e34c 160
hudakz 0:fa952828e34c 161 /* ################## Ethernet peripheral configuration ##################### */
hudakz 0:fa952828e34c 162
hudakz 0:fa952828e34c 163 /* Section 1 : Ethernet peripheral configuration */
hudakz 0:fa952828e34c 164
hudakz 0:fa952828e34c 165 /* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */
hudakz 0:fa952828e34c 166 #define MAC_ADDR0 2U
hudakz 0:fa952828e34c 167 #define MAC_ADDR1 0U
hudakz 0:fa952828e34c 168 #define MAC_ADDR2 0U
hudakz 0:fa952828e34c 169 #define MAC_ADDR3 0U
hudakz 0:fa952828e34c 170 #define MAC_ADDR4 0U
hudakz 0:fa952828e34c 171 #define MAC_ADDR5 0U
hudakz 0:fa952828e34c 172
hudakz 0:fa952828e34c 173 /* Definition of the Ethernet driver buffers size and count */
hudakz 0:fa952828e34c 174 #define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */
hudakz 0:fa952828e34c 175 #define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */
hudakz 0:fa952828e34c 176 #define ETH_RXBUFNB ((uint32_t)4U) /* 4 Rx buffers of size ETH_RX_BUF_SIZE */
hudakz 0:fa952828e34c 177 #define ETH_TXBUFNB ((uint32_t)4U) /* 4 Tx buffers of size ETH_TX_BUF_SIZE */
hudakz 0:fa952828e34c 178
hudakz 0:fa952828e34c 179 /* Section 2: PHY configuration section */
hudakz 0:fa952828e34c 180
hudakz 0:fa952828e34c 181 /* DP83848_PHY_ADDRESS Address*/
hudakz 0:fa952828e34c 182 #define DP83848_PHY_ADDRESS 0x01U
hudakz 0:fa952828e34c 183 /* PHY Reset delay these values are based on a 1 ms Systick interrupt*/
hudakz 0:fa952828e34c 184 #define PHY_RESET_DELAY ((uint32_t)0x000000FFU)
hudakz 0:fa952828e34c 185 /* PHY Configuration delay */
hudakz 0:fa952828e34c 186 #define PHY_CONFIG_DELAY ((uint32_t)0x00000FFFU)
hudakz 0:fa952828e34c 187
hudakz 0:fa952828e34c 188 #define PHY_READ_TO ((uint32_t)0x0000FFFFU)
hudakz 0:fa952828e34c 189 #define PHY_WRITE_TO ((uint32_t)0x0000FFFFU)
hudakz 0:fa952828e34c 190
hudakz 0:fa952828e34c 191 /* Section 3: Common PHY Registers */
hudakz 0:fa952828e34c 192
hudakz 0:fa952828e34c 193 #define PHY_BCR ((uint16_t)0x0000U) /*!< Transceiver Basic Control Register */
hudakz 0:fa952828e34c 194 #define PHY_BSR ((uint16_t)0x0001U) /*!< Transceiver Basic Status Register */
hudakz 0:fa952828e34c 195
hudakz 0:fa952828e34c 196 #define PHY_RESET ((uint16_t)0x8000U) /*!< PHY Reset */
hudakz 0:fa952828e34c 197 #define PHY_LOOPBACK ((uint16_t)0x4000U) /*!< Select loop-back mode */
hudakz 0:fa952828e34c 198 #define PHY_FULLDUPLEX_100M ((uint16_t)0x2100U) /*!< Set the full-duplex mode at 100 Mb/s */
hudakz 0:fa952828e34c 199 #define PHY_HALFDUPLEX_100M ((uint16_t)0x2000U) /*!< Set the half-duplex mode at 100 Mb/s */
hudakz 0:fa952828e34c 200 #define PHY_FULLDUPLEX_10M ((uint16_t)0x0100U) /*!< Set the full-duplex mode at 10 Mb/s */
hudakz 0:fa952828e34c 201 #define PHY_HALFDUPLEX_10M ((uint16_t)0x0000U) /*!< Set the half-duplex mode at 10 Mb/s */
hudakz 0:fa952828e34c 202 #define PHY_AUTONEGOTIATION ((uint16_t)0x1000U) /*!< Enable auto-negotiation function */
hudakz 0:fa952828e34c 203 #define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200U) /*!< Restart auto-negotiation function */
hudakz 0:fa952828e34c 204 #define PHY_POWERDOWN ((uint16_t)0x0800U) /*!< Select the power down mode */
hudakz 0:fa952828e34c 205 #define PHY_ISOLATE ((uint16_t)0x0400U) /*!< Isolate PHY from MII */
hudakz 0:fa952828e34c 206
hudakz 0:fa952828e34c 207 #define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020U) /*!< Auto-Negotiation process completed */
hudakz 0:fa952828e34c 208 #define PHY_LINKED_STATUS ((uint16_t)0x0004U) /*!< Valid link established */
hudakz 0:fa952828e34c 209 #define PHY_JABBER_DETECTION ((uint16_t)0x0002U) /*!< Jabber condition detected */
hudakz 0:fa952828e34c 210
hudakz 0:fa952828e34c 211 /* Section 4: Extended PHY Registers */
hudakz 0:fa952828e34c 212 #define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */
hudakz 0:fa952828e34c 213
hudakz 0:fa952828e34c 214 #define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */
hudakz 0:fa952828e34c 215 #define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */
hudakz 0:fa952828e34c 216
hudakz 0:fa952828e34c 217 /* ################## SPI peripheral configuration ########################## */
hudakz 0:fa952828e34c 218
hudakz 0:fa952828e34c 219 /* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver
hudakz 0:fa952828e34c 220 * Activated: CRC code is present inside driver
hudakz 0:fa952828e34c 221 * Deactivated: CRC code cleaned from driver
hudakz 0:fa952828e34c 222 */
hudakz 0:fa952828e34c 223
hudakz 0:fa952828e34c 224 #define USE_SPI_CRC 0U
hudakz 0:fa952828e34c 225
hudakz 0:fa952828e34c 226 /* Includes ------------------------------------------------------------------*/
hudakz 0:fa952828e34c 227 /**
hudakz 0:fa952828e34c 228 * @brief Include module's header file
hudakz 0:fa952828e34c 229 */
hudakz 0:fa952828e34c 230
hudakz 0:fa952828e34c 231 #ifdef HAL_RCC_MODULE_ENABLED
hudakz 0:fa952828e34c 232 #include "stm32f4xx_hal_rcc.h"
hudakz 0:fa952828e34c 233 #endif /* HAL_RCC_MODULE_ENABLED */
hudakz 0:fa952828e34c 234
hudakz 0:fa952828e34c 235 #ifdef HAL_EXTI_MODULE_ENABLED
hudakz 0:fa952828e34c 236 #include "stm32f4xx_hal_exti.h"
hudakz 0:fa952828e34c 237 #endif /* HAL_EXTI_MODULE_ENABLED */
hudakz 0:fa952828e34c 238
hudakz 0:fa952828e34c 239 #ifdef HAL_GPIO_MODULE_ENABLED
hudakz 0:fa952828e34c 240 #include "stm32f4xx_hal_gpio.h"
hudakz 0:fa952828e34c 241 #endif /* HAL_GPIO_MODULE_ENABLED */
hudakz 0:fa952828e34c 242
hudakz 0:fa952828e34c 243 #ifdef HAL_DMA_MODULE_ENABLED
hudakz 0:fa952828e34c 244 #include "stm32f4xx_hal_dma.h"
hudakz 0:fa952828e34c 245 #endif /* HAL_DMA_MODULE_ENABLED */
hudakz 0:fa952828e34c 246
hudakz 0:fa952828e34c 247 #ifdef HAL_CORTEX_MODULE_ENABLED
hudakz 0:fa952828e34c 248 #include "stm32f4xx_hal_cortex.h"
hudakz 0:fa952828e34c 249 #endif /* HAL_CORTEX_MODULE_ENABLED */
hudakz 0:fa952828e34c 250
hudakz 0:fa952828e34c 251 #ifdef HAL_ADC_MODULE_ENABLED
hudakz 0:fa952828e34c 252 #include "stm32f4xx_hal_adc.h"
hudakz 0:fa952828e34c 253 #endif /* HAL_ADC_MODULE_ENABLED */
hudakz 0:fa952828e34c 254
hudakz 0:fa952828e34c 255 #ifdef HAL_CAN_MODULE_ENABLED
hudakz 0:fa952828e34c 256 #include "stm32f4xx_hal_can.h"
hudakz 0:fa952828e34c 257 #endif /* HAL_CAN_MODULE_ENABLED */
hudakz 0:fa952828e34c 258
hudakz 0:fa952828e34c 259 #ifdef HAL_CRC_MODULE_ENABLED
hudakz 0:fa952828e34c 260 #include "stm32f4xx_hal_crc.h"
hudakz 0:fa952828e34c 261 #endif /* HAL_CRC_MODULE_ENABLED */
hudakz 0:fa952828e34c 262
hudakz 0:fa952828e34c 263 #ifdef HAL_CRYP_MODULE_ENABLED
hudakz 0:fa952828e34c 264 #include "stm32f4xx_hal_cryp.h"
hudakz 0:fa952828e34c 265 #endif /* HAL_CRYP_MODULE_ENABLED */
hudakz 0:fa952828e34c 266
hudakz 0:fa952828e34c 267 #ifdef HAL_SMBUS_MODULE_ENABLED
hudakz 0:fa952828e34c 268 #include "stm32f4xx_hal_smbus.h"
hudakz 0:fa952828e34c 269 #endif /* HAL_SMBUS_MODULE_ENABLED */
hudakz 0:fa952828e34c 270
hudakz 0:fa952828e34c 271 #ifdef HAL_DMA2D_MODULE_ENABLED
hudakz 0:fa952828e34c 272 #include "stm32f4xx_hal_dma2d.h"
hudakz 0:fa952828e34c 273 #endif /* HAL_DMA2D_MODULE_ENABLED */
hudakz 0:fa952828e34c 274
hudakz 0:fa952828e34c 275 #ifdef HAL_DAC_MODULE_ENABLED
hudakz 0:fa952828e34c 276 #include "stm32f4xx_hal_dac.h"
hudakz 0:fa952828e34c 277 #endif /* HAL_DAC_MODULE_ENABLED */
hudakz 0:fa952828e34c 278
hudakz 0:fa952828e34c 279 #ifdef HAL_DCMI_MODULE_ENABLED
hudakz 0:fa952828e34c 280 #include "stm32f4xx_hal_dcmi.h"
hudakz 0:fa952828e34c 281 #endif /* HAL_DCMI_MODULE_ENABLED */
hudakz 0:fa952828e34c 282
hudakz 0:fa952828e34c 283 #ifdef HAL_ETH_MODULE_ENABLED
hudakz 0:fa952828e34c 284 #include "stm32f4xx_hal_eth.h"
hudakz 0:fa952828e34c 285 #endif /* HAL_ETH_MODULE_ENABLED */
hudakz 0:fa952828e34c 286
hudakz 0:fa952828e34c 287 #ifdef HAL_FLASH_MODULE_ENABLED
hudakz 0:fa952828e34c 288 #include "stm32f4xx_hal_flash.h"
hudakz 0:fa952828e34c 289 #endif /* HAL_FLASH_MODULE_ENABLED */
hudakz 0:fa952828e34c 290
hudakz 0:fa952828e34c 291 #ifdef HAL_SRAM_MODULE_ENABLED
hudakz 0:fa952828e34c 292 #include "stm32f4xx_hal_sram.h"
hudakz 0:fa952828e34c 293 #endif /* HAL_SRAM_MODULE_ENABLED */
hudakz 0:fa952828e34c 294
hudakz 0:fa952828e34c 295 #ifdef HAL_NOR_MODULE_ENABLED
hudakz 0:fa952828e34c 296 #include "stm32f4xx_hal_nor.h"
hudakz 0:fa952828e34c 297 #endif /* HAL_NOR_MODULE_ENABLED */
hudakz 0:fa952828e34c 298
hudakz 0:fa952828e34c 299 #ifdef HAL_NAND_MODULE_ENABLED
hudakz 0:fa952828e34c 300 #include "stm32f4xx_hal_nand.h"
hudakz 0:fa952828e34c 301 #endif /* HAL_NAND_MODULE_ENABLED */
hudakz 0:fa952828e34c 302
hudakz 0:fa952828e34c 303 #ifdef HAL_PCCARD_MODULE_ENABLED
hudakz 0:fa952828e34c 304 #include "stm32f4xx_hal_pccard.h"
hudakz 0:fa952828e34c 305 #endif /* HAL_PCCARD_MODULE_ENABLED */
hudakz 0:fa952828e34c 306
hudakz 0:fa952828e34c 307 #ifdef HAL_SDRAM_MODULE_ENABLED
hudakz 0:fa952828e34c 308 #include "stm32f4xx_hal_sdram.h"
hudakz 0:fa952828e34c 309 #endif /* HAL_SDRAM_MODULE_ENABLED */
hudakz 0:fa952828e34c 310
hudakz 0:fa952828e34c 311 #ifdef HAL_HASH_MODULE_ENABLED
hudakz 0:fa952828e34c 312 #include "stm32f4xx_hal_hash.h"
hudakz 0:fa952828e34c 313 #endif /* HAL_HASH_MODULE_ENABLED */
hudakz 0:fa952828e34c 314
hudakz 0:fa952828e34c 315 #ifdef HAL_I2C_MODULE_ENABLED
hudakz 0:fa952828e34c 316 #include "stm32f4xx_hal_i2c.h"
hudakz 0:fa952828e34c 317 #endif /* HAL_I2C_MODULE_ENABLED */
hudakz 0:fa952828e34c 318
hudakz 0:fa952828e34c 319 #ifdef HAL_I2S_MODULE_ENABLED
hudakz 0:fa952828e34c 320 #include "stm32f4xx_hal_i2s.h"
hudakz 0:fa952828e34c 321 #endif /* HAL_I2S_MODULE_ENABLED */
hudakz 0:fa952828e34c 322
hudakz 0:fa952828e34c 323 #ifdef HAL_IWDG_MODULE_ENABLED
hudakz 0:fa952828e34c 324 #include "stm32f4xx_hal_iwdg.h"
hudakz 0:fa952828e34c 325 #endif /* HAL_IWDG_MODULE_ENABLED */
hudakz 0:fa952828e34c 326
hudakz 0:fa952828e34c 327 #ifdef HAL_LTDC_MODULE_ENABLED
hudakz 0:fa952828e34c 328 #include "stm32f4xx_hal_ltdc.h"
hudakz 0:fa952828e34c 329 #endif /* HAL_LTDC_MODULE_ENABLED */
hudakz 0:fa952828e34c 330
hudakz 0:fa952828e34c 331 #ifdef HAL_PWR_MODULE_ENABLED
hudakz 0:fa952828e34c 332 #include "stm32f4xx_hal_pwr.h"
hudakz 0:fa952828e34c 333 #endif /* HAL_PWR_MODULE_ENABLED */
hudakz 0:fa952828e34c 334
hudakz 0:fa952828e34c 335 #ifdef HAL_RNG_MODULE_ENABLED
hudakz 0:fa952828e34c 336 #include "stm32f4xx_hal_rng.h"
hudakz 0:fa952828e34c 337 #endif /* HAL_RNG_MODULE_ENABLED */
hudakz 0:fa952828e34c 338
hudakz 0:fa952828e34c 339 #ifdef HAL_RTC_MODULE_ENABLED
hudakz 0:fa952828e34c 340 #include "stm32f4xx_hal_rtc.h"
hudakz 0:fa952828e34c 341 #endif /* HAL_RTC_MODULE_ENABLED */
hudakz 0:fa952828e34c 342
hudakz 0:fa952828e34c 343 #ifdef HAL_SAI_MODULE_ENABLED
hudakz 0:fa952828e34c 344 #include "stm32f4xx_hal_sai.h"
hudakz 0:fa952828e34c 345 #endif /* HAL_SAI_MODULE_ENABLED */
hudakz 0:fa952828e34c 346
hudakz 0:fa952828e34c 347 #ifdef HAL_SD_MODULE_ENABLED
hudakz 0:fa952828e34c 348 #include "stm32f4xx_hal_sd.h"
hudakz 0:fa952828e34c 349 #endif /* HAL_SD_MODULE_ENABLED */
hudakz 0:fa952828e34c 350
hudakz 0:fa952828e34c 351 #ifdef HAL_MMC_MODULE_ENABLED
hudakz 0:fa952828e34c 352 #include "stm32f4xx_hal_mmc.h"
hudakz 0:fa952828e34c 353 #endif /* HAL_MMC_MODULE_ENABLED */
hudakz 0:fa952828e34c 354
hudakz 0:fa952828e34c 355 #ifdef HAL_SPI_MODULE_ENABLED
hudakz 0:fa952828e34c 356 #include "stm32f4xx_hal_spi.h"
hudakz 0:fa952828e34c 357 #endif /* HAL_SPI_MODULE_ENABLED */
hudakz 0:fa952828e34c 358
hudakz 0:fa952828e34c 359 #ifdef HAL_TIM_MODULE_ENABLED
hudakz 0:fa952828e34c 360 #include "stm32f4xx_hal_tim.h"
hudakz 0:fa952828e34c 361 #endif /* HAL_TIM_MODULE_ENABLED */
hudakz 0:fa952828e34c 362
hudakz 0:fa952828e34c 363 #ifdef HAL_UART_MODULE_ENABLED
hudakz 0:fa952828e34c 364 #include "stm32f4xx_hal_uart.h"
hudakz 0:fa952828e34c 365 #endif /* HAL_UART_MODULE_ENABLED */
hudakz 0:fa952828e34c 366
hudakz 0:fa952828e34c 367 #ifdef HAL_USART_MODULE_ENABLED
hudakz 0:fa952828e34c 368 #include "stm32f4xx_hal_usart.h"
hudakz 0:fa952828e34c 369 #endif /* HAL_USART_MODULE_ENABLED */
hudakz 0:fa952828e34c 370
hudakz 0:fa952828e34c 371 #ifdef HAL_IRDA_MODULE_ENABLED
hudakz 0:fa952828e34c 372 #include "stm32f4xx_hal_irda.h"
hudakz 0:fa952828e34c 373 #endif /* HAL_IRDA_MODULE_ENABLED */
hudakz 0:fa952828e34c 374
hudakz 0:fa952828e34c 375 #ifdef HAL_SMARTCARD_MODULE_ENABLED
hudakz 0:fa952828e34c 376 #include "stm32f4xx_hal_smartcard.h"
hudakz 0:fa952828e34c 377 #endif /* HAL_SMARTCARD_MODULE_ENABLED */
hudakz 0:fa952828e34c 378
hudakz 0:fa952828e34c 379 #ifdef HAL_WWDG_MODULE_ENABLED
hudakz 0:fa952828e34c 380 #include "stm32f4xx_hal_wwdg.h"
hudakz 0:fa952828e34c 381 #endif /* HAL_WWDG_MODULE_ENABLED */
hudakz 0:fa952828e34c 382
hudakz 0:fa952828e34c 383 #ifdef HAL_PCD_MODULE_ENABLED
hudakz 0:fa952828e34c 384 #include "stm32f4xx_hal_pcd.h"
hudakz 0:fa952828e34c 385 #endif /* HAL_PCD_MODULE_ENABLED */
hudakz 0:fa952828e34c 386
hudakz 0:fa952828e34c 387 #ifdef HAL_HCD_MODULE_ENABLED
hudakz 0:fa952828e34c 388 #include "stm32f4xx_hal_hcd.h"
hudakz 0:fa952828e34c 389 #endif /* HAL_HCD_MODULE_ENABLED */
hudakz 0:fa952828e34c 390
hudakz 0:fa952828e34c 391 #ifdef HAL_DSI_MODULE_ENABLED
hudakz 0:fa952828e34c 392 #include "stm32f4xx_hal_dsi.h"
hudakz 0:fa952828e34c 393 #endif /* HAL_DSI_MODULE_ENABLED */
hudakz 0:fa952828e34c 394
hudakz 0:fa952828e34c 395 #ifdef HAL_QSPI_MODULE_ENABLED
hudakz 0:fa952828e34c 396 #include "stm32f4xx_hal_qspi.h"
hudakz 0:fa952828e34c 397 #endif /* HAL_QSPI_MODULE_ENABLED */
hudakz 0:fa952828e34c 398
hudakz 0:fa952828e34c 399 #ifdef HAL_CEC_MODULE_ENABLED
hudakz 0:fa952828e34c 400 #include "stm32f4xx_hal_cec.h"
hudakz 0:fa952828e34c 401 #endif /* HAL_CEC_MODULE_ENABLED */
hudakz 0:fa952828e34c 402
hudakz 0:fa952828e34c 403 #ifdef HAL_FMPI2C_MODULE_ENABLED
hudakz 0:fa952828e34c 404 #include "stm32f4xx_hal_fmpi2c.h"
hudakz 0:fa952828e34c 405 #endif /* HAL_FMPI2C_MODULE_ENABLED */
hudakz 0:fa952828e34c 406
hudakz 0:fa952828e34c 407 #ifdef HAL_SPDIFRX_MODULE_ENABLED
hudakz 0:fa952828e34c 408 #include "stm32f4xx_hal_spdifrx.h"
hudakz 0:fa952828e34c 409 #endif /* HAL_SPDIFRX_MODULE_ENABLED */
hudakz 0:fa952828e34c 410
hudakz 0:fa952828e34c 411 #ifdef HAL_DFSDM_MODULE_ENABLED
hudakz 0:fa952828e34c 412 #include "stm32f4xx_hal_dfsdm.h"
hudakz 0:fa952828e34c 413 #endif /* HAL_DFSDM_MODULE_ENABLED */
hudakz 0:fa952828e34c 414
hudakz 0:fa952828e34c 415 #ifdef HAL_LPTIM_MODULE_ENABLED
hudakz 0:fa952828e34c 416 #include "stm32f4xx_hal_lptim.h"
hudakz 0:fa952828e34c 417 #endif /* HAL_LPTIM_MODULE_ENABLED */
hudakz 0:fa952828e34c 418
hudakz 0:fa952828e34c 419 /* Exported macro ------------------------------------------------------------*/
hudakz 0:fa952828e34c 420 #ifdef USE_FULL_ASSERT
hudakz 0:fa952828e34c 421 /**
hudakz 0:fa952828e34c 422 * @brief The assert_param macro is used for function's parameters check.
hudakz 0:fa952828e34c 423 * @param expr: If expr is false, it calls assert_failed function
hudakz 0:fa952828e34c 424 * which reports the name of the source file and the source
hudakz 0:fa952828e34c 425 * line number of the call that failed.
hudakz 0:fa952828e34c 426 * If expr is true, it returns no value.
hudakz 0:fa952828e34c 427 * @retval None
hudakz 0:fa952828e34c 428 */
hudakz 0:fa952828e34c 429 #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
hudakz 0:fa952828e34c 430 /* Exported functions ------------------------------------------------------- */
hudakz 0:fa952828e34c 431 void assert_failed(uint8_t* file, uint32_t line);
hudakz 0:fa952828e34c 432 #else
hudakz 0:fa952828e34c 433 #define assert_param(expr) ((void)0U)
hudakz 0:fa952828e34c 434 #endif /* USE_FULL_ASSERT */
hudakz 0:fa952828e34c 435
hudakz 0:fa952828e34c 436 #ifdef __cplusplus
hudakz 0:fa952828e34c 437 }
hudakz 0:fa952828e34c 438 #endif
hudakz 0:fa952828e34c 439
hudakz 0:fa952828e34c 440 #endif /* __STM32F4xx_HAL_CONF_H */
hudakz 0:fa952828e34c 441
hudakz 0:fa952828e34c 442
hudakz 0:fa952828e34c 443 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
hudakz 0:fa952828e34c 444