STM32L476G_EVAL BSP User Manual: stm32l476g_eval.h Source File

STM32L476G_EVAL BSP

stm32l476g_eval.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32l476g_eval.h
00004   * @author  MCD Application Team
00005   * @version $VERSION$
00006   * @date    $DATE$
00007   * @brief   This file contains definitions for STM32L476G_EVAL's LEDs, 
00008   *          push-buttons and COM ports hardware resources.
00009   ******************************************************************************
00010   * @attention
00011   *
00012   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
00013   *
00014   * Redistribution and use in source and binary forms, with or without modification,
00015   * are permitted provided that the following conditions are met:
00016   *   1. Redistributions of source code must retain the above copyright notice,
00017   *      this list of conditions and the following disclaimer.
00018   *   2. Redistributions in binary form must reproduce the above copyright notice,
00019   *      this list of conditions and the following disclaimer in the documentation
00020   *      and/or other materials provided with the distribution.
00021   *   3. Neither the name of STMicroelectronics nor the names of its contributors
00022   *      may be used to endorse or promote products derived from this software
00023   *      without specific prior written permission.
00024   *
00025   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00026   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00027   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00028   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00029   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00030   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00031   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00032   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00033   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00034   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00035   *
00036   ******************************************************************************
00037   */
00038 
00039 /* Define to prevent recursive inclusion -------------------------------------*/
00040 #ifndef __STM32L476G_EVAL_H
00041 #define __STM32L476G_EVAL_H
00042 
00043 #ifdef __cplusplus
00044  extern "C" {
00045 #endif
00046 
00047 /** 
00048   * @brief  Define for STM32L476G_EVAL board  
00049   */ 
00050 #if !defined(USE_STM32L476G_EVAL_REVA) && !defined(USE_STM32L476G_EVAL_REVB)
00051 #define USE_STM32L476G_EVAL_REVB
00052 #endif
00053 
00054 
00055 /* Includes ------------------------------------------------------------------*/
00056 #include "stm32l4xx_hal.h"
00057 
00058 /** @addtogroup BSP
00059   * @{
00060   */
00061 
00062 /** @addtogroup STM32L476G_EVAL
00063   * @{
00064   */
00065 
00066 
00067 /** @addtogroup STM32L476G_EVAL_Common
00068   * @{
00069   */
00070 
00071 /** @defgroup STM32L476G_EVAL_Exported_Types Exported Types
00072   * @{
00073   */
00074 
00075 /**
00076  * @brief LED Types Definition
00077  */
00078 typedef enum
00079 {
00080   LED1 = 0,
00081   LED_GREEN  = LED1,
00082 
00083 #if defined(USE_STM32L476G_EVAL_REVB)
00084   LED3 = 2,
00085   LED_RED    = LED3,
00086 #endif /* USE_STM32L476G_EVAL_REVB */
00087     
00088 #if defined(USE_IOEXPANDER)  /* LED2, LED3 and LED4 over IOExpander on RevA, LED2 and LED4 on RevB */
00089 
00090   LED2 = 1,
00091   LED_ORANGE = LED2,
00092 
00093 #if defined(USE_STM32L476G_EVAL_REVA)
00094   LED3 = 2,
00095   LED_RED    = LED3,
00096 #endif /* USE_STM32L476G_EVAL_REVA */
00097 
00098   LED4 = 3,
00099   LED_BLUE   = LED4
00100 #endif /* USE_IOEXPANDER */
00101 
00102 }Led_TypeDef;
00103 
00104 /**
00105  * @brief BUTTON Types Definition
00106  */
00107 typedef enum 
00108 {
00109   BUTTON_TAMPER = 0,
00110   BUTTON_SEL   = 1,
00111   BUTTON_LEFT  = 2,
00112   BUTTON_RIGHT = 3,
00113   BUTTON_DOWN  = 4,
00114   BUTTON_UP    = 5
00115 
00116 }Button_TypeDef;
00117 
00118 typedef enum 
00119 {  
00120   BUTTON_MODE_GPIO = 0,
00121   BUTTON_MODE_EXTI = 1
00122 
00123 }ButtonMode_TypeDef;
00124 
00125 #if defined(USE_IOEXPANDER)
00126 /**
00127  * @brief JOYSTICK Types Definition
00128  */
00129 typedef enum 
00130 { 
00131   JOY_SEL   = 0,
00132   JOY_LEFT  = 1,
00133   JOY_RIGHT = 2,
00134   JOY_DOWN  = 3,
00135   JOY_UP    = 4,
00136   JOY_NONE  = 5
00137 
00138 }JOYState_TypeDef;
00139 
00140 typedef enum 
00141 {  
00142   JOY_MODE_GPIO = 0,
00143   JOY_MODE_EXTI = 1
00144 
00145 }JOYMode_TypeDef;
00146 #endif /* USE_IOEXPANDER */
00147 
00148 /**
00149  * @brief COM Types Definition
00150  */
00151 typedef enum 
00152 {
00153   COM1 = 0
00154 
00155 }COM_TypeDef;
00156 
00157 /**
00158   * @}
00159   */
00160 
00161 /** @defgroup STM32L476G_EVAL_Exported_Constants Exported Constants
00162   * @{
00163   */
00164 
00165 /** @defgroup STM32L476G_EVAL_LED LED Constants
00166   * @{
00167   */
00168 #define LEDn                             4
00169 
00170 #define LED1_PIN                         GPIO_PIN_2
00171 #define LED1_GPIO_PORT                   GPIOB
00172 #define LED1_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOB_CLK_ENABLE()
00173 #define LED1_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOB_CLK_DISABLE()
00174  
00175 #if defined(USE_STM32L476G_EVAL_REVB)
00176 #define LED3_PIN                         GPIO_PIN_1
00177 #define LED3_GPIO_PORT                   GPIOC
00178 #define LED3_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOC_CLK_ENABLE()
00179 #define LED3_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOC_CLK_DISABLE()
00180 #endif /* USE_STM32L476G_EVAL_REVB */
00181 
00182 #if defined(USE_IOEXPANDER)
00183 /* LED2 is accessed thru the IO Expander */ 
00184 #define LED2_PIN                         IO1_PIN_0
00185 
00186 #if defined(USE_STM32L476G_EVAL_REVA)
00187 /* LED3 is accessed thru the IO Expander */ 
00188 #define LED3_PIN                         IO1_PIN_3
00189 #endif
00190 
00191 /* LED4 is accessed thru the IO Expander */ 
00192 #define LED4_PIN                         IO1_PIN_2
00193 #endif /* USE_IOEXPANDER */
00194 
00195 #if defined(USE_STM32L476G_EVAL_REVB)
00196 #define LEDx_GPIO_CLK_ENABLE(__LED__)    do { if((__LED__) == LED1) { LED1_GPIO_CLK_ENABLE(); } else \
00197                                               if((__LED__) == LED3) { LED3_GPIO_CLK_ENABLE(); } } while(0)
00198 
00199 #define LEDx_GPIO_CLK_DISABLE(__LED__)   do { if((__LED__) == LED1) { LED1_GPIO_CLK_DISABLE(); } else \
00200                                               if((__LED__) == LED3) { LED3_GPIO_CLK_DISABLE(); } } while(0)
00201 
00202 #elif defined(USE_STM32L476G_EVAL_REVA)
00203 #define LEDx_GPIO_CLK_ENABLE(__LED__)    do { if((__LED__) == LED1) { LED1_GPIO_CLK_ENABLE(); } } while(0)
00204 
00205 #define LEDx_GPIO_CLK_DISABLE(__LED__)   do { if((__LED__) == LED1) { LED1_GPIO_CLK_DISABLE(); } } while(0)
00206 
00207 #endif
00208 /**
00209   * @}
00210   */
00211 
00212 /** @defgroup STM32L476G_EVAL_BUTTON  BUTTON Constants
00213   * @{
00214   */
00215 #if defined(USE_IOEXPANDER)
00216 #define JOYn                             5
00217 #define BUTTONn                          1 + JOYn
00218 #else
00219 #define BUTTONn                          1
00220 #endif
00221 
00222 /**
00223  * @brief Tamper/wake-up push-button
00224  */
00225 #define TAMPER_BUTTON_PIN                GPIO_PIN_13
00226 #define TAMPER_BUTTON_GPIO_PORT          GPIOC
00227 #define TAMPER_BUTTON_GPIO_CLK_ENABLE()  __HAL_RCC_GPIOC_CLK_ENABLE()
00228 #define TAMPER_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
00229 #define TAMPER_BUTTON_EXTI_IRQn          EXTI15_10_IRQn
00230 
00231 #define BUTTONx_GPIO_CLK_ENABLE(__BUTTON__)     do { if((__BUTTON__) == BUTTON_TAMPER) { TAMPER_BUTTON_GPIO_CLK_ENABLE(); } } while(0)
00232 
00233 #define BUTTONx_GPIO_CLK_DISABLE(__BUTTON__)    do { if((__BUTTON__) == BUTTON_TAMPER) { TAMPER_BUTTON_GPIO_CLK_DISABLE(); } } while(0)
00234 
00235 
00236 #if defined(USE_IOEXPANDER)
00237 /**********************************************************/
00238 /* The joystick buttons are accessed thru the IO Expander */ 
00239 /**********************************************************/
00240 #define JOYSTICK_PIN                     GPIO_PIN_15
00241                                                 
00242 /**
00243  * @brief Joystick Right push-button
00244  */
00245 #define RIGHT_JOY_PIN                    IO2_PIN_3
00246 #define RIGHT_JOY_EXTI_IRQn              EXTI15_10_IRQn
00247 
00248 /**
00249  * @brief Joystick Left push-button
00250  */
00251 #define LEFT_JOY_PIN                     IO2_PIN_2
00252 #define LEFT_JOY_EXTI_IRQn               EXTI15_10_IRQn  
00253 
00254 /**
00255  * @brief Joystick Up push-button
00256  */
00257 #define UP_JOY_PIN                       IO2_PIN_4
00258 #define UP_JOY_EXTI_IRQn                 EXTI15_10_IRQn  
00259 
00260 /**
00261  * @brief Joystick Down push-button
00262  */  
00263 #define DOWN_JOY_PIN                     IO2_PIN_1
00264 #define DOWN_JOY_EXTI_IRQn               EXTI15_10_IRQn  
00265 
00266 /**
00267  * @brief Joystick Sel push-button
00268  */
00269 #define SEL_JOY_PIN                      IO2_PIN_0
00270 #define SEL_JOY_EXTI_IRQn                EXTI15_10_IRQn 
00271 
00272 
00273 #define JOY_ALL_PINS                     (RIGHT_JOY_PIN | LEFT_JOY_PIN | UP_JOY_PIN | DOWN_JOY_PIN | SEL_JOY_PIN)
00274 #endif /* USE_IOEXPANDER */
00275 
00276 /**
00277   * @}
00278   */
00279 
00280 /** @defgroup STM32L476G_EVAL_COM  COM Constants 
00281   * @{
00282   */
00283 #define COMn                                    1
00284 
00285 /**
00286  * @brief Definition for COM port1, connected to USART1
00287  */ 
00288 #define EVAL_COM1                               USART1
00289 #define EVAL_COM1_CLK_ENABLE()                  __HAL_RCC_USART1_CLK_ENABLE()
00290 #define EVAL_COM1_CLK_DISABLE()                 __HAL_RCC_USART1_CLK_DISABLE()
00291 
00292 #define EVAL_COM1_TX_PIN                        GPIO_PIN_6
00293 #define EVAL_COM1_TX_GPIO_PORT                  GPIOB
00294 #define EVAL_COM1_TX_GPIO_CLK_ENABLE()          __HAL_RCC_GPIOB_CLK_ENABLE()
00295 #define EVAL_COM1_TX_GPIO_CLK_DISABLE()         __HAL_RCC_GPIOB_CLK_DISABLE()
00296 #define EVAL_COM1_TX_AF                         GPIO_AF7_USART1
00297 
00298 #define EVAL_COM1_RX_PIN                        GPIO_PIN_7
00299 #define EVAL_COM1_RX_GPIO_PORT                  GPIOB
00300 #define EVAL_COM1_RX_GPIO_CLK_ENABLE()          __HAL_RCC_GPIOB_CLK_ENABLE()
00301 #define EVAL_COM1_RX_GPIO_CLK_DISABLE()         __HAL_RCC_GPIOB_CLK_DISABLE()
00302 #define EVAL_COM1_RX_AF                         GPIO_AF7_USART1
00303    
00304 #define EVAL_COM1_IRQn                          USART1_IRQn
00305 
00306 #define COMx_CLK_ENABLE(__INDEX__)              do { if((__INDEX__) == COM1) { EVAL_COM1_CLK_ENABLE(); } } while(0)
00307 #define COMx_CLK_DISABLE(__INDEX__)             do { if((__INDEX__) == COM1) { EVAL_COM1_CLK_DISABLE(); } } while(0)
00308 
00309 #define COMx_TX_GPIO_CLK_ENABLE(__INDEX__)      do { if((__INDEX__) == COM1) { EVAL_COM1_TX_GPIO_CLK_ENABLE(); } } while(0)
00310 #define COMx_TX_GPIO_CLK_DISABLE(__INDEX__)     do { if((__INDEX__) == COM1) { EVAL_COM1_TX_GPIO_CLK_DISABLE(); } } while(0)
00311 
00312 #define COMx_RX_GPIO_CLK_ENABLE(__INDEX__)      do { if((__INDEX__) == COM1) { EVAL_COM1_RX_GPIO_CLK_ENABLE(); } } while(0)
00313 #define COMx_RX_GPIO_CLK_DISABLE(__INDEX__)     do { if((__INDEX__) == COM1) { EVAL_COM1_RX_GPIO_CLK_DISABLE(); } } while(0)
00314 /**
00315   * @}
00316   */
00317 
00318 /** @defgroup STM32L476G_EVAL_BUS  BUS Constants
00319   * @{
00320   */
00321 /* Exported constant IO ------------------------------------------------------*/
00322 /*##################### I2Cx ###################################*/
00323 /* User can use this section to tailor I2Cx instance used and associated 
00324    resources */
00325 /* Definition for I2Cx Pins */
00326 #define EVAL_I2Cx_SCL_PIN                       GPIO_PIN_14
00327 #define EVAL_I2Cx_SCL_GPIO_PORT                 GPIOG
00328 #define EVAL_I2Cx_SDA_PIN                       GPIO_PIN_13
00329 #define EVAL_I2Cx_SDA_GPIO_PORT                 GPIOG
00330 #define EVAL_I2Cx_SCL_SDA_AF                    GPIO_AF4_I2C1
00331 
00332 /* Definition for I2Cx clock resources */
00333 #define EVAL_I2Cx                               I2C1
00334 #define EVAL_I2Cx_CLK_ENABLE()                  __HAL_RCC_I2C1_CLK_ENABLE()
00335 #define EVAL_I2Cx_SDA_GPIO_CLK_ENABLE()         __HAL_RCC_GPIOG_CLK_ENABLE()
00336 #define EVAL_I2Cx_SCL_GPIO_CLK_ENABLE()         __HAL_RCC_GPIOG_CLK_ENABLE() 
00337 
00338 #define EVAL_I2Cx_FORCE_RESET()                 __HAL_RCC_I2C1_FORCE_RESET()
00339 #define EVAL_I2Cx_RELEASE_RESET()               __HAL_RCC_I2C1_RELEASE_RESET()
00340     
00341 /* Definition for I2Cx's NVIC */
00342 #define EVAL_I2Cx_EV_IRQn                       I2C1_EV_IRQn
00343 #define EVAL_I2Cx_EV_IRQHandler                 I2C1_EV_IRQHandler
00344 #define EVAL_I2Cx_ER_IRQn                       I2C1_ER_IRQn
00345 #define EVAL_I2Cx_ER_IRQHandler                 I2C1_ER_IRQHandler
00346 
00347 /* I2C TIMING Register define when I2C clock source is SYSCLK */
00348 /* I2C TIMING is calculated in case of the I2C Clock source is the SYSCLK = 80 MHz */
00349 /* Set 0x90112626 value to reach 100 KHz speed (Rise time = 640ns, Fall time = 20ns) */
00350 #ifndef EVAL_I2Cx_TIMING
00351  #define EVAL_I2Cx_TIMING                       0x90112626
00352 #endif /* EVAL_I2Cx_TIMING */
00353 
00354 
00355 /* Exported constantIO -------------------------------------------------------*/
00356 /* I2C clock speed configuration (in Hz) 
00357    WARNING: 
00358    Make sure that this define is not already declared in other files (ie. 
00359    stm324xg_eval.h file). It can be used in parallel by other modules. */
00360 #ifndef BSP_I2C_SPEED
00361  #define BSP_I2C_SPEED                            100000
00362 #endif /* BSP_I2C_SPEED */
00363 
00364 
00365 #define IO1_I2C_ADDRESS                       0x82
00366 #define IO2_I2C_ADDRESS                       0x84
00367 #define AUDIO_I2C_ADDRESS                     0x34
00368 
00369 /* Maximum Timeout values for flags waiting loops. These timeouts are not based
00370    on accurate values, they just guarantee that the application will not remain
00371    stuck if the I2C communication is corrupted.
00372    You may modify these timeout values depending on CPU frequency and application
00373    conditions (interrupts routines ...). */   
00374 #define EVAL_I2Cx_TIMEOUT_MAX                   3000
00375 
00376 /**
00377   * @}
00378   */
00379 
00380 /**
00381   * @}
00382   */
00383 
00384 /** @defgroup STM32L476G_EVAL_Exported_Functions Exported Functions
00385   * @{
00386   */
00387 uint32_t                BSP_GetVersion(void);
00388 void                    BSP_LED_Init(Led_TypeDef Led);
00389 void                    BSP_LED_On(Led_TypeDef Led);
00390 void                    BSP_LED_Off(Led_TypeDef Led);
00391 void                    BSP_LED_Toggle(Led_TypeDef Led);
00392 void                    BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef Button_Mode);
00393 uint32_t                BSP_PB_GetState(Button_TypeDef Button);
00394 #ifdef HAL_UART_MODULE_ENABLED
00395 void                    BSP_COM_Init(COM_TypeDef COM, UART_HandleTypeDef* huart);
00396 #endif /* HAL_UART_MODULE_ENABLED */
00397 #if defined(USE_IOEXPANDER)
00398 uint8_t                 BSP_JOY_Init(JOYMode_TypeDef Joy_Mode);
00399 JOYState_TypeDef        BSP_JOY_GetState(void);
00400 #endif /* USE_IOEXPANDER */
00401 
00402 /**
00403   * @}
00404   */
00405 
00406 /**
00407   * @}
00408   */
00409 
00410 /**
00411   * @}
00412   */
00413 
00414 /**
00415   * @}
00416   */
00417 
00418 #ifdef __cplusplus
00419 }
00420 #endif
00421 
00422 #endif /* __STM32L476G_EVAL_H */
00423 
00424 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Generated on Sun Jun 21 2015 23:46:41 for STM32L476G_EVAL BSP User Manual by   doxygen 1.7.6.1