/** ****************************************************************************** * @file stm32f401_discovery.h * @author MCD Application Team * @brief This file contains definitions for STM32F401-Discovery Kit's Leds and * push-button hardware resources. ****************************************************************************** * @attention * *

© COPYRIGHT(c) 2017 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 __STM32F401_DISCOVERY_H #define __STM32F401_DISCOVERY_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "stm32f4xx_hal.h" /** @addtogroup BSP * @{ */ /** @addtogroup STM32F401_DISCOVERY * @{ */ /** @addtogroup STM32F401_DISCOVERY_LOW_LEVEL * @{ */ /** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_Exported_Types STM32F401 DISCOVERY LOW LEVEL Exported Types * @{ */ typedef enum { LED4 = 0, LED3 = 1, LED5 = 2, LED6 = 3 }Led_TypeDef; typedef enum { BUTTON_KEY = 0, }Button_TypeDef; typedef enum { BUTTON_MODE_GPIO = 0, BUTTON_MODE_EXTI = 1 }ButtonMode_TypeDef; /** * @} */ /** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_Exported_Constants STM32F401 DISCOVERY LOW LEVEL Exported Constants * @{ */ /** * @brief Define for STM32F401_DISCOVERY board */ #if !defined (USE_STM32F401_DISCO) #define USE_STM32F401_DISCO #endif /** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_LED STM32F401 DISCOVERY LOW LEVEL LED * @{ */ #define LEDn 4 #define LED4_PIN GPIO_PIN_12 #define LED4_GPIO_PORT GPIOD #define LED4_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() #define LED4_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE() #define LED3_PIN GPIO_PIN_13 #define LED3_GPIO_PORT GPIOD #define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() #define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE() #define LED5_PIN GPIO_PIN_14 #define LED5_GPIO_PORT GPIOD #define LED5_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() #define LED5_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE() #define LED6_PIN GPIO_PIN_15 #define LED6_GPIO_PORT GPIOD #define LED6_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() #define LED6_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE() #define LEDx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) LED4_GPIO_CLK_ENABLE(); else \ if((__INDEX__) == 1) LED3_GPIO_CLK_ENABLE(); else \ if((__INDEX__) == 2) LED5_GPIO_CLK_ENABLE(); else \ if((__INDEX__) == 3) LED6_GPIO_CLK_ENABLE(); \ }while(0) #define LEDx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) LED4_GPIO_CLK_DISABLE(); else \ if((__INDEX__) == 1) LED3_GPIO_CLK_DISABLE(); else \ if((__INDEX__) == 2) LED5_GPIO_CLK_DISABLE(); else \ if((__INDEX__) == 3) LED6_GPIO_CLK_DISABLE(); \ }while(0) /** * @} */ /** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_BUTTON STM32F401 DISCOVERY LOW LEVEL BUTTON * @{ */ #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() __HAL_RCC_GPIOA_CLK_ENABLE() #define KEY_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE() #define KEY_BUTTON_EXTI_IRQn EXTI0_IRQn #define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) KEY_BUTTON_GPIO_CLK_ENABLE(); \ }while(0) #define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) KEY_BUTTON_GPIO_CLK_DISABLE(); \ }while(0) /** * @} */ /** @defgroup STM32F401_DISCOVERY_LOW_LEVEL_BUS STM32F401 DISCOVERY LOW LEVEL BUS * @{ */ /*############################### I2Cx #######################################*/ #define DISCOVERY_I2Cx I2C1 #define DISCOVERY_I2Cx_CLOCK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE() #define DISCOVERY_I2Cx_GPIO_PORT GPIOB /* GPIOB */ #define DISCOVERY_I2Cx_SCL_PIN GPIO_PIN_6 /* PB.06 */ #define DISCOVERY_I2Cx_SDA_PIN GPIO_PIN_9 /* PB.09 */ #define DISCOVERY_I2Cx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define DISCOVERY_I2Cx_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE() #define DISCOVERY_I2Cx_AF GPIO_AF4_I2C1 #define DISCOVERY_I2Cx_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET() #define DISCOVERY_I2Cx_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET() /* I2C interrupt requests */ #define DISCOVERY_I2Cx_EV_IRQn I2C1_EV_IRQn #define DISCOVERY_I2Cx_ER_IRQn I2C1_ER_IRQn /* I2C speed and timeout max */ #define I2Cx_TIMEOUT_MAX 0xA000 /*