BSP Drivers
Dependencies: CMSIS_STM32L4xx CMSIS_DSP_401 STM32L4xx_HAL_Driver
Diff: Disco/stm32l476g_discovery.h
- Revision:
- 0:ad9dfc0179dc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Disco/stm32l476g_discovery.h Mon Nov 02 19:38:36 2015 +0000 @@ -0,0 +1,566 @@ +/** + ****************************************************************************** + * @file stm32l476g_discovery.h + * @author MCD Application Team + * @version V1.0.1 + * @date 16-September-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 +{ + LED4 = 0, + LED5 = 1, + LED_RED = LED4, + LED_GREEN = LED5 +}Led_TypeDef; +#elif defined (USE_STM32L476G_DISCO_REVA) +typedef enum +{ + LED3 = 0, + LED4 = 1, + LED_RED = LED3, + LED_GREEN = 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__) == LED4) { LED4_GPIO_CLK_ENABLE(); } else \ + if((__LED__) == LED5) { LED5_GPIO_CLK_ENABLE(); } } while(0) + +#define LEDx_GPIO_CLK_DISABLE(__LED__) do { if((__LED__) == LED4) { LED4_GPIO_CLK_DISABLE(); } else \ + if((__LED__) == 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__) == LED3) { LED3_GPIO_CLK_ENABLE(); } else \ + if((__LED__) == LED4) { LED4_GPIO_CLK_ENABLE(); } } while(0) + +#define LEDx_GPIO_CLK_DISABLE(__LED__) do { if((__LED__) == LED3) { LED3_GPIO_CLK_DISABLE(); } else \ + if((__LED__) == 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****/ +