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.
Below is the brief story of what I did:
- Created a project for my STM32F407VE board in the STM32CubeIDE
- Set the
Clock Configuration
to match the one used by Mbed for the Seeed Arch Max board:
- Selected
FSMC
in theConnectivity
category and configured it as below: - 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 themain.c
content of theSTM32CubeIDE
project. Copy & Pasted
the other files with codes from theSTM32CubeIDE
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 aFSMC_8
protocol and replaced theTFT::set_orientation(int orient)
function with the one used bymcufriend
for arduino. - Modified the
main.cpp
as needed.
Wiring
STM32F407VE | TFT LCD module |
---|---|
+3.3V | 3V3 |
GND | GND |
PB_12 | LCD_RST |
GND | LCD_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 protocol | BUS_8 | FSMC_8 |
Operation \ Time | ms | ms |
Clear | 2283.980 | 38.454 |
Plot | 192.066 | 11.365 |
8bit BMP | 63.805 | 41.338 |
Large Font | 163.872 | 7.895 |
Sparce pixels | 2072.265/1458.051 | 74.107/52.168 |
16bit BMP | 2288.589 | 59.904 |
stm32f4xx_hal_conf.h@0:fa952828e34c, 2020-05-10 (annotated)
- 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?
User | Revision | Line number | New 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>© 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 |