STM32L476G_EVAL BSP User Manual
|
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>© 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
