1 /** 2 ****************************************************************************** 3 * @file stm32wlxx_nucleo.h 4 * @author MCD Application Team 5 * @brief Header for stm32wlxx_nucleo.c 6 ****************************************************************************** 7 * @attention 8 * 9 * <h2><center>© Copyright (c) 2019 STMicroelectronics. 10 * All rights reserved.</center></h2> 11 * 12 * This software component is licensed by ST under BSD 3-Clause license, 13 * the "License"; You may not use this file except in compliance with the 14 * License. You may obtain a copy of the License at: 15 * opensource.org/licenses/BSD-3-Clause 16 * 17 ****************************************************************************** 18 */ 19 20 /* Define to prevent recursive inclusion -------------------------------------*/ 21 #ifndef STM32WLXX_NUCLEO_H 22 #define STM32WLXX_NUCLEO_H 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif 27 28 /* Includes ------------------------------------------------------------------*/ 29 #include "stm32wlxx_nucleo_errno.h" 30 #include "stm32wlxx_nucleo_conf.h" 31 32 #if (USE_BSP_COM_FEATURE > 0) 33 #if (USE_COM_LOG > 0) 34 #ifndef __GNUC__ 35 #include "stdio.h" 36 #endif 37 #endif 38 #endif 39 40 /** @addtogroup BSP 41 * @{ 42 */ 43 44 /** @defgroup STM32WLXX_NUCLEO STM32WLXX-NUCLEO 45 * @{ 46 */ 47 48 /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL LOW LEVEL 49 * @{ 50 */ 51 52 /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Types LOW LEVEL Exported Types 53 * @{ 54 */ 55 typedef enum 56 { 57 LED1 = 0, 58 LED2 = 1, 59 LED3 = 2, 60 /* Color led aliases */ 61 LED_BLUE = LED1, 62 LED_GREEN = LED2, 63 LED_RED = LED3 64 }Led_TypeDef; 65 66 typedef enum 67 { 68 BUTTON_SW1 = 0, 69 BUTTON_SW2 = 1, 70 BUTTON_SW3 = 2, 71 }Button_TypeDef; 72 73 typedef enum 74 { 75 BUTTON_MODE_GPIO = 0, 76 BUTTON_MODE_EXTI = 1 77 }ButtonMode_TypeDef; 78 79 #if (USE_BSP_COM_FEATURE > 0) 80 typedef enum 81 { 82 COM1 = 0U, 83 COMn 84 }COM_TypeDef; 85 86 typedef enum 87 { 88 COM_STOPBITS_1 = UART_STOPBITS_1, 89 COM_STOPBITS_2 = UART_STOPBITS_2, 90 }COM_StopBitsTypeDef; 91 92 typedef enum 93 { 94 COM_PARITY_NONE = UART_PARITY_NONE, 95 COM_PARITY_EVEN = UART_PARITY_EVEN, 96 COM_PARITY_ODD = UART_PARITY_ODD, 97 }COM_ParityTypeDef; 98 99 typedef enum 100 { 101 COM_HWCONTROL_NONE = UART_HWCONTROL_NONE, 102 COM_HWCONTROL_RTS = UART_HWCONTROL_RTS, 103 COM_HWCONTROL_CTS = UART_HWCONTROL_CTS, 104 COM_HWCONTROL_RTS_CTS = UART_HWCONTROL_RTS_CTS, 105 }COM_HwFlowCtlTypeDef; 106 107 typedef enum 108 { 109 COM_WORDLENGTH_7B = UART_WORDLENGTH_7B, 110 COM_WORDLENGTH_8B = UART_WORDLENGTH_8B, 111 COM_WORDLENGTH_9B = UART_WORDLENGTH_9B, 112 }COM_WordLengthTypeDef; 113 114 typedef struct 115 { 116 uint32_t BaudRate; 117 COM_WordLengthTypeDef WordLength; 118 COM_StopBitsTypeDef StopBits; 119 COM_ParityTypeDef Parity; 120 COM_HwFlowCtlTypeDef HwFlowCtl; 121 }COM_InitTypeDef; 122 123 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 124 typedef struct 125 { 126 pUART_CallbackTypeDef pMspInitCb; 127 pUART_CallbackTypeDef pMspDeInitCb; 128 }BSP_COM_Cb_t; 129 #endif /* (USE_HAL_UART_REGISTER_CALLBACKS == 1) */ 130 #endif /* (USE_BSP_COM_FEATURE > 0) */ 131 132 typedef enum 133 { 134 ABSENT = 0, 135 PRESENT = 1, 136 }Presence_TypeDef; 137 /** 138 * @} 139 */ 140 141 /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Constants LOW LEVEL Exported Constants 142 * @{ 143 */ 144 145 /** 146 * @brief STM32WLXX NUCLEO BSP Driver version number 147 */ 148 #define __STM32WLXX_NUCLEO_BSP_VERSION_MAIN (0x00U) /*!< [31:24] main version */ 149 #define __STM32WLXX_NUCLEO_BSP_VERSION_SUB1 (0x03U) /*!< [23:16] sub1 version */ 150 #define __STM32WLXX_NUCLEO_BSP_VERSION_SUB2 (0x00U) /*!< [15:8] sub2 version */ 151 #define __STM32WLXX_NUCLEO_BSP_VERSION_RC (0x00U) /*!< [7:0] release candidate */ 152 #define __STM32WLXX_NUCLEO_BSP_VERSION ((__STM32WLXX_NUCLEO_BSP_VERSION_MAIN << 24)\ 153 |(__STM32WLXX_NUCLEO_BSP_VERSION_SUB1 << 16)\ 154 |(__STM32WLXX_NUCLEO_BSP_VERSION_SUB2 << 8 )\ 155 |(__STM32WLXX_NUCLEO_BSP_VERSION_RC)) 156 157 /** 158 * @brief Define for STM32WLXX_NUCLEO board 159 */ 160 #if !defined (USE_STM32WLXX_NUCLEO) 161 #define USE_STM32WLXX_NUCLEO 162 #endif 163 164 /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_LED LOW LEVEL LED Constants 165 * @{ 166 */ 167 #define LEDn 3 168 169 #define LED1_PIN GPIO_PIN_15 170 #define LED1_GPIO_PORT GPIOB 171 #define LED1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() 172 #define LED1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_ENABLE() 173 174 #define LED2_PIN GPIO_PIN_9 175 #define LED2_GPIO_PORT GPIOB 176 #define LED2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() 177 #define LED2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_ENABLE() 178 179 #define LED3_PIN GPIO_PIN_11 180 #define LED3_GPIO_PORT GPIOB 181 #define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() 182 #define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_ENABLE() 183 184 #define LEDx_GPIO_CLK_ENABLE(__INDEX__) __HAL_RCC_GPIOB_CLK_ENABLE() /* All Led on same port */ 185 #define LEDx_GPIO_CLK_DISABLE(__INDEX__) __HAL_RCC_GPIOB_CLK_ENABLE() /* All Led on same port */ 186 /** 187 * @} 188 */ 189 190 /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_BUTTON LOW LEVEL BUTTON Constants 191 * @{ 192 */ 193 #define BUTTONn 3 194 195 /** 196 * @brief Key push-buttons 197 */ 198 #define BUTTON_SW1_PIN GPIO_PIN_0 199 #define BUTTON_SW1_GPIO_PORT GPIOA 200 #define BUTTON_SW1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() 201 #define BUTTON_SW1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE() 202 #define BUTTON_SW1_EXTI_LINE EXTI_LINE_0 203 #ifdef CORE_CM0PLUS 204 #define BUTTON_SW1_EXTI_IRQn EXTI1_0_IRQn 205 #else 206 #define BUTTON_SW1_EXTI_IRQn EXTI0_IRQn 207 #endif 208 209 #define BUTTON_SW2_PIN GPIO_PIN_1 210 #define BUTTON_SW2_GPIO_PORT GPIOA 211 #define BUTTON_SW2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() 212 #define BUTTON_SW2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE() 213 #define BUTTON_SW2_EXTI_LINE EXTI_LINE_1 214 #ifdef CORE_CM0PLUS 215 #define BUTTON_SW2_EXTI_IRQn EXTI1_0_IRQn 216 #else 217 #define BUTTON_SW2_EXTI_IRQn EXTI1_IRQn 218 #endif 219 220 #define BUTTON_SW3_PIN GPIO_PIN_6 221 #define BUTTON_SW3_GPIO_PORT GPIOC 222 #define BUTTON_SW3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() 223 #define BUTTON_SW3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE() 224 #define BUTTON_SW3_EXTI_LINE EXTI_LINE_6 225 #ifdef CORE_CM0PLUS 226 #define BUTTON_SW3_EXTI_IRQn EXTI15_4_IRQn 227 #else 228 #define BUTTON_SW3_EXTI_IRQn EXTI9_5_IRQn 229 #endif 230 231 #define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do { if ((__INDEX__) == BUTTON_SW1) BUTTON_SW1_GPIO_CLK_ENABLE(); else \ 232 if ((__INDEX__) == BUTTON_SW2) BUTTON_SW2_GPIO_CLK_ENABLE(); else \ 233 if ((__INDEX__) == BUTTON_SW3) BUTTON_SW3_GPIO_CLK_ENABLE();} while(0) 234 235 #define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do { if ((__INDEX__) == BUTTON_SW1) BUTTON_SW1_GPIO_CLK_DISABLE(); else \ 236 if ((__INDEX__) == BUTTON_SW2) BUTTON_SW2_GPIO_CLK_DISABLE(); else \ 237 if ((__INDEX__) == BUTTON_SW3) BUTTON_SW3_GPIO_CLK_DISABLE();} while(0) 238 239 /** 240 * @} 241 */ 242 243 #if (USE_BSP_COM_FEATURE > 0) 244 /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_COM LOW LEVEL COM Port Constants 245 * @{ 246 */ 247 #define COM1_UART LPUART1 248 #define COM1_CLK_ENABLE() __HAL_RCC_LPUART1_CLK_ENABLE() 249 #define COM1_CLK_DISABLE() __HAL_RCC_LPUART1_CLK_DISABLE() 250 251 #define COM1_TX_PIN GPIO_PIN_2 252 #define COM1_TX_GPIO_PORT GPIOA 253 #define COM1_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() 254 #define COM1_TX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE() 255 #define COM1_TX_AF GPIO_AF8_LPUART1 256 257 #define COM1_RX_PIN GPIO_PIN_3 258 #define COM1_RX_GPIO_PORT GPIOA 259 #define COM1_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() 260 #define COM1_RX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE() 261 #define COM1_RX_AF GPIO_AF8_LPUART1 262 #define COM_POLL_TIMEOUT 1000 263 264 #define MX_UART_InitTypeDef COM_InitTypeDef 265 /** 266 * @} 267 */ 268 #endif /* (USE_BSP_COM_FEATURE > 0)*/ 269 270 /** 271 * @} 272 */ 273 274 /** @addtogroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Variables 275 * @{ 276 */ 277 extern EXTI_HandleTypeDef hpb_exti[]; 278 #if (USE_BSP_COM_FEATURE > 0) 279 extern UART_HandleTypeDef hcom_uart[]; 280 #endif /* (USE_BSP_COM_FEATURE > 0) */ 281 /** 282 * @} 283 */ 284 285 /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Functions LOW LEVEL Exported Functions 286 * @{ 287 */ 288 uint32_t BSP_GetVersion(void); 289 290 /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_LED_Functions LOW LEVEL LED Functions 291 * @{ 292 */ 293 int32_t BSP_LED_Init(Led_TypeDef Led); 294 int32_t BSP_LED_DeInit(Led_TypeDef Led); 295 int32_t BSP_LED_On(Led_TypeDef Led); 296 int32_t BSP_LED_Off(Led_TypeDef Led); 297 int32_t BSP_LED_Toggle(Led_TypeDef Led); 298 int32_t BSP_LED_GetState(Led_TypeDef Led); 299 /** 300 * @} 301 */ 302 303 /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_BUTTON_Functions LOW LEVEL BUTTON Functions 304 * @{ 305 */ 306 int32_t BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode); 307 int32_t BSP_PB_DeInit(Button_TypeDef Button); 308 int32_t BSP_PB_GetState(Button_TypeDef Button); 309 void BSP_PB_Callback(Button_TypeDef Button); 310 void BSP_PB_IRQHandler(Button_TypeDef Button); 311 /** 312 * @} 313 */ 314 315 #if (USE_BSP_COM_FEATURE > 0) 316 /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_COM_Functions LOW LEVEL COM Port Functions 317 * @{ 318 */ 319 int32_t BSP_COM_Init(COM_TypeDef COM, COM_InitTypeDef *COM_Init); 320 int32_t BSP_COM_DeInit(COM_TypeDef COM); 321 #if (USE_COM_LOG > 0) 322 int32_t BSP_COM_SelectLogPort (COM_TypeDef COM); 323 #endif 324 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 325 int32_t BSP_COM_RegisterDefaultMspCallbacks(COM_TypeDef COM); 326 int32_t BSP_COM_RegisterMspCallbacks(COM_TypeDef COM , BSP_COM_Cb_t *Callback); 327 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ 328 HAL_StatusTypeDef MX_LPUART1_Init(UART_HandleTypeDef *huart, MX_UART_InitTypeDef *COM_Init); 329 /** 330 * @} 331 */ 332 #endif /* (USE_BSP_COM_FEATURE > 0) */ 333 334 /** 335 * @} 336 */ 337 338 /** 339 * @} 340 */ 341 342 /** 343 * @} 344 */ 345 346 /** 347 * @} 348 */ 349 350 #ifdef __cplusplus 351 } 352 #endif 353 354 #endif /* STM32WLXX_NUCLEO_H */ 355 356 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 357 358