mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Fri Aug 14 13:15:17 2015 +0100
Revision:
610:813dcc80987e
Synchronized with git revision 6d84db41c6833e0b9b024741eb0616a5f62d5599

Full URL: https://github.com/mbedmicro/mbed/commit/6d84db41c6833e0b9b024741eb0616a5f62d5599/

DISCO_F746NG - Improvements

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 610:813dcc80987e 1 /**
mbed_official 610:813dcc80987e 2 ******************************************************************************
mbed_official 610:813dcc80987e 3 * @file stm32l4xx_hal_uart_ex.h
mbed_official 610:813dcc80987e 4 * @author MCD Application Team
mbed_official 610:813dcc80987e 5 * @version V1.0.0
mbed_official 610:813dcc80987e 6 * @date 26-June-2015
mbed_official 610:813dcc80987e 7 * @brief Header file of UART HAL Extended module.
mbed_official 610:813dcc80987e 8 ******************************************************************************
mbed_official 610:813dcc80987e 9 * @attention
mbed_official 610:813dcc80987e 10 *
mbed_official 610:813dcc80987e 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 610:813dcc80987e 12 *
mbed_official 610:813dcc80987e 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 610:813dcc80987e 14 * are permitted provided that the following conditions are met:
mbed_official 610:813dcc80987e 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 610:813dcc80987e 16 * this list of conditions and the following disclaimer.
mbed_official 610:813dcc80987e 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 610:813dcc80987e 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 610:813dcc80987e 19 * and/or other materials provided with the distribution.
mbed_official 610:813dcc80987e 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 610:813dcc80987e 21 * may be used to endorse or promote products derived from this software
mbed_official 610:813dcc80987e 22 * without specific prior written permission.
mbed_official 610:813dcc80987e 23 *
mbed_official 610:813dcc80987e 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 610:813dcc80987e 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 610:813dcc80987e 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 610:813dcc80987e 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 610:813dcc80987e 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 610:813dcc80987e 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 610:813dcc80987e 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 610:813dcc80987e 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 610:813dcc80987e 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 610:813dcc80987e 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 610:813dcc80987e 34 *
mbed_official 610:813dcc80987e 35 ******************************************************************************
mbed_official 610:813dcc80987e 36 */
mbed_official 610:813dcc80987e 37
mbed_official 610:813dcc80987e 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 610:813dcc80987e 39 #ifndef __STM32L4xx_HAL_UART_EX_H
mbed_official 610:813dcc80987e 40 #define __STM32L4xx_HAL_UART_EX_H
mbed_official 610:813dcc80987e 41
mbed_official 610:813dcc80987e 42 #ifdef __cplusplus
mbed_official 610:813dcc80987e 43 extern "C" {
mbed_official 610:813dcc80987e 44 #endif
mbed_official 610:813dcc80987e 45
mbed_official 610:813dcc80987e 46 /* Includes ------------------------------------------------------------------*/
mbed_official 610:813dcc80987e 47 #include "stm32l4xx_hal_def.h"
mbed_official 610:813dcc80987e 48
mbed_official 610:813dcc80987e 49 /** @addtogroup STM32L4xx_HAL_Driver
mbed_official 610:813dcc80987e 50 * @{
mbed_official 610:813dcc80987e 51 */
mbed_official 610:813dcc80987e 52
mbed_official 610:813dcc80987e 53 /** @addtogroup UARTEx
mbed_official 610:813dcc80987e 54 * @{
mbed_official 610:813dcc80987e 55 */
mbed_official 610:813dcc80987e 56
mbed_official 610:813dcc80987e 57 /* Exported types ------------------------------------------------------------*/
mbed_official 610:813dcc80987e 58 /** @defgroup UARTEx_Exported_Types UARTEx Exported Types
mbed_official 610:813dcc80987e 59 * @{
mbed_official 610:813dcc80987e 60 */
mbed_official 610:813dcc80987e 61
mbed_official 610:813dcc80987e 62 /**
mbed_official 610:813dcc80987e 63 * @brief UART wake up from stop mode parameters
mbed_official 610:813dcc80987e 64 */
mbed_official 610:813dcc80987e 65 typedef struct
mbed_official 610:813dcc80987e 66 {
mbed_official 610:813dcc80987e 67 uint32_t WakeUpEvent; /*!< Specifies which event will activat the Wakeup from Stop mode flag (WUF).
mbed_official 610:813dcc80987e 68 This parameter can be a value of @ref UART_WakeUp_from_Stop_Selection.
mbed_official 610:813dcc80987e 69 If set to UART_WAKEUP_ON_ADDRESS, the two other fields below must
mbed_official 610:813dcc80987e 70 be filled up. */
mbed_official 610:813dcc80987e 71
mbed_official 610:813dcc80987e 72 uint16_t AddressLength; /*!< Specifies whether the address is 4 or 7-bit long.
mbed_official 610:813dcc80987e 73 This parameter can be a value of @ref UARTEx_WakeUp_Address_Length. */
mbed_official 610:813dcc80987e 74
mbed_official 610:813dcc80987e 75 uint8_t Address; /*!< UART/USART node address (7-bit long max). */
mbed_official 610:813dcc80987e 76 } UART_WakeUpTypeDef;
mbed_official 610:813dcc80987e 77
mbed_official 610:813dcc80987e 78 /**
mbed_official 610:813dcc80987e 79 * @}
mbed_official 610:813dcc80987e 80 */
mbed_official 610:813dcc80987e 81
mbed_official 610:813dcc80987e 82 /* Exported constants --------------------------------------------------------*/
mbed_official 610:813dcc80987e 83 /** @defgroup UARTEx_Exported_Constants UARTEx Exported Constants
mbed_official 610:813dcc80987e 84 * @{
mbed_official 610:813dcc80987e 85 */
mbed_official 610:813dcc80987e 86
mbed_official 610:813dcc80987e 87 /** @defgroup UARTEx_Word_Length UART Word Length
mbed_official 610:813dcc80987e 88 * @{
mbed_official 610:813dcc80987e 89 */
mbed_official 610:813dcc80987e 90 #define UART_WORDLENGTH_7B ((uint32_t)USART_CR1_M1) /*!< 7-bit long UART frame */
mbed_official 610:813dcc80987e 91 #define UART_WORDLENGTH_8B ((uint32_t)0x00000000) /*!< 8-bit long UART frame */
mbed_official 610:813dcc80987e 92 #define UART_WORDLENGTH_9B ((uint32_t)USART_CR1_M0) /*!< 9-bit long UART frame */
mbed_official 610:813dcc80987e 93 /**
mbed_official 610:813dcc80987e 94 * @}
mbed_official 610:813dcc80987e 95 */
mbed_official 610:813dcc80987e 96
mbed_official 610:813dcc80987e 97 /** @defgroup UARTEx_WakeUp_Address_Length UART Extended WakeUp Address Length
mbed_official 610:813dcc80987e 98 * @{
mbed_official 610:813dcc80987e 99 */
mbed_official 610:813dcc80987e 100 #define UART_ADDRESS_DETECT_4B ((uint32_t)0x00000000) /*!< 4-bit long wake-up address */
mbed_official 610:813dcc80987e 101 #define UART_ADDRESS_DETECT_7B ((uint32_t)USART_CR2_ADDM7) /*!< 7-bit long wake-up address */
mbed_official 610:813dcc80987e 102 /**
mbed_official 610:813dcc80987e 103 * @}
mbed_official 610:813dcc80987e 104 */
mbed_official 610:813dcc80987e 105
mbed_official 610:813dcc80987e 106 /**
mbed_official 610:813dcc80987e 107 * @}
mbed_official 610:813dcc80987e 108 */
mbed_official 610:813dcc80987e 109
mbed_official 610:813dcc80987e 110 /* Exported macros -----------------------------------------------------------*/
mbed_official 610:813dcc80987e 111 /* Exported functions --------------------------------------------------------*/
mbed_official 610:813dcc80987e 112 /** @addtogroup UARTEx_Exported_Functions
mbed_official 610:813dcc80987e 113 * @{
mbed_official 610:813dcc80987e 114 */
mbed_official 610:813dcc80987e 115
mbed_official 610:813dcc80987e 116 /** @addtogroup UARTEx_Exported_Functions_Group1
mbed_official 610:813dcc80987e 117 * @{
mbed_official 610:813dcc80987e 118 */
mbed_official 610:813dcc80987e 119
mbed_official 610:813dcc80987e 120 /* Initialization and de-initialization functions ****************************/
mbed_official 610:813dcc80987e 121 HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, uint32_t DeassertionTime);
mbed_official 610:813dcc80987e 122
mbed_official 610:813dcc80987e 123 /**
mbed_official 610:813dcc80987e 124 * @}
mbed_official 610:813dcc80987e 125 */
mbed_official 610:813dcc80987e 126
mbed_official 610:813dcc80987e 127 /* IO operation functions *****************************************************/
mbed_official 610:813dcc80987e 128
mbed_official 610:813dcc80987e 129 /** @addtogroup UARTEx_Exported_Functions_Group3
mbed_official 610:813dcc80987e 130 * @{
mbed_official 610:813dcc80987e 131 */
mbed_official 610:813dcc80987e 132
mbed_official 610:813dcc80987e 133 /* Peripheral Control functions **********************************************/
mbed_official 610:813dcc80987e 134 HAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection);
mbed_official 610:813dcc80987e 135 HAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart);
mbed_official 610:813dcc80987e 136 HAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart);
mbed_official 610:813dcc80987e 137 HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength);
mbed_official 610:813dcc80987e 138 void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart);
mbed_official 610:813dcc80987e 139
mbed_official 610:813dcc80987e 140 /**
mbed_official 610:813dcc80987e 141 * @}
mbed_official 610:813dcc80987e 142 */
mbed_official 610:813dcc80987e 143
mbed_official 610:813dcc80987e 144 /**
mbed_official 610:813dcc80987e 145 * @}
mbed_official 610:813dcc80987e 146 */
mbed_official 610:813dcc80987e 147
mbed_official 610:813dcc80987e 148 /* Private macros ------------------------------------------------------------*/
mbed_official 610:813dcc80987e 149 /** @defgroup UARTEx_Private_Macros UARTEx Private Macros
mbed_official 610:813dcc80987e 150 * @{
mbed_official 610:813dcc80987e 151 */
mbed_official 610:813dcc80987e 152
mbed_official 610:813dcc80987e 153 /** @brief Report the UART clock source.
mbed_official 610:813dcc80987e 154 * @param __HANDLE__: specifies the UART Handle.
mbed_official 610:813dcc80987e 155 * @param __CLOCKSOURCE__: output variable.
mbed_official 610:813dcc80987e 156 * @retval UART clocking source, written in __CLOCKSOURCE__.
mbed_official 610:813dcc80987e 157 */
mbed_official 610:813dcc80987e 158 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
mbed_official 610:813dcc80987e 159 do { \
mbed_official 610:813dcc80987e 160 if((__HANDLE__)->Instance == USART1) \
mbed_official 610:813dcc80987e 161 { \
mbed_official 610:813dcc80987e 162 switch(__HAL_RCC_GET_USART1_SOURCE()) \
mbed_official 610:813dcc80987e 163 { \
mbed_official 610:813dcc80987e 164 case RCC_USART1CLKSOURCE_PCLK2: \
mbed_official 610:813dcc80987e 165 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \
mbed_official 610:813dcc80987e 166 break; \
mbed_official 610:813dcc80987e 167 case RCC_USART1CLKSOURCE_HSI: \
mbed_official 610:813dcc80987e 168 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 610:813dcc80987e 169 break; \
mbed_official 610:813dcc80987e 170 case RCC_USART1CLKSOURCE_SYSCLK: \
mbed_official 610:813dcc80987e 171 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 610:813dcc80987e 172 break; \
mbed_official 610:813dcc80987e 173 case RCC_USART1CLKSOURCE_LSE: \
mbed_official 610:813dcc80987e 174 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 610:813dcc80987e 175 break; \
mbed_official 610:813dcc80987e 176 default: \
mbed_official 610:813dcc80987e 177 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 610:813dcc80987e 178 break; \
mbed_official 610:813dcc80987e 179 } \
mbed_official 610:813dcc80987e 180 } \
mbed_official 610:813dcc80987e 181 else if((__HANDLE__)->Instance == USART2) \
mbed_official 610:813dcc80987e 182 { \
mbed_official 610:813dcc80987e 183 switch(__HAL_RCC_GET_USART2_SOURCE()) \
mbed_official 610:813dcc80987e 184 { \
mbed_official 610:813dcc80987e 185 case RCC_USART2CLKSOURCE_PCLK1: \
mbed_official 610:813dcc80987e 186 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 610:813dcc80987e 187 break; \
mbed_official 610:813dcc80987e 188 case RCC_USART2CLKSOURCE_HSI: \
mbed_official 610:813dcc80987e 189 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 610:813dcc80987e 190 break; \
mbed_official 610:813dcc80987e 191 case RCC_USART2CLKSOURCE_SYSCLK: \
mbed_official 610:813dcc80987e 192 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 610:813dcc80987e 193 break; \
mbed_official 610:813dcc80987e 194 case RCC_USART2CLKSOURCE_LSE: \
mbed_official 610:813dcc80987e 195 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 610:813dcc80987e 196 break; \
mbed_official 610:813dcc80987e 197 default: \
mbed_official 610:813dcc80987e 198 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 610:813dcc80987e 199 break; \
mbed_official 610:813dcc80987e 200 } \
mbed_official 610:813dcc80987e 201 } \
mbed_official 610:813dcc80987e 202 else if((__HANDLE__)->Instance == USART3) \
mbed_official 610:813dcc80987e 203 { \
mbed_official 610:813dcc80987e 204 switch(__HAL_RCC_GET_USART3_SOURCE()) \
mbed_official 610:813dcc80987e 205 { \
mbed_official 610:813dcc80987e 206 case RCC_USART3CLKSOURCE_PCLK1: \
mbed_official 610:813dcc80987e 207 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 610:813dcc80987e 208 break; \
mbed_official 610:813dcc80987e 209 case RCC_USART3CLKSOURCE_HSI: \
mbed_official 610:813dcc80987e 210 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 610:813dcc80987e 211 break; \
mbed_official 610:813dcc80987e 212 case RCC_USART3CLKSOURCE_SYSCLK: \
mbed_official 610:813dcc80987e 213 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 610:813dcc80987e 214 break; \
mbed_official 610:813dcc80987e 215 case RCC_USART3CLKSOURCE_LSE: \
mbed_official 610:813dcc80987e 216 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 610:813dcc80987e 217 break; \
mbed_official 610:813dcc80987e 218 default: \
mbed_official 610:813dcc80987e 219 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 610:813dcc80987e 220 break; \
mbed_official 610:813dcc80987e 221 } \
mbed_official 610:813dcc80987e 222 } \
mbed_official 610:813dcc80987e 223 else if((__HANDLE__)->Instance == UART4) \
mbed_official 610:813dcc80987e 224 { \
mbed_official 610:813dcc80987e 225 switch(__HAL_RCC_GET_UART4_SOURCE()) \
mbed_official 610:813dcc80987e 226 { \
mbed_official 610:813dcc80987e 227 case RCC_UART4CLKSOURCE_PCLK1: \
mbed_official 610:813dcc80987e 228 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 610:813dcc80987e 229 break; \
mbed_official 610:813dcc80987e 230 case RCC_UART4CLKSOURCE_HSI: \
mbed_official 610:813dcc80987e 231 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 610:813dcc80987e 232 break; \
mbed_official 610:813dcc80987e 233 case RCC_UART4CLKSOURCE_SYSCLK: \
mbed_official 610:813dcc80987e 234 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 610:813dcc80987e 235 break; \
mbed_official 610:813dcc80987e 236 case RCC_UART4CLKSOURCE_LSE: \
mbed_official 610:813dcc80987e 237 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 610:813dcc80987e 238 break; \
mbed_official 610:813dcc80987e 239 default: \
mbed_official 610:813dcc80987e 240 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 610:813dcc80987e 241 break; \
mbed_official 610:813dcc80987e 242 } \
mbed_official 610:813dcc80987e 243 } \
mbed_official 610:813dcc80987e 244 else if ((__HANDLE__)->Instance == UART5) \
mbed_official 610:813dcc80987e 245 { \
mbed_official 610:813dcc80987e 246 switch(__HAL_RCC_GET_UART5_SOURCE()) \
mbed_official 610:813dcc80987e 247 { \
mbed_official 610:813dcc80987e 248 case RCC_UART5CLKSOURCE_PCLK1: \
mbed_official 610:813dcc80987e 249 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 610:813dcc80987e 250 break; \
mbed_official 610:813dcc80987e 251 case RCC_UART5CLKSOURCE_HSI: \
mbed_official 610:813dcc80987e 252 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 610:813dcc80987e 253 break; \
mbed_official 610:813dcc80987e 254 case RCC_UART5CLKSOURCE_SYSCLK: \
mbed_official 610:813dcc80987e 255 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 610:813dcc80987e 256 break; \
mbed_official 610:813dcc80987e 257 case RCC_UART5CLKSOURCE_LSE: \
mbed_official 610:813dcc80987e 258 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 610:813dcc80987e 259 break; \
mbed_official 610:813dcc80987e 260 default: \
mbed_official 610:813dcc80987e 261 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 610:813dcc80987e 262 break; \
mbed_official 610:813dcc80987e 263 } \
mbed_official 610:813dcc80987e 264 } \
mbed_official 610:813dcc80987e 265 else if((__HANDLE__)->Instance == LPUART1) \
mbed_official 610:813dcc80987e 266 { \
mbed_official 610:813dcc80987e 267 switch(__HAL_RCC_GET_LPUART1_SOURCE()) \
mbed_official 610:813dcc80987e 268 { \
mbed_official 610:813dcc80987e 269 case RCC_LPUART1CLKSOURCE_PCLK1: \
mbed_official 610:813dcc80987e 270 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 610:813dcc80987e 271 break; \
mbed_official 610:813dcc80987e 272 case RCC_LPUART1CLKSOURCE_HSI: \
mbed_official 610:813dcc80987e 273 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 610:813dcc80987e 274 break; \
mbed_official 610:813dcc80987e 275 case RCC_LPUART1CLKSOURCE_SYSCLK: \
mbed_official 610:813dcc80987e 276 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 610:813dcc80987e 277 break; \
mbed_official 610:813dcc80987e 278 case RCC_LPUART1CLKSOURCE_LSE: \
mbed_official 610:813dcc80987e 279 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 610:813dcc80987e 280 break; \
mbed_official 610:813dcc80987e 281 default: \
mbed_official 610:813dcc80987e 282 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 610:813dcc80987e 283 break; \
mbed_official 610:813dcc80987e 284 } \
mbed_official 610:813dcc80987e 285 } \
mbed_official 610:813dcc80987e 286 } while(0)
mbed_official 610:813dcc80987e 287
mbed_official 610:813dcc80987e 288 /** @brief Report the UART mask to apply to retrieve the received data
mbed_official 610:813dcc80987e 289 * according to the word length and to the parity bits activation.
mbed_official 610:813dcc80987e 290 * @note If PCE = 1, the parity bit is not included in the data extracted
mbed_official 610:813dcc80987e 291 * by the reception API().
mbed_official 610:813dcc80987e 292 * This masking operation is not carried out in the case of
mbed_official 610:813dcc80987e 293 * DMA transfers.
mbed_official 610:813dcc80987e 294 * @param __HANDLE__: specifies the UART Handle.
mbed_official 610:813dcc80987e 295 * @retval None, the mask to apply to UART RDR register is stored in (__HANDLE__)->Mask field.
mbed_official 610:813dcc80987e 296 */
mbed_official 610:813dcc80987e 297 #define UART_MASK_COMPUTATION(__HANDLE__) \
mbed_official 610:813dcc80987e 298 do { \
mbed_official 610:813dcc80987e 299 if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \
mbed_official 610:813dcc80987e 300 { \
mbed_official 610:813dcc80987e 301 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
mbed_official 610:813dcc80987e 302 { \
mbed_official 610:813dcc80987e 303 (__HANDLE__)->Mask = 0x01FF ; \
mbed_official 610:813dcc80987e 304 } \
mbed_official 610:813dcc80987e 305 else \
mbed_official 610:813dcc80987e 306 { \
mbed_official 610:813dcc80987e 307 (__HANDLE__)->Mask = 0x00FF ; \
mbed_official 610:813dcc80987e 308 } \
mbed_official 610:813dcc80987e 309 } \
mbed_official 610:813dcc80987e 310 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \
mbed_official 610:813dcc80987e 311 { \
mbed_official 610:813dcc80987e 312 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
mbed_official 610:813dcc80987e 313 { \
mbed_official 610:813dcc80987e 314 (__HANDLE__)->Mask = 0x00FF ; \
mbed_official 610:813dcc80987e 315 } \
mbed_official 610:813dcc80987e 316 else \
mbed_official 610:813dcc80987e 317 { \
mbed_official 610:813dcc80987e 318 (__HANDLE__)->Mask = 0x007F ; \
mbed_official 610:813dcc80987e 319 } \
mbed_official 610:813dcc80987e 320 } \
mbed_official 610:813dcc80987e 321 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_7B) \
mbed_official 610:813dcc80987e 322 { \
mbed_official 610:813dcc80987e 323 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
mbed_official 610:813dcc80987e 324 { \
mbed_official 610:813dcc80987e 325 (__HANDLE__)->Mask = 0x007F ; \
mbed_official 610:813dcc80987e 326 } \
mbed_official 610:813dcc80987e 327 else \
mbed_official 610:813dcc80987e 328 { \
mbed_official 610:813dcc80987e 329 (__HANDLE__)->Mask = 0x003F ; \
mbed_official 610:813dcc80987e 330 } \
mbed_official 610:813dcc80987e 331 } \
mbed_official 610:813dcc80987e 332 } while(0)
mbed_official 610:813dcc80987e 333
mbed_official 610:813dcc80987e 334
mbed_official 610:813dcc80987e 335 /**
mbed_official 610:813dcc80987e 336 * @brief Ensure that UART frame length is valid.
mbed_official 610:813dcc80987e 337 * @param __LENGTH__: UART frame length.
mbed_official 610:813dcc80987e 338 * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid)
mbed_official 610:813dcc80987e 339 */
mbed_official 610:813dcc80987e 340 #define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_7B) || \
mbed_official 610:813dcc80987e 341 ((__LENGTH__) == UART_WORDLENGTH_8B) || \
mbed_official 610:813dcc80987e 342 ((__LENGTH__) == UART_WORDLENGTH_9B))
mbed_official 610:813dcc80987e 343
mbed_official 610:813dcc80987e 344 /**
mbed_official 610:813dcc80987e 345 * @brief Ensure that UART wake-up address length is valid.
mbed_official 610:813dcc80987e 346 * @param __ADDRESS__: UART wake-up address length.
mbed_official 610:813dcc80987e 347 * @retval SET (__ADDRESS__ is valid) or RESET (__ADDRESS__ is invalid)
mbed_official 610:813dcc80987e 348 */
mbed_official 610:813dcc80987e 349 #define IS_UART_ADDRESSLENGTH_DETECT(__ADDRESS__) (((__ADDRESS__) == UART_ADDRESS_DETECT_4B) || \
mbed_official 610:813dcc80987e 350 ((__ADDRESS__) == UART_ADDRESS_DETECT_7B))
mbed_official 610:813dcc80987e 351
mbed_official 610:813dcc80987e 352 /**
mbed_official 610:813dcc80987e 353 * @}
mbed_official 610:813dcc80987e 354 */
mbed_official 610:813dcc80987e 355
mbed_official 610:813dcc80987e 356 /* Private functions ---------------------------------------------------------*/
mbed_official 610:813dcc80987e 357
mbed_official 610:813dcc80987e 358 /**
mbed_official 610:813dcc80987e 359 * @}
mbed_official 610:813dcc80987e 360 */
mbed_official 610:813dcc80987e 361
mbed_official 610:813dcc80987e 362 /**
mbed_official 610:813dcc80987e 363 * @}
mbed_official 610:813dcc80987e 364 */
mbed_official 610:813dcc80987e 365
mbed_official 610:813dcc80987e 366 #ifdef __cplusplus
mbed_official 610:813dcc80987e 367 }
mbed_official 610:813dcc80987e 368 #endif
mbed_official 610:813dcc80987e 369
mbed_official 610:813dcc80987e 370 #endif /* __STM32L4xx_HAL_UART_EX_H */
mbed_official 610:813dcc80987e 371
mbed_official 610:813dcc80987e 372 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/