Template project for running EEZ Flow firmware project using STM32F469I-DISCO development board
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

362 lines
11 KiB

/**
******************************************************************************
* @file stm32469i_discovery.h
* @author MCD Application Team
* @brief This file contains definitions for STM32469I-Discovery LEDs,
* push-buttons hardware resources.
******************************************************************************
* @attention
*
* Copyright (c) 2017 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* IMPORTANT: One of the following flags must be defined in the preprocessor */
/* options in order to select the target board revision: !!!!!!!!!! */
/* USE_STM32469I_DISCO_REVA */
/* USE_STM32469I_DISCO_REVB */
/* USE_STM32469I_DISCO_REVC */
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __STM32469I_DISCOVERY_H
#define __STM32469I_DISCOVERY_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "stm32f4xx_hal.h"
/** @addtogroup BSP
* @{
*/
/** @addtogroup STM32469I_Discovery
* @{
*/
/** @addtogroup STM32469I_Discovery_LOW_LEVEL
* @{
*/
/** @defgroup STM32469I_Discovery_LOW_LEVEL_Exported_Types STM32469I Discovery LOW LEVEL Exported Types
* @{
*/
/** @brief Led_TypeDef
* STM32469I_Discovery board leds definitions.
*/
typedef enum
{
LED1 = 0,
LED_GREEN = LED1,
LED2 = 1,
LED_ORANGE = LED2,
LED3 = 2,
LED_RED = LED3,
LED4 = 3,
LED_BLUE = LED4
} Led_TypeDef;
/** @brief Button_TypeDef
* STM32469I_Discovery board Buttons definitions.
*/
typedef enum
{
BUTTON_WAKEUP = 0
} Button_TypeDef;
#define BUTTON_USER BUTTON_WAKEUP
/** @brief ButtonMode_TypeDef
* STM32469I_Discovery board Buttons Modes definitions.
*/
typedef enum
{
BUTTON_MODE_GPIO = 0,
BUTTON_MODE_EXTI = 1
} ButtonMode_TypeDef;
/** @addtogroup Exported_types
* @{
*/
typedef enum
{
PB_SET = 0,
PB_RESET = !PB_SET
} ButtonValue_TypeDef;
/** @brief DISCO_Status_TypeDef
* STM32469I_DISCO board Status return possible values.
*/
typedef enum
{
DISCO_OK = 0,
DISCO_ERROR = 1
} DISCO_Status_TypeDef;
/**
* @}
*/
/**
* @}
*/
/** @defgroup STM32469I_Discovery_LOW_LEVEL_Exported_Constants STM32469I Discovery LOW LEVEL Exported Constants
* @{
*/
/** @defgroup STM32469I_Discovery_LOW_LEVEL_LED STM32469I Discovery LOW LEVEL LED
* @{
*/
/* Always four leds for all revisions of Discovery boards */
#define LEDn ((uint8_t)4)
/* 4 Leds are connected to MCU directly on PG6, PD4, PD5, PK3 */
#define LED1_GPIO_PORT ((GPIO_TypeDef*)GPIOG)
#define LED2_GPIO_PORT ((GPIO_TypeDef*)GPIOD)
#define LED3_GPIO_PORT ((GPIO_TypeDef*)GPIOD)
#define LED4_GPIO_PORT ((GPIO_TypeDef*)GPIOK)
#define LED1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
#define LED1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
#define LED2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
#define LED2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
#define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
#define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
#define LED4_GPIO_CLK_ENABLE() __HAL_RCC_GPIOK_CLK_ENABLE()
#define LED4_GPIO_CLK_DISABLE() __HAL_RCC_GPIOK_CLK_DISABLE()
#define LED1_PIN ((uint32_t)GPIO_PIN_6)
#define LED2_PIN ((uint32_t)GPIO_PIN_4)
#define LED3_PIN ((uint32_t)GPIO_PIN_5)
#define LED4_PIN ((uint32_t)GPIO_PIN_3)
/**
* @}
*/
/** @addtogroup STM32469I_Discovery_LOW_LEVEL_BUTTON STM32469I Discovery LOW LEVEL BUTTON
* @{
*/
/* Only one User/Wakeup button */
#define BUTTONn ((uint8_t)1)
/**
* @brief Wakeup push-button
*/
#define WAKEUP_BUTTON_PIN GPIO_PIN_0
#define WAKEUP_BUTTON_GPIO_PORT GPIOA
#define WAKEUP_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
#define WAKEUP_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
#define WAKEUP_BUTTON_EXTI_IRQn EXTI0_IRQn
/* Define the USER button as an alias of the Wakeup button */
#define USER_BUTTON_PIN WAKEUP_BUTTON_PIN
#define USER_BUTTON_GPIO_PORT WAKEUP_BUTTON_GPIO_PORT
#define USER_BUTTON_GPIO_CLK_ENABLE() WAKEUP_BUTTON_GPIO_CLK_ENABLE()
#define USER_BUTTON_GPIO_CLK_DISABLE() WAKEUP_BUTTON_GPIO_CLK_DISABLE()
#define USER_BUTTON_EXTI_IRQn WAKEUP_BUTTON_EXTI_IRQn
#define BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
/**
* @}
*/
/**
* @brief OTG_FS1 OVER_CURRENT and POWER_SWITCH Pins definition
*/
#define AUDIO_INT_PIN GPIO_PIN_7
#define AUDIO_INT_PORT GPIOB
#define AUDIO_INT_PORT_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
#define OTG_FS1_OVER_CURRENT_PIN GPIO_PIN_7
#define OTG_FS1_OVER_CURRENT_PORT GPIOB
#define OTG_FS1_OVER_CURRENT_PORT_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
#define OTG_FS1_POWER_SWITCH_PIN GPIO_PIN_2
#define OTG_FS1_POWER_SWITCH_PORT GPIOB
#define OTG_FS1_POWER_SWITCH_PORT_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
/**
* @brief SD-detect signal
*/
#define SD_DETECT_PIN ((uint32_t)GPIO_PIN_2)
#define SD_DETECT_GPIO_PORT ((GPIO_TypeDef*)GPIOG)
#define SD_DETECT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
#define SD_DETECT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
#define SD_DETECT_EXTI_IRQn EXTI2_IRQn
/**
* @brief TS_INT signal from TouchScreen when it is configured in interrupt mode
*/
#define TS_INT_PIN ((uint32_t)GPIO_PIN_5)
#define TS_INT_GPIO_PORT ((GPIO_TypeDef*)GPIOJ)
#define TS_INT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOJ_CLK_ENABLE()
#define TS_INT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOJ_CLK_DISABLE()
#define TS_INT_EXTI_IRQn EXTI9_5_IRQn
/**
* @brief TouchScreen FT6206 Slave I2C address 1
*/
#define TS_I2C_ADDRESS ((uint16_t)0x54)
/**
* @brief TouchScreen FT6336G Slave I2C address 2
*/
#define TS_I2C_ADDRESS_A02 ((uint16_t)0x70)
/**
* @brief Audio I2C Slave address
*/
#define AUDIO_I2C_ADDRESS ((uint16_t)0x94)
/**
* @brief EEPROM I2C Slave address 1
*/
#define EEPROM_I2C_ADDRESS_A01 ((uint16_t)0xA0)
/**
* @brief EEPROM I2C Slave address 2
*/
#define EEPROM_I2C_ADDRESS_A02 ((uint16_t)0xA6)
/**
* @brief I2C clock speed configuration (in Hz)
* WARNING:
* Make sure that this define is not already declared in other files
* It can be used in parallel by other modules.
*/
#ifndef I2C1_SCL_FREQ_KHZ
#define I2C1_SCL_FREQ_KHZ 400000 /*!< f(I2C_SCL) = 400 kHz */
#endif /* I2C1_SCL_FREQ_KHZ */
/**
* @brief User can use this section to tailor I2C1/I2C1 instance used and associated
* resources.
* Definition for I2C1 clock resources
*/
#define DISCO_I2C1 I2C1
#define DISCO_I2C1_CLK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE()
#define DISCO_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
#define DISCO_I2C1_SCL_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
#define DISCO_I2C1_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
#define DISCO_I2C1_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
/** @brief Definition for I2C1 Pins
*/
#define DISCO_I2C1_SCL_PIN GPIO_PIN_8 /*!< PB8 */
#define DISCO_I2C1_SCL_SDA_GPIO_PORT GPIOB
#define DISCO_I2C1_SCL_SDA_AF GPIO_AF4_I2C1
#define DISCO_I2C1_SDA_PIN GPIO_PIN_9 /*!< PB9 */
/** @brief Definition of I2C interrupt requests
*/
#define DISCO_I2C1_EV_IRQn I2C1_EV_IRQn
#define DISCO_I2C1_ER_IRQn I2C1_ER_IRQn
/**
* @brief I2C2 clock speed configuration (in Hz)
* WARNING:
* Make sure that this define is not already declared in other files
* It can be used in parallel by other modules.
*/
#ifndef I2C2_SCL_FREQ_KHZ
#define I2C2_SCL_FREQ_KHZ 100000 /*!< f(I2C2_SCL) < 100 kHz */
#endif /* I2C2_SCL_FREQ_KHZ */
/**
* @brief User can use this section to tailor I2C2/I2C2 instance used and associated
* resources (audio codec).
* Definition for I2C2 clock resources
*/
#define DISCO_I2C2 I2C2
#define DISCO_I2C2_CLK_ENABLE() __HAL_RCC_I2C2_CLK_ENABLE()
#define DISCO_I2C2_SCL_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOH_CLK_ENABLE()
#define DISCO_I2C2_FORCE_RESET() __HAL_RCC_I2C2_FORCE_RESET()
#define DISCO_I2C2_RELEASE_RESET() __HAL_RCC_I2C2_RELEASE_RESET()
/** @brief Definition for I2C2 Pins
*/
#define DISCO_I2C2_SCL_PIN GPIO_PIN_4 /*!< PH4 */
#define DISCO_I2C2_SCL_SDA_GPIO_PORT GPIOH
#define DISCO_I2C2_SCL_SDA_AF GPIO_AF4_I2C2
#define DISCO_I2C2_SDA_PIN GPIO_PIN_5 /*!< PH5 */
/** @brief Definition of I2C2 interrupt requests
*/
#define DISCO_I2C2_EV_IRQn I2C2_EV_IRQn
#define DISCO_I2C2_ER_IRQn I2C2_ER_IRQn
#if !defined(USE_STM32469I_DISCO_REVA) && \
!defined(USE_STM32469I_DISCO_REVB) && \
!defined(USE_STM32469I_DISCO_REVC)
#define USE_STM32469I_DISCO_REVC
#endif
/**
* @}
*/
/** @defgroup STM32469I_Discovery_LOW_LEVEL_Exported_Macros STM32469I Discovery LOW LEVEL Exported Macros
* @{
*/
/**
* @}
*/
/** @defgroup STM32469I_Discovery_LOW_LEVEL_Exported_Functions STM32469I Discovery LOW LEVEL Exported Functions
* @{
*/
uint32_t BSP_GetVersion(void);
void BSP_LED_Init(Led_TypeDef Led);
void BSP_LED_DeInit(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 Button_Mode);
void BSP_PB_DeInit(Button_TypeDef Button);
uint32_t BSP_PB_GetState(Button_TypeDef Button);
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __STM32469I_DISCOVERY_H */