Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: DiscoLogger DISCO_L476VG_GlassLCD DISCO_L476VG_MicrophoneRecorder DISCO_L476VG_UART ... more
Diff: stm32l476g_discovery.h
- Revision:
- 0:792b4cbebcb6
diff -r 000000000000 -r 792b4cbebcb6 stm32l476g_discovery.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/stm32l476g_discovery.h Fri Aug 28 13:03:38 2015 +0000
@@ -0,0 +1,565 @@
+/**
+ ******************************************************************************
+ * @file stm32l476g_discovery.h
+ * @author MCD Application Team
+ * @version V1.0.0
+ * @date 26-June-2015
+ * @brief This file contains definitions for STM32L476G_DISCOVERY's LEDs,
+ * push-buttons hardware resources (MB1184).
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
+ *
+ * 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 __STM32L476G_DISCOVERY_H
+#define __STM32L476G_DISCOVERY_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/**
+ * @brief Define for STM32L476G_DISCOVERY board
+ */
+#if !defined (USE_STM32L476G_DISCO_REVC) && !defined (USE_STM32L476G_DISCO_REVB) && !defined (USE_STM32L476G_DISCO_REVA)
+#define USE_STM32L476G_DISCO_REVC
+#endif
+
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32l4xx_hal.h"
+
+/** @addtogroup BSP
+ * @{
+ */
+
+/** @addtogroup STM32L476G_DISCOVERY
+ * @{
+ */
+
+/** @addtogroup STM32L476G_DISCOVERY_Common
+ * @{
+ */
+
+/** @defgroup STM32L476G_DISCOVERY_Exported_Types Exported Types
+ * @{
+ */
+
+/**
+ * @brief LED Types Definition
+ */
+#if defined (USE_STM32L476G_DISCO_REVC) || defined (USE_STM32L476G_DISCO_REVB)
+typedef enum
+{
+ DISCO_LED4 = 0,
+ DISCO_LED5 = 1,
+ LED_RED = DISCO_LED4,
+ LED_GREEN = DISCO_LED5
+}Led_TypeDef;
+#elif defined (USE_STM32L476G_DISCO_REVA)
+typedef enum
+{
+ DISCO_LED3 = 0,
+ DISCO_LED4 = 1,
+ LED_RED = DISCO_LED3,
+ LED_GREEN = DISCO_LED4
+}Led_TypeDef;
+#endif
+
+/**
+ * @brief JOYSTICK Types Definition
+ */
+typedef enum
+{
+ JOY_SEL = 0,
+ JOY_LEFT = 1,
+ JOY_RIGHT = 2,
+ JOY_DOWN = 3,
+ JOY_UP = 4,
+ JOY_NONE = 5
+}JOYState_TypeDef;
+
+typedef enum
+{
+ JOY_MODE_GPIO = 0,
+ JOY_MODE_EXTI = 1
+}JOYMode_TypeDef;
+
+typedef enum
+{
+ SUPPLY_MODE_ERROR = 0,
+ SUPPLY_MODE_EXTERNAL = 1,
+ SUPPLY_MODE_BATTERY = 2
+}SupplyMode_TypeDef;
+
+/**
+ * @}
+ */
+
+/** @defgroup STM32L476G_DISCOVERY_Exported_Constants Exported Constants
+ * @{
+ */
+
+/** @defgroup STM32L476G_DISCOVERY_BATTERY BATTERY Detection Constants
+ * @{
+ */
+#define BATTERY_DETECTION_PIN GPIO_PIN_3
+#define BATTERY_DETECTION_GPIO_PORT GPIOB
+#define BATTERY_DETECTION_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
+#define BATTERY_DETECTION_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
+/**
+ * @}
+ */
+
+/** @defgroup STM32L476G_DISCOVERY_LED LED Constants
+ * @{
+ */
+#define LEDn 2
+
+#if defined (USE_STM32L476G_DISCO_REVC) || defined (USE_STM32L476G_DISCO_REVB)
+#define LED4_PIN GPIO_PIN_2
+#define LED4_GPIO_PORT GPIOB
+#define LED4_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
+#define LED4_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
+
+#define LED5_PIN GPIO_PIN_8
+#define LED5_GPIO_PORT GPIOE
+#define LED5_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE()
+#define LED5_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE()
+
+#define LEDx_GPIO_CLK_ENABLE(__LED__) do { if((__LED__) == DISCO_LED4) { LED4_GPIO_CLK_ENABLE(); } else \
+ if((__LED__) == DISCO_LED5) { LED5_GPIO_CLK_ENABLE(); } } while(0)
+
+#define LEDx_GPIO_CLK_DISABLE(__LED__) do { if((__LED__) == DISCO_LED4) { LED4_GPIO_CLK_DISABLE(); } else \
+ if((__LED__) == DISCO_LED5) { LED5_GPIO_CLK_DISABLE(); } } while(0)
+
+#elif defined (USE_STM32L476G_DISCO_REVA)
+#define LED3_PIN GPIO_PIN_2
+#define LED3_GPIO_PORT GPIOB
+#define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
+#define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
+
+#define LED4_PIN GPIO_PIN_8
+#define LED4_GPIO_PORT GPIOE
+#define LED4_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE()
+#define LED4_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE()
+
+#define LEDx_GPIO_CLK_ENABLE(__LED__) do { if((__LED__) == DISCO_LED3) { LED3_GPIO_CLK_ENABLE(); } else \
+ if((__LED__) == DISCO_LED4) { LED4_GPIO_CLK_ENABLE(); } } while(0)
+
+#define LEDx_GPIO_CLK_DISABLE(__LED__) do { if((__LED__) == DISCO_LED3) { LED3_GPIO_CLK_DISABLE(); } else \
+ if((__LED__) == DISCO_LED4) { LED4_GPIO_CLK_DISABLE(); } } while(0)
+
+#endif
+/**
+ * @}
+ */
+
+/** @defgroup STM32L476G_DISCOVERY_BUTTON BUTTON Constants
+ * @{
+ */
+#define JOYn 5
+
+/**
+* @brief Joystick Right push-button
+*/
+#define RIGHT_JOY_PIN GPIO_PIN_2 /* PA.02 */
+#define RIGHT_JOY_GPIO_PORT GPIOA
+#define RIGHT_JOY_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
+#define RIGHT_JOY_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
+#define RIGHT_JOY_EXTI_IRQn EXTI2_IRQn
+
+/**
+* @brief Joystick Left push-button
+*/
+#define LEFT_JOY_PIN GPIO_PIN_1 /* PA.01 */
+#define LEFT_JOY_GPIO_PORT GPIOA
+#define LEFT_JOY_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
+#define LEFT_JOY_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
+#define LEFT_JOY_EXTI_IRQn EXTI1_IRQn
+
+/**
+* @brief Joystick Up push-button
+*/
+#define UP_JOY_PIN GPIO_PIN_3 /* PA.03 */
+#define UP_JOY_GPIO_PORT GPIOA
+#define UP_JOY_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
+#define UP_JOY_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
+#define UP_JOY_EXTI_IRQn EXTI3_IRQn
+
+/**
+ * @brief Joystick Down push-button
+ */
+#define DOWN_JOY_PIN GPIO_PIN_5 /* PA.05 */
+#define DOWN_JOY_GPIO_PORT GPIOA
+#define DOWN_JOY_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
+#define DOWN_JOY_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
+#define DOWN_JOY_EXTI_IRQn EXTI9_5_IRQn
+
+/**
+ * @brief Joystick Sel push-button
+ */
+#define SEL_JOY_PIN GPIO_PIN_0 /* PA.00 */
+#define SEL_JOY_GPIO_PORT GPIOA
+#define SEL_JOY_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
+#define SEL_JOY_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
+#define SEL_JOY_EXTI_IRQn EXTI0_IRQn
+
+#define JOYx_GPIO_CLK_ENABLE(__JOY__) do { if((__JOY__) == JOY_SEL) { SEL_JOY_GPIO_CLK_ENABLE(); } else \
+ if((__JOY__) == JOY_DOWN) { DOWN_JOY_GPIO_CLK_ENABLE(); } else \
+ if((__JOY__) == JOY_LEFT) { LEFT_JOY_GPIO_CLK_ENABLE(); } else \
+ if((__JOY__) == JOY_RIGHT) { RIGHT_JOY_GPIO_CLK_ENABLE(); } else \
+ if((__JOY__) == JOY_UP) { UP_JOY_GPIO_CLK_ENABLE(); } } while(0)
+
+#define JOYx_GPIO_CLK_DISABLE(__JOY__) do { if((__JOY__) == JOY_SEL) { SEL_JOY_GPIO_CLK_DISABLE(); } else \
+ if((__JOY__) == JOY_DOWN) { DOWN_JOY_GPIO_CLK_DISABLE(); } else \
+ if((__JOY__) == JOY_LEFT) { LEFT_JOY_GPIO_CLK_DISABLE(); } else \
+ if((__JOY__) == JOY_RIGHT) { RIGHT_JOY_GPIO_CLK_DISABLE(); } else \
+ if((__JOY__) == JOY_UP) { UP_JOY_GPIO_CLK_DISABLE(); } } while(0)
+
+#define JOY_ALL_PINS (RIGHT_JOY_PIN | LEFT_JOY_PIN | UP_JOY_PIN | DOWN_JOY_PIN | SEL_JOY_PIN)
+
+/**
+ * @}
+ */
+
+/** @defgroup STM32L476G_DISCOVERY_BUS BUS Constants
+ * @{
+ */
+#if defined(HAL_SPI_MODULE_ENABLED)
+/*##################### SPI2 ###################################*/
+#define DISCOVERY_SPIx SPI2
+#define DISCOVERY_SPIx_CLOCK_ENABLE() __HAL_RCC_SPI2_CLK_ENABLE()
+#define DISCOVERY_SPIx_CLOCK_DISABLE() __HAL_RCC_SPI2_CLK_DISABLE()
+#define DISCOVERY_SPIx_GPIO_PORT GPIOD /* GPIOD */
+#define DISCOVERY_SPIx_AF GPIO_AF5_SPI2
+#define DISCOVERY_SPIx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
+#define DISCOVERY_SPIx_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
+#define DISCOVERY_SPIx_GPIO_FORCE_RESET() __HAL_RCC_SPI2_FORCE_RESET()
+#define DISCOVERY_SPIx_GPIO_RELEASE_RESET() __HAL_RCC_SPI2_RELEASE_RESET()
+#define DISCOVERY_SPIx_SCK_PIN GPIO_PIN_1 /* PD.01*/
+#define DISCOVERY_SPIx_MISO_PIN GPIO_PIN_3 /* PD.03 */
+#define DISCOVERY_SPIx_MOSI_PIN GPIO_PIN_4 /* PD.04 */
+
+/* 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)
+/* 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)
+
+#endif /* HAL_SPI_MODULE_ENABLED */
+
+#if defined(HAL_I2C_MODULE_ENABLED)
+/*##################### I2C1 ###################################*/
+/* User can use this section to tailor I2C1 instance used and associated
+ resources */
+/* Definition for I2C1 Pins */
+#define DISCOVERY_I2C1_SCL_GPIO_PORT GPIOB
+#define DISCOVERY_I2C1_SDA_GPIO_PORT GPIOB
+#if defined (USE_STM32L476G_DISCO_REVC) || defined (USE_STM32L476G_DISCO_REVB)
+#define DISCOVERY_I2C1_SCL_PIN GPIO_PIN_6
+#define DISCOVERY_I2C1_SDA_PIN GPIO_PIN_7
+#elif defined (USE_STM32L476G_DISCO_REVA)
+#define DISCOVERY_I2C1_SCL_PIN GPIO_PIN_8
+#define DISCOVERY_I2C1_SDA_PIN GPIO_PIN_9
+#endif
+#define DISCOVERY_I2C1_SCL_SDA_AF GPIO_AF4_I2C1
+
+/* Definition for I2C1 clock resources */
+#define DISCOVERY_I2C1 I2C1
+#define DISCOVERY_I2C1_CLK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE()
+#define DISCOVERY_I2C1_CLK_DISABLE() __HAL_RCC_I2C1_CLK_DISABLE()
+#define DISCOVERY_I2C1_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
+#define DISCOVERY_I2C1_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
+#define DISCOVERY_I2C1_SDA_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
+#define DISCOVERY_I2C1_SCL_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
+#define DISCOVERY_I2C1_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
+#define DISCOVERY_I2C1_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
+
+/* Definition for I2C1's NVIC */
+#define DISCOVERY_I2C1_EV_IRQn I2C1_EV_IRQn
+#define DISCOVERY_I2C1_EV_IRQHandler I2C1_EV_IRQHandler
+#define DISCOVERY_I2C1_ER_IRQn I2C1_ER_IRQn
+#define DISCOVERY_I2C1_ER_IRQHandler I2C1_ER_IRQHandler
+
+/* I2C TIMING Register define when I2C clock source is SYSCLK */
+/* I2C TIMING is calculated in case of the I2C Clock source is the SYSCLK = 80 MHz */
+/* Set 0x90112626 value to reach 100 KHz speed (Rise time = 640ns, Fall time = 20ns) */
+#ifndef DISCOVERY_I2C1_TIMING
+ #define DISCOVERY_I2C1_TIMING 0x90112626
+#endif /* DISCOVERY_I2C1_TIMING */
+
+/* I2C clock speed configuration (in Hz)
+ WARNING:
+ Make sure that this define is not already declared in other files (ie.
+ stm324xg_discovery.h file). It can be used in parallel by other modules. */
+#ifndef BSP_I2C_SPEED
+ #define BSP_I2C_SPEED 100000
+#endif /* BSP_I2C_SPEED */
+
+
+/* Audio codec I2C address */
+#define AUDIO_I2C_ADDRESS ((uint16_t) 0x94)
+
+/* 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 I2C communication is corrupted.
+ You may modify these timeout values depending on CPU frequency and application
+ conditions (interrupts routines ...). */
+#define DISCOVERY_I2C1_TIMEOUT_MAX 3000
+
+
+/*##################### I2C2 ###################################*/
+/* User can use this section to tailor I2C2 instance used and associated
+ resources */
+/* Definition for I2C2 Pins */
+#define DISCOVERY_I2C2_SCL_PIN GPIO_PIN_10
+#define DISCOVERY_I2C2_SCL_GPIO_PORT GPIOB
+#define DISCOVERY_I2C2_SDA_PIN GPIO_PIN_11
+#define DISCOVERY_I2C2_SDA_GPIO_PORT GPIOB
+#define DISCOVERY_I2C2_SCL_SDA_AF GPIO_AF4_I2C2
+/* Definition for I2C2 clock resources */
+#define DISCOVERY_I2C2 I2C2
+#define DISCOVERY_I2C2_CLK_ENABLE() __HAL_RCC_I2C2_CLK_ENABLE()
+#define DISCOVERY_I2C2_CLK_DISABLE() __HAL_RCC_I2C2_CLK_DISABLE()
+#define DISCOVERY_I2C2_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
+#define DISCOVERY_I2C2_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
+#define DISCOVERY_I2C2_SDA_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
+#define DISCOVERY_I2C2_SCL_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
+#define DISCOVERY_I2C2_FORCE_RESET() __HAL_RCC_I2C2_FORCE_RESET()
+#define DISCOVERY_I2C2_RELEASE_RESET() __HAL_RCC_I2C2_RELEASE_RESET()
+
+/* Definition for I2C2's NVIC */
+#define DISCOVERY_I2C2_EV_IRQn I2C2_EV_IRQn
+#define DISCOVERY_I2C2_ER_IRQn I2C2_ER_IRQn
+
+/* I2C TIMING Register define when I2C clock source is SYSCLK */
+/* I2C TIMING is calculated in case of the I2C Clock source is the SYSCLK = 80 MHz */
+/* Set 0x90112626 value to reach 100 KHz speed (Rise time = 640ns, Fall time = 20ns) */
+#ifndef DISCOVERY_I2C2_TIMING
+ #define DISCOVERY_I2C2_TIMING 0x90112626
+#endif /* DISCOVERY_I2C2_TIMING */
+
+/* I2C clock speed configuration (in Hz)
+ WARNING:
+ Make sure that this define is not already declared in other files (ie.
+ stm324xg_discovery.h file). It can be used in parallel by other modules. */
+#ifndef BSP_I2C_SPEED
+ #define BSP_I2C_SPEED 100000
+#endif /* BSP_I2C_SPEED */
+
+#define IDD_I2C_ADDRESS ((uint16_t) 0x84)
+
+/* 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 I2C communication is corrupted.
+ You may modify these timeout values depending on CPU frequency and application
+ conditions (interrupts routines ...). */
+#define DISCOVERY_I2C2_TIMEOUT_MAX 3000
+#endif /* HAL_I2C_MODULE_ENABLED */
+
+/*##################### Accelerometer ##########################*/
+/**
+ * @brief Accelerometer Chip Select macro definition
+ */
+#define ACCELERO_CS_LOW() HAL_GPIO_WritePin(ACCELERO_CS_GPIO_PORT, ACCELERO_CS_PIN, GPIO_PIN_RESET)
+#define ACCELERO_CS_HIGH() HAL_GPIO_WritePin(ACCELERO_CS_GPIO_PORT, ACCELERO_CS_PIN, GPIO_PIN_SET)
+
+/**
+ * @brief Accelerometer SPI Interface pins
+ */
+#define ACCELERO_CS_GPIO_PORT GPIOE /* GPIOE */
+#define ACCELERO_CS_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE()
+#define ACCELERO_CS_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE()
+#define ACCELERO_CS_PIN GPIO_PIN_0 /* PE.00 */
+
+/**
+ * @brief Accelerometer Interrupt pins
+ */
+#define ACCELERO_XLINT_GPIO_PORT GPIOE /* GPIOE */
+#define ACCELERO_XLINT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE()
+#define ACCELERO_XLINT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE()
+#define ACCELERO_XLINT_PIN GPIO_PIN_1 /* PE.01 */
+#define ACCELERO_XLINT_EXTI_IRQn EXTI1_IRQn
+
+/*##################### Magnetometer ##########################*/
+/**
+ * @brief Magnetometer Chip Select macro definition
+ */
+#define MAGNETO_CS_LOW() HAL_GPIO_WritePin(MAGNETO_CS_GPIO_PORT, MAGNETO_CS_PIN, GPIO_PIN_RESET)
+#define MAGNETO_CS_HIGH() HAL_GPIO_WritePin(MAGNETO_CS_GPIO_PORT, MAGNETO_CS_PIN, GPIO_PIN_SET)
+
+/**
+ * @brief Magnetometer SPI Interface pins
+ */
+#define MAGNETO_CS_GPIO_PORT GPIOC /* GPIOC */
+#define MAGNETO_CS_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
+#define MAGNETO_CS_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
+#define MAGNETO_CS_PIN GPIO_PIN_0 /* PC.00 */
+
+
+/**
+ * @brief Magnetometer Interrupt pins
+ */
+#define MAGNETO_INT_GPIO_PORT GPIOC /* GPIOC */
+#define MAGNETO_INT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
+#define MAGNETO_INT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
+#define MAGNETO_INT1_PIN GPIO_PIN_1 /* PC.01 */
+#define MAGNETO_INT1_EXTI_IRQn EXTI1_IRQn
+
+#define MAGNETO_DRDY_GPIO_PORT GPIOC /* GPIOC */
+#define MAGNETO_DRDY_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
+#define MAGNETO_DRDY_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
+#define MAGNETO_DRDY_PIN GPIO_PIN_2 /* PC.01 */
+
+
+/*##################### Audio Codec ##########################*/
+/**
+ * @brief Audio codec chip reset definition
+ */
+/* Audio codec power on/off macro definition */
+#define CODEC_AUDIO_POWER_OFF() HAL_GPIO_WritePin(AUDIO_RESET_GPIO, AUDIO_RESET_PIN, GPIO_PIN_RESET)
+#define CODEC_AUDIO_POWER_ON() HAL_GPIO_WritePin(AUDIO_RESET_GPIO, AUDIO_RESET_PIN, GPIO_PIN_SET)
+
+/* Audio Reset Pin definition */
+#define AUDIO_RESET_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE()
+#define AUDIO_RESET_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE()
+#define AUDIO_RESET_PIN GPIO_PIN_3
+#define AUDIO_RESET_GPIO GPIOE
+
+/*##################### Gyroscope ##########################*/
+/**
+ * @brief Gyroscope 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 Gyroscope SPI Interface pins
+ */
+#define GYRO_CS_GPIO_PORT GPIOD /* GPIOD */
+#define GYRO_CS_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
+#define GYRO_CS_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
+#define GYRO_CS_PIN GPIO_PIN_7 /* PD.07 */
+
+/**
+ * @brief Gyroscope Interrupt pins
+ */
+#if defined (USE_STM32L476G_DISCO_REVC) || defined (USE_STM32L476G_DISCO_REVB)
+#define GYRO_INT1_GPIO_PORT GPIOD /* GPIOD */
+#define GYRO_INT1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
+#define GYRO_INT1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
+#define GYRO_INT1_PIN GPIO_PIN_2 /* PD.02 */
+#define GYRO_INT1_EXTI_IRQn EXTI2_IRQn
+#define GYRO_INT2_GPIO_PORT GPIOB /* GPIOB */
+#define GYRO_INT2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
+#define GYRO_INT2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
+#define GYRO_INT2_PIN GPIO_PIN_8 /* PB.08 */
+#define GYRO_INT2_EXTI_IRQn EXTI9_5_IRQn
+#elif defined (USE_STM32L476G_DISCO_REVA)
+#define GYRO_INT1_GPIO_PORT GPIOB /* GPIOB */
+#define GYRO_INT1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
+#define GYRO_INT1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
+#define GYRO_INT1_PIN GPIO_PIN_6 /* PB.06 */
+#define GYRO_INT1_EXTI_IRQn EXTI9_5_IRQn
+#define GYRO_INT2_GPIO_PORT GPIOB /* GPIOB */
+#define GYRO_INT2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
+#define GYRO_INT2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
+#define GYRO_INT2_PIN GPIO_PIN_7 /* PB.07 */
+#define GYRO_INT2_EXTI_IRQn EXTI9_5_IRQn
+#endif
+
+/*##################### Idd ##########################*/
+/**
+ * @brief Idd current measurement interface pins
+ */
+#define IDD_INT_GPIO_PORT GPIOC /* GPIOC */
+#define IDD_INT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
+#define IDD_INT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
+#define IDD_INT_PIN GPIO_PIN_13 /* PC.13 */
+#define IDD_INT_EXTI_IRQn EXTI15_10_IRQn
+
+#define IDD_WAKEUP_GPIO_PORT GPIOA /* GPIOA */
+#define IDD_WAKEUP_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
+#define IDD_WAKEUP_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
+#define IDD_WAKEUP_PIN GPIO_PIN_4 /* PA.04 */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+
+/** @defgroup STM32L476G_DISCOVERY_Exported_Functions Exported Functions
+ * @{
+ */
+uint32_t BSP_GetVersion(void);
+SupplyMode_TypeDef BSP_SupplyModeDetection(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);
+uint8_t BSP_JOY_Init(JOYMode_TypeDef Joy_Mode);
+void BSP_JOY_DeInit(void);
+JOYState_TypeDef BSP_JOY_GetState(void);
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32L476G_DISCOVERY_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/