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

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 09 11:14:10 2017 +0000
Revision:
157:e7ca05fa8600
Child:
167:84c0a372a020
Release 155 of the mbed library.

Who changed what in which revision?

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