diff Discovery/Inc/stm32f429i_discovery.h @ 38:5f11787b4f42

include in ostc4 repository
author heinrichsweikamp
date Sat, 28 Apr 2018 11:52:34 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Discovery/Inc/stm32f429i_discovery.h	Sat Apr 28 11:52:34 2018 +0200
@@ -0,0 +1,270 @@
+///////////////////////////////////////////////////////////////////////////////
+/// -*- coding: UTF-8 -*-
+///
+/// \file   Discovery/Inc/stm32f429i_discovery.h
+/// \brief  I2C EEPROM Interface pins
+/// \author MCD Application Team
+/// \date   26-February-2014
+///
+/// $Id$
+///////////////////////////////////////////////////////////////////////////////
+/// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh
+///
+///     This program is free software: you can redistribute it and/or modify
+///     it under the terms of the GNU General Public License as published by
+///     the Free Software Foundation, either version 3 of the License, or
+///     (at your option) any later version.
+///
+///     This program is distributed in the hope that it will be useful,
+///     but WITHOUT ANY WARRANTY; without even the implied warranty of
+///     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+///     GNU General Public License for more details.
+///
+///     You should have received a copy of the GNU General Public License
+///     along with this program.  If not, see <http://www.gnu.org/licenses/>.
+//////////////////////////////////////////////////////////////////////////////
+/// \par COPYRIGHT(c) 2014 STMicroelectronics
+///
+/// Redistribution and use in source and binary forms, with or without modification,
+/// are permitted provided that the following conditions are met:
+///   1. Redistributions of source code must retain the above copyright notice,
+///      this list of conditions and the following disclaimer.
+///   2. Redistributions in binary form must reproduce the above copyright notice,
+///      this list of conditions and the following disclaimer in the documentation
+///      and/or other materials provided with the distribution.
+///   3. Neither the name of STMicroelectronics nor the names of its contributors
+///      may be used to endorse or promote products derived from this software
+///      without specific prior written permission.
+///
+/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+/// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+/// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+/// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+/// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+/// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+/// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+/// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//////////////////////////////////////////////////////////////////////////////
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef STM32F429I_DISCOVERY_H
+#define STM32F429I_DISCOVERY_H
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f4xx_hal.h"
+
+typedef enum
+{
+    LED3 = 0,
+    LED4 = 1
+} Led_TypeDef;
+
+typedef enum
+{
+    BUTTON_KEY = 0,
+} Button_TypeDef;
+
+typedef enum
+{
+    BUTTON_MODE_GPIO = 0,
+    BUTTON_MODE_EXTI = 1
+} ButtonMode_TypeDef;
+
+#if !defined (USE_STM32F429I_DISCO)
+ #define USE_STM32F429I_DISCO
+#endif
+
+#define LEDn                                2
+
+#define LED3_PIN                            GPIO_PIN_13
+#define LED3_GPIO_PORT                      GPIOG
+#define LED3_GPIO_CLK_ENABLE()              __GPIOG_CLK_ENABLE()
+#define LED3_GPIO_CLK_DISABLE()             __GPIOG_CLK_DISABLE()
+
+
+#define LED4_PIN                            GPIO_PIN_14
+#define LED4_GPIO_PORT                      GPIOG
+#define LED4_GPIO_CLK_ENABLE()              __GPIOG_CLK_ENABLE()
+#define LED4_GPIO_CLK_DISABLE()             __GPIOG_CLK_DISABLE()
+
+#define LEDx_GPIO_CLK_ENABLE(__INDEX__)     (((__INDEX__) == 0) ? LED3_GPIO_CLK_ENABLE() : LED4_GPIO_CLK_ENABLE())
+#define LEDx_GPIO_CLK_DISABLE(__INDEX__)    (((__INDEX__) == 0) ? LED3_GPIO_CLK_DISABLE() : LED4_GPIO_CLK_DISABLE())
+
+#define BUTTONn                             1
+
+/**
+ * @brief Wakeup push-button
+ */
+#define KEY_BUTTON_PIN                      GPIO_PIN_0
+#define KEY_BUTTON_GPIO_PORT                GPIOA
+#define KEY_BUTTON_GPIO_CLK_ENABLE()        __GPIOA_CLK_ENABLE()
+#define KEY_BUTTON_GPIO_CLK_DISABLE()       __GPIOA_CLK_DISABLE()
+#define KEY_BUTTON_EXTI_IRQn                EXTI0_IRQn
+
+#define BUTTONx_GPIO_CLK_ENABLE(__INDEX__)  (KEY_BUTTON_GPIO_CLK_ENABLE())
+#define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) (KEY_BUTTON_GPIO_CLK_DISABLE())
+
+/* Exported constanIO --------------------------------------------------------*/
+#define IO_I2C_ADDRESS                      0x82
+#define TS_I2C_ADDRESS                      0x82
+
+#ifdef EE_M24LR64
+#define EEPROM_I2C_ADDRESS_A01              0xA0
+#define EEPROM_I2C_ADDRESS_A02              0xA6
+#endif /* EE_M24LR64 */
+
+
+/*##################### I2Cx ###################################*/
+/* User can use this section to tailor I2Cx instance used and associated
+     resources */
+#define DISCOVERY_I2Cx                          I2C3
+#define DISCOVERY_I2Cx_CLOCK_ENABLE()           __I2C3_CLK_ENABLE()
+#define DISCOVERY_I2Cx_FORCE_RESET()            __I2C3_FORCE_RESET()
+#define DISCOVERY_I2Cx_RELEASE_RESET()          __I2C3_RELEASE_RESET()
+#define DISCOVERY_I2Cx_SDA_GPIO_CLK_ENABLE()    __GPIOC_CLK_ENABLE()
+#define DISCOVERY_I2Cx_SCL_GPIO_CLK_ENABLE()    __GPIOA_CLK_ENABLE()
+#define DISCOVERY_I2Cx_SDA_GPIO_CLK_DISABLE()   __GPIOC_CLK_DISABLE()
+
+/* Definition for DISCO I2Cx Pins */
+#define DISCOVERY_I2Cx_SCL_PIN                  GPIO_PIN_8
+#define DISCOVERY_I2Cx_SCL_GPIO_PORT            GPIOA
+#define DISCOVERY_I2Cx_SCL_SDA_AF               GPIO_AF4_I2C3
+#define DISCOVERY_I2Cx_SDA_PIN                  GPIO_PIN_9
+#define DISCOVERY_I2Cx_SDA_GPIO_PORT            GPIOC
+
+/* Definition for IOE I2Cx's NVIC */
+#define DISCOVERY_I2Cx_EV_IRQn                  I2C3_EV_IRQn
+#define DISCOVERY_I2Cx_ER_IRQn                  I2C3_ER_IRQn
+
+/* I2C clock speed configuration (in Hz)
+    WARNING:
+     Make sure that this define is not already declared in other files (ie.
+    stm324x9i_disco.h file). It can be used in parallel by other modules. */
+#ifndef I2C_SPEED
+ #define I2C_SPEED                              100000
+#endif /* I2C_SPEED */
+
+#define I2Cx_TIMEOUT_MAX                        0x3000 /*<! The value of the maximal timeout for I2C waiting loops */
+
+/*##################### SPIx ###################################*/
+#define DISCOVERY_SPIx                          SPI5
+#define DISCOVERY_SPIx_CLK_ENABLE()             __SPI5_CLK_ENABLE()
+#define DISCOVERY_SPIx_GPIO_PORT                GPIOF                      /* GPIOF */
+#define DISCOVERY_SPIx_AF                       GPIO_AF5_SPI5
+#define DISCOVERY_SPIx_GPIO_CLK_ENABLE()        __GPIOF_CLK_ENABLE()
+#define DISCOVERY_SPIx_GPIO_CLK_DISABLE()       __GPIOF_CLK_DISABLE()
+#define DISCOVERY_SPIx_SCK_PIN                  GPIO_PIN_7                 /* PF.07 */
+#define DISCOVERY_SPIx_MISO_PIN                 GPIO_PIN_8                 /* PF.08 */
+#define DISCOVERY_SPIx_MOSI_PIN                 GPIO_PIN_9                 /* PF.09 */
+/* Maximum Timeout values for flags waiting loops. These timeouts are not based
+     on accurate values, they just guarantee that the application will not remain
+     stuck if the SPI communication is corrupted.
+     You may modify these timeout values depending on CPU frequency and application
+     conditions (interrupts routines ...). */
+#define SPIx_TIMEOUT_MAX                        ((uint32_t)0x1000)
+
+
+/*##################### IOE ###################################*/
+/**
+    * @brief  IOE Control pin
+    */
+/* Definition for external IT for STMPE811 */
+#define STMPE811_INT_PIN                        GPIO_PIN_15
+#define STMPE811_INT_GPIO_PORT                  GPIOA
+#define STMPE811_INT_CLK_ENABLE()               __GPIOA_CLK_ENABLE()
+#define STMPE811_INT_CLK_DISABLE()              __GPIOA_CLK_DISABLE()
+#define STMPE811_INT_EXTI                       EXTI15_10_IRQn
+#define STMPE811_INT_EXTIHandler                EXTI15_10_IRQHandler
+
+/*##################### LCD ###################################*/
+/* Chip Select macro definition */
+#define LCD_CS_LOW()                            HAL_GPIO_WritePin(LCD_NCS_GPIO_PORT, LCD_NCS_PIN, GPIO_PIN_RESET)
+#define LCD_CS_HIGH()                           HAL_GPIO_WritePin(LCD_NCS_GPIO_PORT, LCD_NCS_PIN, GPIO_PIN_SET)
+
+/* Set WRX High to send data */
+#define LCD_WRX_LOW()                           HAL_GPIO_WritePin(LCD_WRX_GPIO_PORT, LCD_WRX_PIN, GPIO_PIN_RESET)
+#define LCD_WRX_HIGH()                          HAL_GPIO_WritePin(LCD_WRX_GPIO_PORT, LCD_WRX_PIN, GPIO_PIN_SET)
+
+/* Set WRX High to send data */
+#define LCD_RDX_LOW()                           HAL_GPIO_WritePin(LCD_RDX_GPIO_PORT, LCD_RDX_PIN, GPIO_PIN_RESET)
+#define LCD_RDX_HIGH()                          HAL_GPIO_WritePin(LCD_RDX_GPIO_PORT, LCD_RDX_PIN, GPIO_PIN_SET)
+
+/**
+    * @brief  LCD Control pin
+    */
+#define LCD_NCS_PIN                             GPIO_PIN_2
+#define LCD_NCS_GPIO_PORT                       GPIOC
+#define LCD_NCS_GPIO_CLK_ENABLE()               __GPIOC_CLK_ENABLE()
+#define LCD_NCS_GPIO_CLK_DISABLE()              __GPIOC_CLK_DISABLE()
+
+/**
+    * @brief  LCD Command/data pin
+    */
+#define LCD_WRX_PIN                             GPIO_PIN_13
+#define LCD_WRX_GPIO_PORT                       GPIOD
+#define LCD_WRX_GPIO_CLK_ENABLE()               __GPIOD_CLK_ENABLE()
+#define LCD_WRX_GPIO_CLK_DISABLE()              __GPIOD_CLK_DISABLE()
+
+#define LCD_RDX_PIN                             GPIO_PIN_12
+#define LCD_RDX_GPIO_PORT                       GPIOD
+#define LCD_RDX_GPIO_CLK_ENABLE()               __GPIOD_CLK_ENABLE()
+#define LCD_RDX_GPIO_CLK_DISABLE()              __GPIOD_CLK_DISABLE()
+
+/*##################### GYRO ##########################*/
+/* Read/Write command */
+#define READWRITE_CMD                           ((uint8_t)0x80)
+/* Multiple byte read/write command */
+#define MULTIPLEBYTE_CMD                        ((uint8_t)0x40)
+/* Dummy Byte Send by the SPI Master device in order to generate the Clock to the Slave device */
+#define DUMMY_BYTE                              ((uint8_t)0x00)
+
+/* Chip Select macro definition */
+#define GYRO_CS_LOW()                           HAL_GPIO_WritePin(GYRO_CS_GPIO_PORT, GYRO_CS_PIN, GPIO_PIN_RESET)
+#define GYRO_CS_HIGH()                          HAL_GPIO_WritePin(GYRO_CS_GPIO_PORT, GYRO_CS_PIN, GPIO_PIN_SET)
+
+/**
+    * @brief  GYRO SPI Interface pins
+    */
+#define GYRO_CS_PIN                             GPIO_PIN_1                  /* PC.01 */
+#define GYRO_CS_GPIO_PORT                       GPIOC                       /* GPIOC */
+#define GYRO_CS_GPIO_CLK_ENABLE()               __GPIOC_CLK_ENABLE()
+#define GYRO_CS_GPIO_CLK_DISABLE()              __GPIOC_CLK_DISABLE()
+
+#define GYRO_INT_GPIO_CLK_ENABLE()              __GPIOA_CLK_ENABLE()
+#define GYRO_INT_GPIO_CLK_DISABLE()             __GPIOA_CLK_DISABLE()
+#define GYRO_INT_GPIO_PORT                      GPIOA                       /* GPIOA */
+#define GYRO_INT1_PIN                           GPIO_PIN_1                  /* PA.01 */
+#define GYRO_INT1_EXTI_IRQn                     EXTI1_IRQn
+#define GYRO_INT2_PIN                           GPIO_PIN_2                  /* PA.02 */
+#define GYRO_INT2_EXTI_IRQn                     EXTI2_IRQn
+
+#ifdef EE_M24LR64
+
+/**
+    * @brief  I2C EEPROM Interface pins
+    */
+#define EEPROM_I2C_DMA                          DMA1
+#define EEPROM_I2C_DMA_CHANNEL                  DMA_CHANNEL_3
+#define EEPROM_I2C_DMA_STREAM_TX                DMA1_Stream4
+#define EEPROM_I2C_DMA_STREAM_RX                DMA1_Stream2
+#define EEPROM_I2C_DMA_CLK_ENABLE()             __DMA1_CLK_ENABLE()
+
+#define EEPROM_I2C_DMA_TX_IRQn                  DMA1_Stream4_IRQn
+#define EEPROM_I2C_DMA_RX_IRQn                  DMA1_Stream2_IRQn
+#define EEPROM_I2C_DMA_TX_IRQHandler            DMA1_Stream4_IRQHandler
+#define EEPROM_I2C_DMA_RX_IRQHandler            DMA1_Stream2_IRQHandler
+#define EEPROM_I2C_DMA_PREPRIO                  0
+
+#endif /*EE_M24LR64*/
+
+uint32_t  BSP_GetVersion(void);
+void      BSP_LED_Init(Led_TypeDef Led);
+void      BSP_LED_On(Led_TypeDef Led);
+void      BSP_LED_Off(Led_TypeDef Led);
+void      BSP_LED_Toggle(Led_TypeDef Led);
+void      BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode);
+uint32_t  BSP_PB_GetState(Button_TypeDef Button);
+
+#endif /* STM32F429I_DISCOVERY_H */