STM32F3-Discovery BSP User Manual: stm32f3_discovery.h Source File

STM32F3-Discovery BSP Drivers

stm32f3_discovery.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32f3_discovery.h
00004   * @author  MCD Application Team
00005   * @brief   This file contains definitions for STM32F3-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 __STM32F3_DISCOVERY_H
00039 #define __STM32F3_DISCOVERY_H
00040 
00041 #ifdef __cplusplus
00042  extern "C" {
00043 #endif
00044                                               
00045 /** @addtogroup BSP
00046   * @{
00047   */
00048 
00049 /** @defgroup STM32F3_DISCOVERY STM32F3-DISCOVERY
00050   * @{
00051   */ 
00052  
00053 /* Includes ------------------------------------------------------------------*/
00054 #include "stm32f3xx_hal.h"
00055    
00056 /** @defgroup STM32F3_DISCOVERY_Common STM32F3-DISCOVERY Common
00057   * @{
00058   */
00059   
00060 /** @defgroup STM32F3_DISCOVERY_Private_Constants Private Constants
00061   * @{
00062   */
00063 /**
00064 * @}
00065 */        
00066       
00067 /** @defgroup STM32F3_DISCOVERY_Private_Variables Private Variables
00068   * @{
00069   */ 
00070 /**
00071 * @}
00072   */ 
00073 
00074 /** @defgroup STM32F3_DISCOVERY_Exported_Types Exported Types
00075   * @{
00076   */
00077 
00078 /**
00079  * @brief LED Types Definition
00080  */
00081 typedef enum
00082 {
00083   LED3 = 0,
00084   LED4 = 1,
00085   LED5 = 2,
00086   LED6 = 3,
00087   LED7 = 4,
00088   LED8 = 5,
00089   LED9 = 6,
00090   LED10 = 7,
00091   
00092   LED_GREEN  = LED6, 
00093   LED_ORANGE = LED5, 
00094   LED_RED    = LED3, 
00095   LED_BLUE   = LED4,
00096   LED_GREEN_2  = LED7,
00097   LED_ORANGE_2 = LED8,
00098   LED_RED_2    = LED10,
00099   LED_BLUE_2   = LED9
00100 }Led_TypeDef;
00101 
00102 /**
00103  * @brief BUTTON Types Definition
00104  */
00105 typedef enum 
00106 {
00107   BUTTON_USER = 0
00108 
00109 }Button_TypeDef;
00110 
00111 typedef enum 
00112 {  
00113   BUTTON_MODE_GPIO = 0,
00114   BUTTON_MODE_EXTI = 1
00115 
00116 }ButtonMode_TypeDef;
00117 
00118 
00119 /**
00120   * @}
00121   */ 
00122 
00123 /** @defgroup STM32F3_DISCOVERY_Exported_Constants Exported Constants
00124   * @{
00125   */ 
00126 
00127 /** 
00128   * @brief  Define for STM32F3_DISCOVERY board  
00129   */ 
00130 
00131 #if !defined (USE_STM32F3_DISCO)
00132  #define USE_STM32F3_DISCO
00133 #endif
00134 
00135 
00136 /** @defgroup STM32F3_DISCOVERY_LED STM32F3-DISCOVERY LED
00137   * @{
00138   */
00139 #define LEDn                             8
00140 
00141 #define LED6_PIN                         GPIO_PIN_15
00142 #define LED6_GPIO_PORT                   GPIOE
00143 #define LED6_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOE_CLK_ENABLE() 
00144 #define LED6_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOE_CLK_DISABLE()
00145 
00146 #define LED8_PIN                         GPIO_PIN_14
00147 #define LED8_GPIO_PORT                   GPIOE
00148 #define LED8_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOE_CLK_ENABLE() 
00149 #define LED8_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOE_CLK_DISABLE()
00150   
00151 #define LED10_PIN                        GPIO_PIN_13
00152 #define LED10_GPIO_PORT                  GPIOE
00153 #define LED10_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOE_CLK_ENABLE()
00154 #define LED10_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOE_CLK_DISABLE()
00155   
00156 #define LED9_PIN                         GPIO_PIN_12
00157 #define LED9_GPIO_PORT                   GPIOE
00158 #define LED9_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOE_CLK_ENABLE()
00159 #define LED9_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOE_CLK_DISABLE()
00160   
00161 #define LED7_PIN                         GPIO_PIN_11
00162 #define LED7_GPIO_PORT                   GPIOE
00163 #define LED7_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOE_CLK_ENABLE()
00164 #define LED7_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOE_CLK_DISABLE()
00165 
00166 #define LED5_PIN                         GPIO_PIN_10
00167 #define LED5_GPIO_PORT                   GPIOE
00168 #define LED5_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOE_CLK_ENABLE()
00169 #define LED5_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOE_CLK_DISABLE()
00170 
00171 #define LED3_PIN                         GPIO_PIN_9
00172 #define LED3_GPIO_PORT                   GPIOE
00173 #define LED3_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOE_CLK_ENABLE()
00174 #define LED3_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOE_CLK_DISABLE()
00175 
00176 #define LED4_PIN                         GPIO_PIN_8
00177 #define LED4_GPIO_PORT                   GPIOE
00178 #define LED4_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOE_CLK_ENABLE()
00179 #define LED4_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOE_CLK_DISABLE()
00180 
00181 #define LEDx_GPIO_CLK_ENABLE(__LED__)   do { if ((__LED__) == LED3) LED3_GPIO_CLK_ENABLE(); else\
00182                                              if ((__LED__) == LED4) LED4_GPIO_CLK_ENABLE(); else\
00183                                              if ((__LED__) == LED5) LED5_GPIO_CLK_ENABLE(); else\
00184                                              if ((__LED__) == LED6) LED6_GPIO_CLK_ENABLE(); else\
00185                                              if ((__LED__) == LED7) LED7_GPIO_CLK_ENABLE(); else\
00186                                              if ((__LED__) == LED8) LED8_GPIO_CLK_ENABLE(); else\
00187                                              if ((__LED__) == LED9) LED9_GPIO_CLK_ENABLE(); else\
00188                                              if ((__LED__) == LED10) LED10_GPIO_CLK_ENABLE();} while(0)
00189 
00190 #define LEDx_GPIO_CLK_DISABLE(__LED__)  (((__LED__) == LED3) ? LED3_GPIO_CLK_DISABLE() :\
00191                                          ((__LED__) == LED4) ? LED4_GPIO_CLK_DISABLE() :\
00192                                          ((__LED__) == LED5) ? LED5_GPIO_CLK_DISABLE() :\
00193                                          ((__LED__) == LED6) ? LED6_GPIO_CLK_DISABLE() :\
00194                                          ((__LED__) == LED7) ? LED7_GPIO_CLK_DISABLE() :\
00195                                          ((__LED__) == LED8) ? LED8_GPIO_CLK_DISABLE() :\
00196                                          ((__LED__) == LED9) ? LED9_GPIO_CLK_DISABLE() :\
00197                                          ((__LED__) == LED10) ? LED10_GPIO_CLK_DISABLE() : 0 )
00198 
00199 /**
00200   * @}
00201   */ 
00202   
00203 /** @defgroup STM32F3_DISCOVERY_BUTTON STM32F3-DISCOVERY BUTTON
00204   * @{
00205   */  
00206 #define BUTTONn                          1  
00207 
00208 /**
00209  * @brief push-button
00210  */
00211 #define USER_BUTTON_PIN                  GPIO_PIN_0
00212 #define USER_BUTTON_GPIO_PORT            GPIOA
00213 #define USER_BUTTON_GPIO_CLK_ENABLE()    __HAL_RCC_GPIOA_CLK_ENABLE()
00214 #define USER_BUTTON_GPIO_CLK_DISABLE()   __HAL_RCC_GPIOA_CLK_DISABLE()
00215 #define USER_BUTTON_EXTI_IRQn            EXTI0_IRQn 
00216 
00217 #define BUTTONx_GPIO_CLK_ENABLE(__BUTTON__)  do { if ((__BUTTON__) == BUTTON_USER) USER_BUTTON_GPIO_CLK_ENABLE();} while(0)
00218 
00219 #define BUTTONx_GPIO_CLK_DISABLE(__BUTTON__) (((__BUTTON__) == BUTTON_USER) ? USER_BUTTON_GPIO_CLK_DISABLE() : 0 )
00220 
00221 /**
00222   * @}
00223   */ 
00224 
00225 /** @defgroup STM32F3_DISCOVERY_COM STM32F3-DISCOVERY COM
00226   * @{
00227   */  
00228   
00229 /*##################### SPIx ###################################*/
00230 /**
00231   * @brief  Definition for SPI Interface pins (SPI1 used)
00232   */
00233 #define DISCOVERY_SPIx                        SPI1
00234 #define DISCOVERY_SPIx_CLK_ENABLE()           __HAL_RCC_SPI1_CLK_ENABLE()
00235 #define DISCOVERY_SPIx_GPIO_PORT              GPIOA                      /* GPIOA */
00236 #define DISCOVERY_SPIx_AF                     GPIO_AF5_SPI1
00237 #define DISCOVERY_SPIx_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOA_CLK_ENABLE()
00238 #define DISCOVERY_SPIx_GPIO_CLK_DISABLE()     __HAL_RCC_GPIOA_CLK_DISABLE()
00239 #define DISCOVERY_SPIx_SCK_PIN                GPIO_PIN_5                 /* PA.05 */
00240 #define DISCOVERY_SPIx_MISO_PIN               GPIO_PIN_6                 /* PA.06 */
00241 #define DISCOVERY_SPIx_MOSI_PIN               GPIO_PIN_7                 /* PA.07 */
00242 /* Maximum Timeout values for flags waiting loops. These timeouts are not based
00243    on accurate values, they just guarantee that the application will not remain
00244    stuck if the SPI communication is corrupted.
00245    You may modify these timeout values depending on CPU frequency and application
00246    conditions (interrupts routines ...). */   
00247 #define SPIx_TIMEOUT_MAX                      ((uint32_t)0x1000)
00248 
00249 /*##################### I2Cx ###################################*/
00250 /**
00251   * @brief  Definition for I2C Interface pins (I2C1 used)
00252   */
00253 #define DISCOVERY_I2Cx                        I2C1
00254 #define DISCOVERY_I2Cx_CLK_ENABLE()           __HAL_RCC_I2C1_CLK_ENABLE()
00255 #define DISCOVERY_I2Cx_CLK_DISABLE()          __HAL_RCC_I2C1_CLK_DISABLE()
00256 #define DISCOVERY_I2Cx_FORCE_RESET()          __HAL_RCC_I2C1_FORCE_RESET()
00257 #define DISCOVERY_I2Cx_RELEASE_RESET()        __HAL_RCC_I2C1_RELEASE_RESET() 
00258 
00259 #define DISCOVERY_I2Cx_SCL_PIN                GPIO_PIN_6                  /* PB.06 */
00260 #define DISCOVERY_I2Cx_SDA_PIN                GPIO_PIN_7                  /* PB.07 */
00261 
00262 #define DISCOVERY_I2Cx_GPIO_PORT              GPIOB                       /* GPIOB */
00263 #define DISCOVERY_I2Cx_GPIO_CLK_ENABLE()      __HAL_RCC_GPIOB_CLK_ENABLE() 
00264 #define DISCOVERY_I2Cx_GPIO_CLK_DISABLE()     __HAL_RCC_GPIOB_CLK_DISABLE()
00265 #define DISCOVERY_I2Cx_AF                     GPIO_AF4_I2C1
00266 
00267 /* Maximum Timeout values for flags waiting loops. These timeouts are not based
00268    on accurate values, they just guarantee that the application will not remain
00269    stuck if the I2C communication is corrupted.
00270    You may modify these timeout values depending on CPU frequency and application
00271    conditions (interrupts routines ...). */   
00272 #define I2Cx_TIMEOUT_MAX                      0x10000     
00273 
00274 /**
00275   * @}
00276   */ 
00277 
00278 
00279 /** @defgroup STM32F3_DISCOVERY_COMPONENT STM32F3-DISCOVERY COMPONENT
00280   * @{
00281   */
00282 /*##################### GYRO ##########################*/
00283 /* Read/Write command */
00284 #define READWRITE_CMD              ((uint8_t)0x80) 
00285 /* Multiple byte read/write command */ 
00286 #define MULTIPLEBYTE_CMD           ((uint8_t)0x40)
00287 /* Dummy Byte Send by the SPI Master device in order to generate the Clock to the Slave device */
00288 #define DUMMY_BYTE                 ((uint8_t)0x00)
00289 
00290 /* Chip Select macro definition */
00291 #define GYRO_CS_LOW()       HAL_GPIO_WritePin(GYRO_CS_GPIO_PORT, GYRO_CS_PIN, GPIO_PIN_RESET)
00292 #define GYRO_CS_HIGH()      HAL_GPIO_WritePin(GYRO_CS_GPIO_PORT, GYRO_CS_PIN, GPIO_PIN_SET)
00293 
00294 /**
00295   * @brief  GYRO SPI Interface pins
00296   */
00297 #define GYRO_CS_GPIO_PORT            GPIOE                       /* GPIOE */
00298 #define GYRO_CS_GPIO_CLK_ENABLE()    __HAL_RCC_GPIOE_CLK_ENABLE()
00299 #define GYRO_CS_GPIO_CLK_DISABLE()   __HAL_RCC_GPIOE_CLK_DISABLE()
00300 #define GYRO_CS_PIN                  GPIO_PIN_3                  /* PE.03 */
00301 
00302 #define GYRO_INT_GPIO_PORT           GPIOE                       /* GPIOE */
00303 #define GYRO_INT_GPIO_CLK_ENABLE()   __HAL_RCC_GPIOE_CLK_ENABLE()
00304 #define GYRO_INT_GPIO_CLK_DISABLE()  __HAL_RCC_GPIOE_CLK_DISABLE()
00305 #define GYRO_INT1_PIN                GPIO_PIN_0                  /* PE.00 */
00306 #define GYRO_INT1_EXTI_IRQn          EXTI0_IRQn 
00307 #define GYRO_INT2_PIN                GPIO_PIN_1                  /* PE.01 */
00308 #define GYRO_INT2_EXTI_IRQn          EXTI1_IRQn 
00309 
00310 /*##################### ACCELEROMETER ##########################*/
00311 /**
00312   * @brief  ACCELEROMETER I2C1 Interface pins
00313   */
00314 #define ACCELERO_I2C_ADDRESS             0x32
00315 
00316 #define ACCELERO_DRDY_PIN                GPIO_PIN_2                  /* PE.02 */
00317 #define ACCELERO_DRDY_GPIO_PORT          GPIOE                       /* GPIOE */
00318 #define ACCELERO_DRDY_GPIO_CLK_ENABLE()  __HAL_RCC_GPIOE_CLK_ENABLE() 
00319 #define ACCELERO_DRDY_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE() 
00320 #define ACCELERO_DRDY_EXTI_IRQn          EXTI2_TSC_IRQn              /*TAMP_STAMP_IRQn*/
00321 
00322 #define ACCELERO_INT_GPIO_PORT           GPIOE                       /* GPIOE */
00323 #define ACCELERO_INT_GPIO_CLK_ENABLE()   __HAL_RCC_GPIOE_CLK_ENABLE()
00324 #define ACCELERO_INT_GPIO_CLK_DISABLE()  __HAL_RCC_GPIOE_CLK_DISABLE()
00325 #define ACCELERO_INT1_PIN                GPIO_PIN_4                  /* PE.04 */
00326 #define ACCELERO_INT1_EXTI_IRQn          EXTI4_IRQn 
00327 #define ACCELERO_INT2_PIN                GPIO_PIN_5                  /* PE.05 */
00328 #define ACCELERO_INT2_EXTI_IRQn          EXTI9_5_IRQn 
00329 
00330 /**
00331   * @}
00332   */
00333 
00334 /**
00335   * @}
00336   */
00337 
00338 /** @defgroup STM32F3_DISCOVERY_Exported_Functions Exported Functions
00339   * @{
00340   */
00341 uint32_t  BSP_GetVersion(void);
00342 void      BSP_LED_Init(Led_TypeDef Led);
00343 void      BSP_LED_On(Led_TypeDef Led);
00344 void      BSP_LED_Off(Led_TypeDef Led);
00345 void      BSP_LED_Toggle(Led_TypeDef Led);
00346 void      BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode);
00347 uint32_t  BSP_PB_GetState(Button_TypeDef Button);
00348 
00349 /**
00350   * @}
00351   */
00352   
00353 /**
00354   * @}
00355   */ 
00356 
00357 /**
00358   * @}
00359   */ 
00360 
00361 /**
00362   * @}
00363   */
00364 
00365 #ifdef __cplusplus
00366 }
00367 #endif
00368 
00369 #endif /* __STM32F3_DISCOVERY_H */
00370 
00371 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Generated on Wed May 31 2017 10:47:40 for STM32F3-Discovery BSP User Manual by   doxygen 1.7.6.1