STM32F072B-Discovery BSP User Manual: stm32f072b_discovery.h Source File

STM32F072B Discovery BSP Drivers

stm32f072b_discovery.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32f072b_discovery.h
00004   * @author  MCD Application Team
00005   * @brief   This file contains definitions for STM32F072B-Discovery's Leds, push-
00006   *          buttons hardware resources.
00007   ******************************************************************************
00008   * @attention
00009   *
00010   * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
00011   *
00012   * Redistribution and use in source and binary forms, with or without modification,
00013   * are permitted provided that the following conditions are met:
00014   *   1. Redistributions of source code must retain the above copyright notice,
00015   *      this list of conditions and the following disclaimer.
00016   *   2. Redistributions in binary form must reproduce the above copyright notice,
00017   *      this list of conditions and the following disclaimer in the documentation
00018   *      and/or other materials provided with the distribution.
00019   *   3. Neither the name of STMicroelectronics nor the names of its contributors
00020   *      may be used to endorse or promote products derived from this software
00021   *      without specific prior written permission.
00022   *
00023   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00024   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00025   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00026   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00027   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00028   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00029   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00030   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00031   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00032   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00033   *
00034   ******************************************************************************
00035   */
00036 
00037 /* Define to prevent recursive inclusion -------------------------------------*/
00038 #ifndef __STM32F072B_DISCOVERY_H
00039 #define __STM32F072B_DISCOVERY_H
00040 
00041 #ifdef __cplusplus
00042  extern "C" {
00043 #endif
00044 
00045 /* Includes ------------------------------------------------------------------*/
00046 #include "stm32f0xx_hal.h"
00047 
00048 /** @addtogroup BSP
00049   * @{
00050   */
00051 
00052 /** @defgroup STM32F072B_DISCOVERY STM32F072B_DISCOVERY
00053   * @{
00054   */
00055       
00056 /** @defgroup STM32F072B_DISCOVERY_Common STM32F072B_DISCOVERY Common
00057   * @{
00058   */ 
00059 
00060 /** @defgroup STM32F072B_DISCOVERY_Exported_Types Exported Types
00061   * @{
00062   */
00063 
00064 /**
00065  * @brief LED Types Definition
00066  */
00067 typedef enum 
00068 {
00069   LED3 = 0,
00070   LED4 = 1,
00071   LED5 = 2,
00072   LED6 = 3,
00073   /* Color led aliases */
00074   LED_RED    = LED3,
00075   LED_ORANGE = LED4,
00076   LED_GREEN  = LED5,
00077   LED_BLUE   = LED6
00078 }Led_TypeDef;
00079 
00080 /**
00081  * @brief BUTTON Types Definition
00082  */
00083 typedef enum 
00084 {
00085   BUTTON_USER = 0
00086 }Button_TypeDef;
00087 
00088 typedef enum 
00089 {  
00090   BUTTON_MODE_GPIO = 0,
00091   BUTTON_MODE_EXTI = 1
00092 }ButtonMode_TypeDef;
00093 
00094 /**
00095   * @}
00096   */ 
00097 
00098 /** @defgroup STM32F072B_DISCOVERY_Exported_Constants Exported Constants
00099   * @{
00100   */ 
00101 /**
00102   * @brief  Define for STM32F072B_DISCOVERY board  
00103   */ 
00104 #if !defined (USE_STM32072B_DISCO)
00105  #define USE_STM32072B_DISCO
00106 #endif
00107 /** @defgroup STM32F072B_DISCOVERY_LED STM32F072B_DISCOVERY LED
00108   * @{
00109   */
00110 #define LEDn                             4
00111 
00112 #define LED3_PIN                         GPIO_PIN_6
00113 #define LED3_GPIO_PORT                   GPIOC
00114 #define LED3_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOC_CLK_ENABLE()  
00115 #define LED3_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOC_CLK_DISABLE() 
00116 
00117 #define LED4_PIN                         GPIO_PIN_8
00118 #define LED4_GPIO_PORT                   GPIOC
00119 #define LED4_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOC_CLK_ENABLE()  
00120 #define LED4_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOC_CLK_DISABLE() 
00121   
00122 #define LED5_PIN                         GPIO_PIN_9
00123 #define LED5_GPIO_PORT                   GPIOC
00124 #define LED5_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOC_CLK_ENABLE()  
00125 #define LED5_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOC_CLK_DISABLE()  
00126 
00127 #define LED6_PIN                         GPIO_PIN_7
00128 #define LED6_GPIO_PORT                   GPIOC
00129 #define LED6_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOC_CLK_ENABLE()  
00130 #define LED6_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOC_CLK_DISABLE() 
00131 
00132 #define LEDx_GPIO_CLK_ENABLE(__LED__) do { if((__LED__) == LED3) LED3_GPIO_CLK_ENABLE(); else \
00133                                            if((__LED__) == LED4) LED4_GPIO_CLK_ENABLE(); else \
00134                                            if((__LED__) == LED5) LED5_GPIO_CLK_ENABLE(); else \
00135                                            if((__LED__) == LED6) LED6_GPIO_CLK_ENABLE();} while(0)
00136 
00137 #define LEDx_GPIO_CLK_DISABLE(__LED__)  (((__LED__) == LED3) ? LED3_GPIO_CLK_DISABLE() :\
00138                                          ((__LED__) == LED4) ? LED4_GPIO_CLK_DISABLE() :\
00139                                          ((__LED__) == LED5) ? LED5_GPIO_CLK_DISABLE() : \
00140                                          ((__LED__) == LED6) ? LED6_GPIO_CLK_DISABLE() : 0 )
00141 /**
00142   * @}
00143   */ 
00144 
00145 /** @defgroup STM32F072B_DISCOVERY_BUTTON STM32F072B_DISCOVERY BUTTON
00146   * @{
00147   */  
00148 #define BUTTONn                          1
00149 
00150 /**
00151  * @brief USER push-button
00152  */
00153 #define USER_BUTTON_PIN                GPIO_PIN_0                       /* PA0 */
00154 #define USER_BUTTON_GPIO_PORT          GPIOA
00155 #define USER_BUTTON_GPIO_CLK_ENABLE()  __HAL_RCC_GPIOA_CLK_ENABLE()
00156 #define USER_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
00157 #define USER_BUTTON_EXTI_IRQn          EXTI0_1_IRQn
00158 
00159 #define BUTTONx_GPIO_CLK_ENABLE(__BUTTON__)    do { if((__BUTTON__) == BUTTON_USER) USER_BUTTON_GPIO_CLK_ENABLE();} while(0)
00160 
00161 #define BUTTONx_GPIO_CLK_DISABLE(__BUTTON__)   (((__BUTTON__) == BUTTON_USER) ? USER_BUTTON_GPIO_CLK_DISABLE() : 0 )
00162 /**
00163   * @}
00164   */
00165 
00166 /** @defgroup STM32F072B_DISCOVERY_BUS STM32F072B_DISCOVERY BUS
00167   * @{
00168   */  
00169 #if defined(HAL_SPI_MODULE_ENABLED)
00170 /*##################### SPI1 ###################################*/
00171 #define DISCOVERY_SPIx                        SPI2
00172 #define DISCOVERY_SPIx_CLOCK_ENABLE()         __HAL_RCC_SPI2_CLK_ENABLE()
00173 #define DISCOVERY_SPIx_GPIO_PORT              GPIOB                      /* GPIOB */
00174 #define DISCOVERY_SPIx_AF                     GPIO_AF0_SPI2
00175 #define DISCOVERY_SPIx_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOB_CLK_ENABLE()
00176 #define DISCOVERY_SPIx_GPIO_CLK_DISABLE()     __HAL_RCC_GPIOB_CLK_DISABLE()
00177 #define DISCOVERY_SPIx_SCK_PIN                GPIO_PIN_13                 /* PB.13 */
00178 #define DISCOVERY_SPIx_MISO_PIN               GPIO_PIN_14                 /* PB.14 */
00179 #define DISCOVERY_SPIx_MOSI_PIN               GPIO_PIN_15                 /* PB.15 */
00180 /* Maximum Timeout values for flags waiting loops. These timeouts are not based
00181    on accurate values, they just guarantee that the application will not remain
00182    stuck if the SPI communication is corrupted.
00183    You may modify these timeout values depending on CPU frequency and application
00184    conditions (interrupts routines ...). */   
00185 #define SPIx_TIMEOUT_MAX                      ((uint32_t)0x1000)
00186 #endif /* HAL_SPI_MODULE_ENABLED */
00187 
00188 #if defined(HAL_I2C_MODULE_ENABLED)
00189 /*##################### I2C2 ###################################*/
00190 /**
00191   * @brief  Definition for I2C Interface pins (I2C2 used)
00192   */
00193 #define DISCOVERY_I2Cx                              I2C2
00194 #define DISCOVERY_I2Cx_CLK_ENABLE()                 __HAL_RCC_I2C2_CLK_ENABLE()
00195 #define DISCOVERY_I2Cx_CLK_DISABLE()                __HAL_RCC_I2C2_CLK_DISABLE()
00196 #define DISCOVERY_I2Cx_FORCE_RESET()                __HAL_RCC_I2C2_FORCE_RESET()
00197 #define DISCOVERY_I2Cx_RELEASE_RESET()              __HAL_RCC_I2C2_RELEASE_RESET()
00198 
00199 #define DISCOVERY_I2Cx_SCL_PIN                      GPIO_PIN_10                 /* PB.10 */
00200 #define DISCOVERY_I2Cx_SDA_PIN                      GPIO_PIN_11                 /* PB.11 */
00201 
00202 #define DISCOVERY_I2Cx_GPIO_PORT                    GPIOB                       /* GPIOB */
00203 #define DISCOVERY_I2Cx_GPIO_CLK_ENABLE()            __HAL_RCC_GPIOB_CLK_ENABLE()
00204 #define DISCOVERY_I2Cx_GPIO_CLK_DISABLE()           __HAL_RCC_GPIOB_CLK_DISABLE()
00205 #define DISCOVERY_I2Cx_AF                           GPIO_AF1_I2C2
00206 
00207 /* Maximum Timeout values for flags waiting loops. These timeouts are not based
00208    on accurate values, they just guarantee that the application will not remain
00209    stuck if the I2C communication is corrupted.
00210    You may modify these timeout values depending on CPU frequency and application
00211    conditions (interrupts routines ...). */   
00212 //#define I2Cx_TIMEOUT_MAX                  ((uint32_t)0xFFFF)
00213 #define I2Cx_TIMEOUT_MAX                  ((uint32_t)0x10000)
00214 
00215 #define DISCOVERY_I2Cx_TIMING                       0x40B32537
00216 
00217 #define DISCOVERY_EEPROM_I2C_ADDRESS_A01           0xA0  
00218 
00219 #endif /* HAL_I2C_MODULE_ENABLED */
00220 
00221 /**
00222   * @}
00223   */
00224 
00225 /** @defgroup STM32F072B_DISCOVERY_COMPONENT STM32F072B_DISCOVERY COMPONENT
00226   * @{
00227   */
00228 /*##################### GYRO ##########################*/
00229 /* Read/Write command */
00230 #define READWRITE_CMD                         ((uint8_t)0x80) 
00231 /* Multiple byte read/write command */ 
00232 #define MULTIPLEBYTE_CMD                      ((uint8_t)0x40)
00233 /* Dummy Byte Send by the SPI Master device in order to generate the Clock to the Slave device */
00234 #define DUMMY_BYTE                            ((uint8_t)0x00)
00235 
00236 /* Chip Select macro definition */
00237 #define GYRO_CS_LOW()       HAL_GPIO_WritePin(GYRO_CS_GPIO_PORT, GYRO_CS_PIN, GPIO_PIN_RESET)
00238 #define GYRO_CS_HIGH()      HAL_GPIO_WritePin(GYRO_CS_GPIO_PORT, GYRO_CS_PIN, GPIO_PIN_SET)
00239 
00240 /**
00241   * @brief  GYRO SPI Interface pins
00242   */
00243 #define GYRO_CS_GPIO_PORT            GPIOC                       /* GPIOC */
00244 #define GYRO_CS_GPIO_CLK_ENABLE()    __HAL_RCC_GPIOC_CLK_ENABLE()
00245 #define GYRO_CS_GPIO_CLK_DISABLE()   __HAL_RCC_GPIOC_CLK_DISABLE()
00246 #define GYRO_CS_PIN                  GPIO_PIN_0                  /* PC.00 */
00247 
00248 #define GYRO_INT_GPIO_PORT               GPIOC                       /* GPIOC */
00249 #define GYRO_INT_GPIO_CLK_ENABLE()       __HAL_RCC_GPIOC_CLK_ENABLE()
00250 #define GYRO_INT_GPIO_CLK_DISABLE()      __HAL_RCC_GPIOC_CLK_DISABLE()
00251 #define GYRO_INT1_PIN                    GPIO_PIN_1                  /* PC.01 */
00252 #define GYRO_INT1_EXTI_IRQn              EXTI0_1_IRQn 
00253 #define GYRO_INT2_PIN                    GPIO_PIN_2                  /* PC.02 */
00254 #define GYRO_INT2_EXTI_IRQn              EXTI2_3_IRQn 
00255 
00256 /*##################### EEPROM ##########################*/
00257 /**
00258   * @brief  I2C EEPROM Interface pins
00259   */
00260 #define DISCOVERY_EEPROM_DMA                       DMA1   
00261 #define DISCOVERY_EEPROM_DMA_CHANNEL_TX            DMA1_Channel4
00262 #define DISCOVERY_EEPROM_DMA_CHANNEL_RX            DMA1_Channel5
00263 #define DISCOVERY_EEPROM_DMA_CLK_ENABLE()          __HAL_RCC_DMA1_CLK_ENABLE()
00264 #define DISCOVERY_EEPROM_DMA_CLK_DISABLE()         __HAL_RCC_DMA1_CLK_DISABLE()
00265    
00266 #define DISCOVERY_EEPROM_DMA_TX_IRQn               DMA1_Channel4_5_6_7_IRQn
00267 #define DISCOVERY_EEPROM_DMA_RX_IRQn               DMA1_Channel4_5_6_7_IRQn
00268 #define DISCOVERY_EEPROM_DMA_PREPRIO               0
00269 #define DISCOVERY_EEPROM_DMA_SUBPRIO               0
00270 
00271 /**
00272   * @}
00273   */  
00274 
00275 /**
00276   * @}
00277   */  
00278 
00279 /** @defgroup STM32F072B_DISCOVERY_Exported_Functions Exported Functions
00280   * @{
00281   */
00282 uint32_t BSP_GetVersion(void);
00283 void     BSP_LED_Init(Led_TypeDef Led);
00284 void     BSP_LED_On(Led_TypeDef Led);
00285 void     BSP_LED_Off(Led_TypeDef Led);
00286 void     BSP_LED_Toggle(Led_TypeDef Led);
00287 void     BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef Mode);
00288 uint32_t BSP_PB_GetState(Button_TypeDef Button);
00289 /**
00290   * @}
00291   */
00292 
00293 /**
00294   * @}
00295   */
00296 
00297 /**
00298   * @}
00299   */
00300 
00301 /**
00302   * @}
00303   */
00304 
00305 #ifdef __cplusplus
00306 }
00307 #endif
00308 
00309 #endif /* __STM32F072B_DISCOVERY_H */
00310 
00311 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Generated on Wed Jul 5 2017 09:43:19 for STM32F072B-Discovery BSP User Manual by   doxygen 1.7.6.1