Jonas Gartmann / BSP_DISCO_F429ZI
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers stm32f429i_discovery.h Source File

stm32f429i_discovery.h

Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32f429i_discovery.h
00004   * @author  MCD Application Team
00005   * @version V2.1.5
00006   * @date    27-January-2017
00007   * @brief   This file contains definitions for STM32F429I-Discovery Kit LEDs,
00008   *          push-buttons hardware resources.
00009   ******************************************************************************
00010   * @attention
00011   *
00012   * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
00013   *
00014   * Redistribution and use in source and binary forms, with or without modification,
00015   * are permitted provided that the following conditions are met:
00016   *   1. Redistributions of source code must retain the above copyright notice,
00017   *      this list of conditions and the following disclaimer.
00018   *   2. Redistributions in binary form must reproduce the above copyright notice,
00019   *      this list of conditions and the following disclaimer in the documentation
00020   *      and/or other materials provided with the distribution.
00021   *   3. Neither the name of STMicroelectronics nor the names of its contributors
00022   *      may be used to endorse or promote products derived from this software
00023   *      without specific prior written permission.
00024   *
00025   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00026   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00027   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00028   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00029   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00030   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00031   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00032   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00033   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00034   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00035   *
00036   ******************************************************************************
00037   */
00038 
00039 /* Define to prevent recursive inclusion -------------------------------------*/
00040 #ifndef __STM32F429I_DISCOVERY_H
00041 #define __STM32F429I_DISCOVERY_H
00042 
00043 #ifdef __cplusplus
00044  extern "C" {
00045 #endif
00046                                               
00047 /* Includes ------------------------------------------------------------------*/
00048 #include "stm32f4xx_hal.h"
00049 
00050 #define EE_M24LR64 1 // Added for mbed
00051 
00052 /** @addtogroup BSP
00053   * @{
00054   */
00055   
00056 /** @addtogroup STM32F429I_DISCOVERY
00057   * @{
00058   */
00059    
00060 /** @addtogroup STM32F429I_DISCOVERY_LOW_LEVEL
00061   * @{
00062   */
00063    
00064 /** @addtogroup STM32F429I_DISCOVERY_LOW_LEVEL_Exported_Types STM32F429I DISCOVERY LOW LEVEL Exported Types
00065   * @{
00066   */
00067 typedef enum 
00068 {
00069   DISCO_LED3 = 0,
00070   DISCO_LED4 = 1
00071 }Led_TypeDef;
00072 
00073 typedef enum 
00074 {  
00075   BUTTON_KEY = 0,
00076 }Button_TypeDef;
00077 
00078 typedef enum 
00079 {  
00080   BUTTON_MODE_GPIO = 0,
00081   BUTTON_MODE_EXTI = 1
00082 }ButtonMode_TypeDef;     
00083 
00084 /**
00085   * @}
00086   */ 
00087 
00088 /** @defgroup STM32F429I_DISCOVERY_LOW_LEVEL_Exported_Constants STM32F429I DISCOVERY LOW LEVEL Exported Constants
00089   * @{
00090   */ 
00091 
00092 /** 
00093   * @brief Define for STM32F429I_DISCO board  
00094   */ 
00095 #if !defined (USE_STM32F429I_DISCO)
00096  #define USE_STM32F429I_DISCO
00097 #endif
00098 
00099 /** @defgroup STM32F429I_DISCOVERY_LOW_LEVEL_LED STM32F429I DISCOVERY LOW LEVEL LED
00100   * @{
00101   */
00102 #define LEDn                                    2
00103   
00104 #define LED3_PIN                                GPIO_PIN_13
00105 #define LED3_GPIO_PORT                          GPIOG
00106 #define LED3_GPIO_CLK_ENABLE()                  __HAL_RCC_GPIOG_CLK_ENABLE()  
00107 #define LED3_GPIO_CLK_DISABLE()                 __HAL_RCC_GPIOG_CLK_DISABLE()  
00108 
00109 #define LED4_PIN                                GPIO_PIN_14
00110 #define LED4_GPIO_PORT                          GPIOG
00111 #define LED4_GPIO_CLK_ENABLE()                  __HAL_RCC_GPIOG_CLK_ENABLE()  
00112 #define LED4_GPIO_CLK_DISABLE()                 __HAL_RCC_GPIOG_CLK_DISABLE()  
00113 
00114 #define LEDx_GPIO_CLK_ENABLE(__INDEX__)  do{if((__INDEX__) == 0) LED3_GPIO_CLK_ENABLE(); else \
00115                                             if((__INDEX__) == 1) LED4_GPIO_CLK_ENABLE(); \
00116                                             }while(0)
00117 #define LEDx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) LED3_GPIO_CLK_DISABLE(); else \
00118                                             if((__INDEX__) == 1) LED4_GPIO_CLK_DISABLE(); \
00119                                             }while(0)
00120 /**
00121   * @}
00122   */ 
00123   
00124 /** @defgroup STM32F429I_DISCOVERY_LOW_LEVEL_BUTTON STM32F429I DISCOVERY LOW LEVEL BUTTON
00125   * @{
00126   */  
00127 #define BUTTONn                                1
00128 
00129 /**
00130  * @brief Wakeup push-button
00131  */
00132 #define KEY_BUTTON_PIN                         GPIO_PIN_0
00133 #define KEY_BUTTON_GPIO_PORT                   GPIOA
00134 #define KEY_BUTTON_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOA_CLK_ENABLE()
00135 #define KEY_BUTTON_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOA_CLK_DISABLE()
00136 #define KEY_BUTTON_EXTI_IRQn                   EXTI0_IRQn
00137 
00138 #define BUTTONx_GPIO_CLK_ENABLE(__INDEX__)     do{if((__INDEX__) == 0) KEY_BUTTON_GPIO_CLK_ENABLE(); \
00139                                                  }while(0)
00140 #define BUTTONx_GPIO_CLK_DISABLE(__INDEX__)    do{if((__INDEX__) == 0) KEY_BUTTON_GPIO_CLK_DISABLE(); \
00141                                                  }while(0)
00142 /**
00143   * @}
00144   */
00145 
00146 /** @defgroup STM32F429I_DISCOVERY_LOW_LEVEL_BUS STM32F429I DISCOVERY LOW LEVEL BUS
00147   * @{
00148   */  
00149 /* Exported constanIO --------------------------------------------------------*/
00150 #define IO_I2C_ADDRESS                      0x82 
00151 #define TS_I2C_ADDRESS                      0x82
00152 
00153 #ifdef EE_M24LR64
00154 #define EEPROM_I2C_ADDRESS_A01              0xA0
00155 #define EEPROM_I2C_ADDRESS_A02              0xA6
00156 #endif /* EE_M24LR64 */ 
00157 
00158 /*############################### I2Cx #######################################*/
00159 /* User can use this section to tailor I2Cx instance used and associated 
00160    resources */
00161 #define DISCOVERY_I2Cx                          I2C3
00162 #define DISCOVERY_I2Cx_CLOCK_ENABLE()           __HAL_RCC_I2C3_CLK_ENABLE()
00163 #define DISCOVERY_I2Cx_FORCE_RESET()            __HAL_RCC_I2C3_FORCE_RESET()
00164 #define DISCOVERY_I2Cx_RELEASE_RESET()          __HAL_RCC_I2C3_RELEASE_RESET()
00165 #define DISCOVERY_I2Cx_SDA_GPIO_CLK_ENABLE()    __HAL_RCC_GPIOC_CLK_ENABLE()
00166 #define DISCOVERY_I2Cx_SCL_GPIO_CLK_ENABLE()    __HAL_RCC_GPIOA_CLK_ENABLE() 
00167 #define DISCOVERY_I2Cx_SDA_GPIO_CLK_DISABLE()   __HAL_RCC_GPIOC_CLK_DISABLE()
00168 
00169 /* Definition for DISCO I2Cx Pins */
00170 #define DISCOVERY_I2Cx_SCL_PIN                  GPIO_PIN_8
00171 #define DISCOVERY_I2Cx_SCL_GPIO_PORT            GPIOA
00172 #define DISCOVERY_I2Cx_SCL_SDA_AF               GPIO_AF4_I2C3
00173 #define DISCOVERY_I2Cx_SDA_PIN                  GPIO_PIN_9
00174 #define DISCOVERY_I2Cx_SDA_GPIO_PORT            GPIOC
00175 
00176 /* Definition for IOE I2Cx's NVIC */
00177 #define DISCOVERY_I2Cx_EV_IRQn                  I2C3_EV_IRQn
00178 #define DISCOVERY_I2Cx_ER_IRQn                  I2C3_ER_IRQn
00179 
00180 /* I2C clock speed configuration (in Hz) 
00181   WARNING: 
00182    Make sure that this define is not already declared in other files.
00183    It can be used in parallel by other modules. */
00184 #ifndef BSP_I2C_SPEED
00185  #define BSP_I2C_SPEED                          100000
00186 #endif /* BSP_I2C_SPEED */
00187 
00188 #define I2Cx_TIMEOUT_MAX                    0x3000 /*<! The value of the maximal timeout for I2C waiting loops */
00189 
00190 /*############################### SPIx #######################################*/
00191 #define DISCOVERY_SPIx                          SPI5
00192 #define DISCOVERY_SPIx_CLK_ENABLE()             __HAL_RCC_SPI5_CLK_ENABLE()
00193 #define DISCOVERY_SPIx_GPIO_PORT                GPIOF                      /* GPIOF */
00194 #define DISCOVERY_SPIx_AF                       GPIO_AF5_SPI5
00195 #define DISCOVERY_SPIx_GPIO_CLK_ENABLE()        __HAL_RCC_GPIOF_CLK_ENABLE()
00196 #define DISCOVERY_SPIx_GPIO_CLK_DISABLE()       __HAL_RCC_GPIOF_CLK_DISABLE()
00197 #define DISCOVERY_SPIx_SCK_PIN                  GPIO_PIN_7                 /* PF.07 */
00198 #define DISCOVERY_SPIx_MISO_PIN                 GPIO_PIN_8                 /* PF.08 */
00199 #define DISCOVERY_SPIx_MOSI_PIN                 GPIO_PIN_9                 /* PF.09 */
00200 /* Maximum Timeout values for flags waiting loops. These timeouts are not based
00201    on accurate values, they just guarantee that the application will not remain
00202    stuck if the SPI communication is corrupted.
00203    You may modify these timeout values depending on CPU frequency and application
00204    conditions (interrupts routines ...). */   
00205 #define SPIx_TIMEOUT_MAX              ((uint32_t)0x1000)
00206 
00207 
00208 /*################################ IOE #######################################*/
00209 /** 
00210   * @brief  IOE Control pin  
00211   */ 
00212 /* Definition for external IT for STMPE811 */
00213 #define STMPE811_INT_PIN                        GPIO_PIN_15
00214 #define STMPE811_INT_GPIO_PORT                  GPIOA
00215 #define STMPE811_INT_CLK_ENABLE()               __HAL_RCC_GPIOA_CLK_ENABLE()
00216 #define STMPE811_INT_CLK_DISABLE()              __HAL_RCC_GPIOA_CLK_DISABLE()
00217 #define STMPE811_INT_EXTI                       EXTI15_10_IRQn
00218 #define STMPE811_INT_EXTIHandler                EXTI15_10_IRQHandler
00219 
00220 /*################################ LCD #######################################*/
00221 /* Chip Select macro definition */
00222 #define LCD_CS_LOW()       HAL_GPIO_WritePin(LCD_NCS_GPIO_PORT, LCD_NCS_PIN, GPIO_PIN_RESET)
00223 #define LCD_CS_HIGH()      HAL_GPIO_WritePin(LCD_NCS_GPIO_PORT, LCD_NCS_PIN, GPIO_PIN_SET)
00224 
00225 /* Set WRX High to send data */
00226 #define LCD_WRX_LOW()      HAL_GPIO_WritePin(LCD_WRX_GPIO_PORT, LCD_WRX_PIN, GPIO_PIN_RESET)
00227 #define LCD_WRX_HIGH()     HAL_GPIO_WritePin(LCD_WRX_GPIO_PORT, LCD_WRX_PIN, GPIO_PIN_SET)
00228 
00229 /* Set WRX High to send data */
00230 #define LCD_RDX_LOW()      HAL_GPIO_WritePin(LCD_RDX_GPIO_PORT, LCD_RDX_PIN, GPIO_PIN_RESET)
00231 #define LCD_RDX_HIGH()     HAL_GPIO_WritePin(LCD_RDX_GPIO_PORT, LCD_RDX_PIN, GPIO_PIN_SET)
00232 
00233 /** 
00234   * @brief  LCD Control pin  
00235   */ 
00236 #define LCD_NCS_PIN                             GPIO_PIN_2
00237 #define LCD_NCS_GPIO_PORT                       GPIOC
00238 #define LCD_NCS_GPIO_CLK_ENABLE()               __HAL_RCC_GPIOC_CLK_ENABLE()
00239 #define LCD_NCS_GPIO_CLK_DISABLE()              __HAL_RCC_GPIOC_CLK_DISABLE()
00240 /**             
00241   * @}
00242   */ 
00243 /** 
00244   * @brief  LCD Command/data pin  
00245   */
00246 #define LCD_WRX_PIN                             GPIO_PIN_13
00247 #define LCD_WRX_GPIO_PORT                       GPIOD
00248 #define LCD_WRX_GPIO_CLK_ENABLE()               __HAL_RCC_GPIOD_CLK_ENABLE()
00249 #define LCD_WRX_GPIO_CLK_DISABLE()              __HAL_RCC_GPIOD_CLK_DISABLE()
00250   
00251 #define LCD_RDX_PIN                             GPIO_PIN_12
00252 #define LCD_RDX_GPIO_PORT                       GPIOD
00253 #define LCD_RDX_GPIO_CLK_ENABLE()               __HAL_RCC_GPIOD_CLK_ENABLE()
00254 #define LCD_RDX_GPIO_CLK_DISABLE()              __HAL_RCC_GPIOD_CLK_DISABLE()
00255 
00256 /*################################ GYROSCOPE #################################*/
00257 /* Read/Write command */
00258 #define READWRITE_CMD              ((uint8_t)0x80) 
00259 /* Multiple byte read/write command */ 
00260 #define MULTIPLEBYTE_CMD           ((uint8_t)0x40)
00261 /* Dummy Byte Send by the SPI Master device in order to generate the Clock to the Slave device */
00262 #define DUMMY_BYTE                 ((uint8_t)0x00)
00263 
00264 /* Chip Select macro definition */
00265 #define GYRO_CS_LOW()       HAL_GPIO_WritePin(GYRO_CS_GPIO_PORT, GYRO_CS_PIN, GPIO_PIN_RESET)
00266 #define GYRO_CS_HIGH()      HAL_GPIO_WritePin(GYRO_CS_GPIO_PORT, GYRO_CS_PIN, GPIO_PIN_SET)
00267 
00268 /**
00269   * @brief  GYROSCOPE SPI Interface pins
00270   */
00271 #define GYRO_CS_PIN                             GPIO_PIN_1                  /* PC.01 */
00272 #define GYRO_CS_GPIO_PORT                       GPIOC                       /* GPIOC */
00273 #define GYRO_CS_GPIO_CLK_ENABLE()               __HAL_RCC_GPIOC_CLK_ENABLE()
00274 #define GYRO_CS_GPIO_CLK_DISABLE()              __HAL_RCC_GPIOC_CLK_DISABLE()
00275 
00276 #define GYRO_INT_GPIO_CLK_ENABLE()              __HAL_RCC_GPIOA_CLK_ENABLE()
00277 #define GYRO_INT_GPIO_CLK_DISABLE()             __HAL_RCC_GPIOA_CLK_DISABLE()
00278 #define GYRO_INT_GPIO_PORT                      GPIOA                       /* GPIOA */
00279 #define GYRO_INT1_PIN                           GPIO_PIN_1                  /* PA.01 */
00280 #define GYRO_INT1_EXTI_IRQn                     EXTI1_IRQn 
00281 #define GYRO_INT2_PIN                           GPIO_PIN_2                  /* PA.02 */
00282 #define GYRO_INT2_EXTI_IRQn                     EXTI2_IRQn 
00283 /**
00284   * @}
00285   */ 
00286 
00287 #ifdef EE_M24LR64
00288 /** @defgroup STM32F429I_DISCOVERY_LOW_LEVEL_I2C_EEPROM STM32F429I DISCOVERY LOW LEVEL I2C EEPROM
00289   * @{
00290   */
00291 /**
00292   * @brief  I2C EEPROM Interface pins
00293   */
00294 #define EEPROM_I2C_DMA                          DMA1   
00295 #define EEPROM_I2C_DMA_CHANNEL                  DMA_CHANNEL_3
00296 #define EEPROM_I2C_DMA_STREAM_TX                DMA1_Stream4
00297 #define EEPROM_I2C_DMA_STREAM_RX                DMA1_Stream2
00298 #define EEPROM_I2C_DMA_CLK_ENABLE()             __HAL_RCC_DMA1_CLK_ENABLE()
00299    
00300 #define EEPROM_I2C_DMA_TX_IRQn                  DMA1_Stream4_IRQn
00301 #define EEPROM_I2C_DMA_RX_IRQn                  DMA1_Stream2_IRQn
00302 #define EEPROM_I2C_DMA_TX_IRQHandler            DMA1_Stream4_IRQHandler
00303 #define EEPROM_I2C_DMA_RX_IRQHandler            DMA1_Stream2_IRQHandler
00304 #define EEPROM_I2C_DMA_PREPRIO                  0x0F
00305 /**
00306   * @}
00307   */ 
00308 
00309 #endif /* EE_M24LR64 */
00310 
00311 /** @defgroup STM32F429I_DISCOVERY_LOW_LEVEL_Exported_Macros STM32F429I DISCOVERY LOW LEVEL Exported Macros
00312   * @{
00313   */  
00314 /**
00315   * @}
00316   */ 
00317 
00318 /** @defgroup STM32F429I_DISCOVERY_LOW_LEVEL_Exported_Functions STM32F429I DISCOVERY LOW LEVEL Exported Functions
00319   * @{
00320   */
00321 uint32_t BSP_GetVersion(void);  
00322 void     BSP_LED_Init(Led_TypeDef Led);
00323 void     BSP_LED_On(Led_TypeDef Led);
00324 void     BSP_LED_Off(Led_TypeDef Led);
00325 void     BSP_LED_Toggle(Led_TypeDef Led);
00326 void     BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode);
00327 uint32_t BSP_PB_GetState(Button_TypeDef Button);
00328 
00329 /**
00330   * @}
00331   */ 
00332 
00333 /**
00334   * @}
00335   */ 
00336 
00337 /**
00338   * @}
00339   */
00340 
00341 /**
00342   * @}
00343   */
00344 
00345 #ifdef __cplusplus
00346 }
00347 #endif
00348 
00349 #endif /* __STM32F429I_DISCOVERY_H */
00350 
00351 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/