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:
Fri May 26 12:30:20 2017 +0100
Revision:
143:86740a56073b
Parent:
135:176b8275d35d
Release 143 of the mbed library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 126:abea610beb85 1 /**
AnnaBridge 126:abea610beb85 2 ******************************************************************************
AnnaBridge 126:abea610beb85 3 * @file stm32f3xx_hal_uart_ex.h
AnnaBridge 126:abea610beb85 4 * @author MCD Application Team
<> 135:176b8275d35d 5 * @version V1.4.0
<> 135:176b8275d35d 6 * @date 16-December-2016
<> 135:176b8275d35d 7 * @brief Header file of UART HAL Extended module.
AnnaBridge 126:abea610beb85 8 ******************************************************************************
AnnaBridge 126:abea610beb85 9 * @attention
AnnaBridge 126:abea610beb85 10 *
AnnaBridge 126:abea610beb85 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
AnnaBridge 126:abea610beb85 12 *
AnnaBridge 126:abea610beb85 13 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 126:abea610beb85 14 * are permitted provided that the following conditions are met:
AnnaBridge 126:abea610beb85 15 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 126:abea610beb85 16 * this list of conditions and the following disclaimer.
AnnaBridge 126:abea610beb85 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 126:abea610beb85 18 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 126:abea610beb85 19 * and/or other materials provided with the distribution.
AnnaBridge 126:abea610beb85 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 126:abea610beb85 21 * may be used to endorse or promote products derived from this software
AnnaBridge 126:abea610beb85 22 * without specific prior written permission.
AnnaBridge 126:abea610beb85 23 *
AnnaBridge 126:abea610beb85 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 126:abea610beb85 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 126:abea610beb85 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 126:abea610beb85 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 126:abea610beb85 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 126:abea610beb85 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 126:abea610beb85 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 126:abea610beb85 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 126:abea610beb85 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 126:abea610beb85 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 126:abea610beb85 34 *
AnnaBridge 126:abea610beb85 35 ******************************************************************************
AnnaBridge 126:abea610beb85 36 */
AnnaBridge 126:abea610beb85 37
AnnaBridge 126:abea610beb85 38 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 126:abea610beb85 39 #ifndef __STM32F3xx_HAL_UART_EX_H
AnnaBridge 126:abea610beb85 40 #define __STM32F3xx_HAL_UART_EX_H
AnnaBridge 126:abea610beb85 41
AnnaBridge 126:abea610beb85 42 #ifdef __cplusplus
AnnaBridge 126:abea610beb85 43 extern "C" {
AnnaBridge 126:abea610beb85 44 #endif
AnnaBridge 126:abea610beb85 45
AnnaBridge 126:abea610beb85 46 /* Includes ------------------------------------------------------------------*/
AnnaBridge 126:abea610beb85 47 #include "stm32f3xx_hal_def.h"
AnnaBridge 126:abea610beb85 48
AnnaBridge 126:abea610beb85 49 /** @addtogroup STM32F3xx_HAL_Driver
AnnaBridge 126:abea610beb85 50 * @{
AnnaBridge 126:abea610beb85 51 */
AnnaBridge 126:abea610beb85 52
AnnaBridge 126:abea610beb85 53 /** @addtogroup UARTEx
AnnaBridge 126:abea610beb85 54 * @{
AnnaBridge 126:abea610beb85 55 */
AnnaBridge 126:abea610beb85 56
AnnaBridge 126:abea610beb85 57 /* Exported types ------------------------------------------------------------*/
AnnaBridge 126:abea610beb85 58 /* Exported constants --------------------------------------------------------*/
AnnaBridge 126:abea610beb85 59 /** @defgroup UARTEx_Exported_Constants UARTEx Exported Constants
AnnaBridge 126:abea610beb85 60 * @{
AnnaBridge 126:abea610beb85 61 */
AnnaBridge 126:abea610beb85 62
AnnaBridge 126:abea610beb85 63 /** @defgroup UARTEx_Word_Length UARTEx Word Length
AnnaBridge 126:abea610beb85 64 * @{
AnnaBridge 126:abea610beb85 65 */
AnnaBridge 126:abea610beb85 66 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
AnnaBridge 126:abea610beb85 67 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
AnnaBridge 126:abea610beb85 68 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
<> 135:176b8275d35d 69 #define UART_WORDLENGTH_7B ((uint32_t)USART_CR1_M1) /*!< 7-bit long UART frame */
<> 135:176b8275d35d 70 #define UART_WORDLENGTH_8B (0x00000000U) /*!< 8-bit long UART frame */
<> 135:176b8275d35d 71 #define UART_WORDLENGTH_9B ((uint32_t)USART_CR1_M0) /*!< 9-bit long UART frame */
AnnaBridge 126:abea610beb85 72 #else
<> 135:176b8275d35d 73 #define UART_WORDLENGTH_8B (0x00000000U) /*!< 8-bit long UART frame */
<> 135:176b8275d35d 74 #define UART_WORDLENGTH_9B ((uint32_t)USART_CR1_M) /*!< 9-bit long UART frame */
AnnaBridge 126:abea610beb85 75 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
AnnaBridge 126:abea610beb85 76 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
AnnaBridge 126:abea610beb85 77 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
AnnaBridge 126:abea610beb85 78 /**
AnnaBridge 126:abea610beb85 79 * @}
AnnaBridge 126:abea610beb85 80 */
AnnaBridge 126:abea610beb85 81
AnnaBridge 126:abea610beb85 82 /**
AnnaBridge 126:abea610beb85 83 * @}
AnnaBridge 126:abea610beb85 84 */
AnnaBridge 126:abea610beb85 85
AnnaBridge 126:abea610beb85 86 /* Exported macros -----------------------------------------------------------*/
AnnaBridge 126:abea610beb85 87 /* Exported functions --------------------------------------------------------*/
AnnaBridge 126:abea610beb85 88 /** @addtogroup UARTEx_Exported_Functions
AnnaBridge 126:abea610beb85 89 * @{
AnnaBridge 126:abea610beb85 90 */
AnnaBridge 126:abea610beb85 91
AnnaBridge 126:abea610beb85 92 /** @addtogroup UARTEx_Exported_Functions_Group1
AnnaBridge 126:abea610beb85 93 * @{
AnnaBridge 126:abea610beb85 94 */
AnnaBridge 126:abea610beb85 95
AnnaBridge 126:abea610beb85 96 /* Initialization and de-initialization functions ****************************/
AnnaBridge 126:abea610beb85 97 HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, uint32_t DeassertionTime);
AnnaBridge 126:abea610beb85 98
AnnaBridge 126:abea610beb85 99 /**
AnnaBridge 126:abea610beb85 100 * @}
AnnaBridge 126:abea610beb85 101 */
AnnaBridge 126:abea610beb85 102
AnnaBridge 126:abea610beb85 103 /* IO operation functions *****************************************************/
AnnaBridge 126:abea610beb85 104
AnnaBridge 126:abea610beb85 105 /** @addtogroup UARTEx_Exported_Functions_Group3
AnnaBridge 126:abea610beb85 106 * @{
AnnaBridge 126:abea610beb85 107 */
AnnaBridge 126:abea610beb85 108
AnnaBridge 126:abea610beb85 109 /* Peripheral Control functions **********************************************/
AnnaBridge 126:abea610beb85 110 HAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection);
AnnaBridge 126:abea610beb85 111 HAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart);
AnnaBridge 126:abea610beb85 112 HAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart);
AnnaBridge 126:abea610beb85 113 HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength);
<> 135:176b8275d35d 114 void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart);
<> 135:176b8275d35d 115
AnnaBridge 126:abea610beb85 116 /**
AnnaBridge 126:abea610beb85 117 * @}
AnnaBridge 126:abea610beb85 118 */
AnnaBridge 126:abea610beb85 119
AnnaBridge 126:abea610beb85 120 /**
AnnaBridge 126:abea610beb85 121 * @}
AnnaBridge 126:abea610beb85 122 */
AnnaBridge 126:abea610beb85 123
AnnaBridge 126:abea610beb85 124 /* Private macros ------------------------------------------------------------*/
AnnaBridge 126:abea610beb85 125 /** @defgroup UARTEx_Private_Macros UARTEx Private Macros
AnnaBridge 126:abea610beb85 126 * @{
AnnaBridge 126:abea610beb85 127 */
AnnaBridge 126:abea610beb85 128
AnnaBridge 126:abea610beb85 129 /** @brief Report the UART clock source.
AnnaBridge 126:abea610beb85 130 * @param __HANDLE__: specifies the UART Handle.
AnnaBridge 126:abea610beb85 131 * @param __CLOCKSOURCE__: output variable.
AnnaBridge 126:abea610beb85 132 * @retval UART clocking source, written in __CLOCKSOURCE__.
AnnaBridge 126:abea610beb85 133 */
AnnaBridge 126:abea610beb85 134 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
AnnaBridge 126:abea610beb85 135 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx)
<> 135:176b8275d35d 136 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
AnnaBridge 126:abea610beb85 137 do { \
AnnaBridge 126:abea610beb85 138 if((__HANDLE__)->Instance == USART1) \
AnnaBridge 126:abea610beb85 139 { \
AnnaBridge 126:abea610beb85 140 switch(__HAL_RCC_GET_USART1_SOURCE()) \
AnnaBridge 126:abea610beb85 141 { \
AnnaBridge 126:abea610beb85 142 case RCC_USART1CLKSOURCE_PCLK2: \
AnnaBridge 126:abea610beb85 143 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \
AnnaBridge 126:abea610beb85 144 break; \
AnnaBridge 126:abea610beb85 145 case RCC_USART1CLKSOURCE_HSI: \
AnnaBridge 126:abea610beb85 146 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 126:abea610beb85 147 break; \
AnnaBridge 126:abea610beb85 148 case RCC_USART1CLKSOURCE_SYSCLK: \
AnnaBridge 126:abea610beb85 149 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
AnnaBridge 126:abea610beb85 150 break; \
AnnaBridge 126:abea610beb85 151 case RCC_USART1CLKSOURCE_LSE: \
AnnaBridge 126:abea610beb85 152 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 126:abea610beb85 153 break; \
AnnaBridge 126:abea610beb85 154 default: \
AnnaBridge 126:abea610beb85 155 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 126:abea610beb85 156 break; \
AnnaBridge 126:abea610beb85 157 } \
AnnaBridge 126:abea610beb85 158 } \
AnnaBridge 126:abea610beb85 159 else if((__HANDLE__)->Instance == USART2) \
AnnaBridge 126:abea610beb85 160 { \
AnnaBridge 126:abea610beb85 161 switch(__HAL_RCC_GET_USART2_SOURCE()) \
AnnaBridge 126:abea610beb85 162 { \
AnnaBridge 126:abea610beb85 163 case RCC_USART2CLKSOURCE_PCLK1: \
AnnaBridge 126:abea610beb85 164 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
AnnaBridge 126:abea610beb85 165 break; \
AnnaBridge 126:abea610beb85 166 case RCC_USART2CLKSOURCE_HSI: \
AnnaBridge 126:abea610beb85 167 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 126:abea610beb85 168 break; \
AnnaBridge 126:abea610beb85 169 case RCC_USART2CLKSOURCE_SYSCLK: \
AnnaBridge 126:abea610beb85 170 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
AnnaBridge 126:abea610beb85 171 break; \
AnnaBridge 126:abea610beb85 172 case RCC_USART2CLKSOURCE_LSE: \
AnnaBridge 126:abea610beb85 173 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 126:abea610beb85 174 break; \
AnnaBridge 126:abea610beb85 175 default: \
AnnaBridge 126:abea610beb85 176 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 126:abea610beb85 177 break; \
AnnaBridge 126:abea610beb85 178 } \
AnnaBridge 126:abea610beb85 179 } \
AnnaBridge 126:abea610beb85 180 else if((__HANDLE__)->Instance == USART3) \
AnnaBridge 126:abea610beb85 181 { \
AnnaBridge 126:abea610beb85 182 switch(__HAL_RCC_GET_USART3_SOURCE()) \
AnnaBridge 126:abea610beb85 183 { \
AnnaBridge 126:abea610beb85 184 case RCC_USART3CLKSOURCE_PCLK1: \
AnnaBridge 126:abea610beb85 185 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
AnnaBridge 126:abea610beb85 186 break; \
AnnaBridge 126:abea610beb85 187 case RCC_USART3CLKSOURCE_HSI: \
AnnaBridge 126:abea610beb85 188 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 126:abea610beb85 189 break; \
AnnaBridge 126:abea610beb85 190 case RCC_USART3CLKSOURCE_SYSCLK: \
AnnaBridge 126:abea610beb85 191 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
AnnaBridge 126:abea610beb85 192 break; \
AnnaBridge 126:abea610beb85 193 case RCC_USART3CLKSOURCE_LSE: \
AnnaBridge 126:abea610beb85 194 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 126:abea610beb85 195 break; \
AnnaBridge 126:abea610beb85 196 default: \
AnnaBridge 126:abea610beb85 197 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 126:abea610beb85 198 break; \
AnnaBridge 126:abea610beb85 199 } \
AnnaBridge 126:abea610beb85 200 } \
AnnaBridge 126:abea610beb85 201 else if((__HANDLE__)->Instance == UART4) \
AnnaBridge 126:abea610beb85 202 { \
AnnaBridge 126:abea610beb85 203 switch(__HAL_RCC_GET_UART4_SOURCE()) \
AnnaBridge 126:abea610beb85 204 { \
AnnaBridge 126:abea610beb85 205 case RCC_UART4CLKSOURCE_PCLK1: \
AnnaBridge 126:abea610beb85 206 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
AnnaBridge 126:abea610beb85 207 break; \
AnnaBridge 126:abea610beb85 208 case RCC_UART4CLKSOURCE_HSI: \
AnnaBridge 126:abea610beb85 209 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 126:abea610beb85 210 break; \
AnnaBridge 126:abea610beb85 211 case RCC_UART4CLKSOURCE_SYSCLK: \
AnnaBridge 126:abea610beb85 212 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
AnnaBridge 126:abea610beb85 213 break; \
AnnaBridge 126:abea610beb85 214 case RCC_UART4CLKSOURCE_LSE: \
AnnaBridge 126:abea610beb85 215 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 126:abea610beb85 216 break; \
AnnaBridge 126:abea610beb85 217 default: \
AnnaBridge 126:abea610beb85 218 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 126:abea610beb85 219 break; \
AnnaBridge 126:abea610beb85 220 } \
AnnaBridge 126:abea610beb85 221 } \
AnnaBridge 126:abea610beb85 222 else if ((__HANDLE__)->Instance == UART5) \
AnnaBridge 126:abea610beb85 223 { \
AnnaBridge 126:abea610beb85 224 switch(__HAL_RCC_GET_UART5_SOURCE()) \
AnnaBridge 126:abea610beb85 225 { \
AnnaBridge 126:abea610beb85 226 case RCC_UART5CLKSOURCE_PCLK1: \
AnnaBridge 126:abea610beb85 227 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
AnnaBridge 126:abea610beb85 228 break; \
AnnaBridge 126:abea610beb85 229 case RCC_UART5CLKSOURCE_HSI: \
AnnaBridge 126:abea610beb85 230 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 126:abea610beb85 231 break; \
AnnaBridge 126:abea610beb85 232 case RCC_UART5CLKSOURCE_SYSCLK: \
AnnaBridge 126:abea610beb85 233 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
AnnaBridge 126:abea610beb85 234 break; \
AnnaBridge 126:abea610beb85 235 case RCC_UART5CLKSOURCE_LSE: \
AnnaBridge 126:abea610beb85 236 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 126:abea610beb85 237 break; \
AnnaBridge 126:abea610beb85 238 default: \
AnnaBridge 126:abea610beb85 239 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 126:abea610beb85 240 break; \
AnnaBridge 126:abea610beb85 241 } \
AnnaBridge 126:abea610beb85 242 } \
AnnaBridge 126:abea610beb85 243 else \
AnnaBridge 126:abea610beb85 244 { \
AnnaBridge 126:abea610beb85 245 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 126:abea610beb85 246 } \
<> 135:176b8275d35d 247 } while(0U)
AnnaBridge 126:abea610beb85 248 #elif defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
AnnaBridge 126:abea610beb85 249 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
<> 135:176b8275d35d 250 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
AnnaBridge 126:abea610beb85 251 do { \
AnnaBridge 126:abea610beb85 252 if((__HANDLE__)->Instance == USART1) \
AnnaBridge 126:abea610beb85 253 { \
AnnaBridge 126:abea610beb85 254 switch(__HAL_RCC_GET_USART1_SOURCE()) \
AnnaBridge 126:abea610beb85 255 { \
AnnaBridge 126:abea610beb85 256 case RCC_USART1CLKSOURCE_PCLK1: \
AnnaBridge 126:abea610beb85 257 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
AnnaBridge 126:abea610beb85 258 break; \
AnnaBridge 126:abea610beb85 259 case RCC_USART1CLKSOURCE_HSI: \
AnnaBridge 126:abea610beb85 260 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 126:abea610beb85 261 break; \
AnnaBridge 126:abea610beb85 262 case RCC_USART1CLKSOURCE_SYSCLK: \
AnnaBridge 126:abea610beb85 263 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
AnnaBridge 126:abea610beb85 264 break; \
AnnaBridge 126:abea610beb85 265 case RCC_USART1CLKSOURCE_LSE: \
AnnaBridge 126:abea610beb85 266 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 126:abea610beb85 267 break; \
AnnaBridge 126:abea610beb85 268 default: \
AnnaBridge 126:abea610beb85 269 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 126:abea610beb85 270 break; \
AnnaBridge 126:abea610beb85 271 } \
AnnaBridge 126:abea610beb85 272 } \
AnnaBridge 126:abea610beb85 273 else if((__HANDLE__)->Instance == USART2) \
AnnaBridge 126:abea610beb85 274 { \
AnnaBridge 126:abea610beb85 275 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
AnnaBridge 126:abea610beb85 276 } \
AnnaBridge 126:abea610beb85 277 else if((__HANDLE__)->Instance == USART3) \
AnnaBridge 126:abea610beb85 278 { \
AnnaBridge 126:abea610beb85 279 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
AnnaBridge 126:abea610beb85 280 } \
AnnaBridge 126:abea610beb85 281 else \
AnnaBridge 126:abea610beb85 282 { \
AnnaBridge 126:abea610beb85 283 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 126:abea610beb85 284 } \
<> 135:176b8275d35d 285 } while(0U)
AnnaBridge 126:abea610beb85 286 #else
<> 135:176b8275d35d 287 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
AnnaBridge 126:abea610beb85 288 do { \
AnnaBridge 126:abea610beb85 289 if((__HANDLE__)->Instance == USART1) \
AnnaBridge 126:abea610beb85 290 { \
AnnaBridge 126:abea610beb85 291 switch(__HAL_RCC_GET_USART1_SOURCE()) \
AnnaBridge 126:abea610beb85 292 { \
AnnaBridge 126:abea610beb85 293 case RCC_USART1CLKSOURCE_PCLK2: \
AnnaBridge 126:abea610beb85 294 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \
AnnaBridge 126:abea610beb85 295 break; \
AnnaBridge 126:abea610beb85 296 case RCC_USART1CLKSOURCE_HSI: \
AnnaBridge 126:abea610beb85 297 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 126:abea610beb85 298 break; \
AnnaBridge 126:abea610beb85 299 case RCC_USART1CLKSOURCE_SYSCLK: \
AnnaBridge 126:abea610beb85 300 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
AnnaBridge 126:abea610beb85 301 break; \
AnnaBridge 126:abea610beb85 302 case RCC_USART1CLKSOURCE_LSE: \
AnnaBridge 126:abea610beb85 303 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 126:abea610beb85 304 break; \
AnnaBridge 126:abea610beb85 305 default: \
AnnaBridge 126:abea610beb85 306 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 126:abea610beb85 307 break; \
AnnaBridge 126:abea610beb85 308 } \
AnnaBridge 126:abea610beb85 309 } \
AnnaBridge 126:abea610beb85 310 else if((__HANDLE__)->Instance == USART2) \
AnnaBridge 126:abea610beb85 311 { \
AnnaBridge 126:abea610beb85 312 switch(__HAL_RCC_GET_USART2_SOURCE()) \
AnnaBridge 126:abea610beb85 313 { \
AnnaBridge 126:abea610beb85 314 case RCC_USART2CLKSOURCE_PCLK1: \
AnnaBridge 126:abea610beb85 315 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
AnnaBridge 126:abea610beb85 316 break; \
AnnaBridge 126:abea610beb85 317 case RCC_USART2CLKSOURCE_HSI: \
AnnaBridge 126:abea610beb85 318 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 126:abea610beb85 319 break; \
AnnaBridge 126:abea610beb85 320 case RCC_USART2CLKSOURCE_SYSCLK: \
AnnaBridge 126:abea610beb85 321 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
AnnaBridge 126:abea610beb85 322 break; \
AnnaBridge 126:abea610beb85 323 case RCC_USART2CLKSOURCE_LSE: \
AnnaBridge 126:abea610beb85 324 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 126:abea610beb85 325 break; \
AnnaBridge 126:abea610beb85 326 default: \
AnnaBridge 126:abea610beb85 327 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 126:abea610beb85 328 break; \
AnnaBridge 126:abea610beb85 329 } \
AnnaBridge 126:abea610beb85 330 } \
AnnaBridge 126:abea610beb85 331 else if((__HANDLE__)->Instance == USART3) \
AnnaBridge 126:abea610beb85 332 { \
AnnaBridge 126:abea610beb85 333 switch(__HAL_RCC_GET_USART3_SOURCE()) \
AnnaBridge 126:abea610beb85 334 { \
AnnaBridge 126:abea610beb85 335 case RCC_USART3CLKSOURCE_PCLK1: \
AnnaBridge 126:abea610beb85 336 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
AnnaBridge 126:abea610beb85 337 break; \
AnnaBridge 126:abea610beb85 338 case RCC_USART3CLKSOURCE_HSI: \
AnnaBridge 126:abea610beb85 339 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 126:abea610beb85 340 break; \
AnnaBridge 126:abea610beb85 341 case RCC_USART3CLKSOURCE_SYSCLK: \
AnnaBridge 126:abea610beb85 342 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
AnnaBridge 126:abea610beb85 343 break; \
AnnaBridge 126:abea610beb85 344 case RCC_USART3CLKSOURCE_LSE: \
AnnaBridge 126:abea610beb85 345 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 126:abea610beb85 346 break; \
AnnaBridge 126:abea610beb85 347 default: \
AnnaBridge 126:abea610beb85 348 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 126:abea610beb85 349 break; \
AnnaBridge 126:abea610beb85 350 } \
AnnaBridge 126:abea610beb85 351 } \
AnnaBridge 126:abea610beb85 352 else \
AnnaBridge 126:abea610beb85 353 { \
AnnaBridge 126:abea610beb85 354 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 126:abea610beb85 355 } \
<> 135:176b8275d35d 356 } while(0U)
AnnaBridge 126:abea610beb85 357 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
AnnaBridge 126:abea610beb85 358 /* STM32F302xC || STM32F303xC || STM32F358xx */
AnnaBridge 126:abea610beb85 359
AnnaBridge 126:abea610beb85 360
AnnaBridge 126:abea610beb85 361 /** @brief Compute the UART mask to apply to retrieve the received data
AnnaBridge 126:abea610beb85 362 * according to the word length and to the parity bits activation.
AnnaBridge 126:abea610beb85 363 * @note If PCE = 1, the parity bit is not included in the data extracted
AnnaBridge 126:abea610beb85 364 * by the reception API().
AnnaBridge 126:abea610beb85 365 * This masking operation is not carried out in the case of
AnnaBridge 126:abea610beb85 366 * DMA transfers.
AnnaBridge 126:abea610beb85 367 * @param __HANDLE__: specifies the UART Handle.
AnnaBridge 126:abea610beb85 368 * @retval None, the mask to apply to UART RDR register is stored in (__HANDLE__)->Mask field.
AnnaBridge 126:abea610beb85 369 */
AnnaBridge 126:abea610beb85 370 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
AnnaBridge 126:abea610beb85 371 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
AnnaBridge 126:abea610beb85 372 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
AnnaBridge 126:abea610beb85 373 #define UART_MASK_COMPUTATION(__HANDLE__) \
AnnaBridge 126:abea610beb85 374 do { \
AnnaBridge 126:abea610beb85 375 if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \
AnnaBridge 126:abea610beb85 376 { \
AnnaBridge 126:abea610beb85 377 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
AnnaBridge 126:abea610beb85 378 { \
<> 135:176b8275d35d 379 (__HANDLE__)->Mask = 0x01FFU ; \
AnnaBridge 126:abea610beb85 380 } \
AnnaBridge 126:abea610beb85 381 else \
AnnaBridge 126:abea610beb85 382 { \
<> 135:176b8275d35d 383 (__HANDLE__)->Mask = 0x00FFU ; \
AnnaBridge 126:abea610beb85 384 } \
AnnaBridge 126:abea610beb85 385 } \
AnnaBridge 126:abea610beb85 386 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \
AnnaBridge 126:abea610beb85 387 { \
AnnaBridge 126:abea610beb85 388 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
AnnaBridge 126:abea610beb85 389 { \
<> 135:176b8275d35d 390 (__HANDLE__)->Mask = 0x00FFU ; \
AnnaBridge 126:abea610beb85 391 } \
AnnaBridge 126:abea610beb85 392 else \
AnnaBridge 126:abea610beb85 393 { \
<> 135:176b8275d35d 394 (__HANDLE__)->Mask = 0x007FU ; \
AnnaBridge 126:abea610beb85 395 } \
AnnaBridge 126:abea610beb85 396 } \
AnnaBridge 126:abea610beb85 397 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_7B) \
AnnaBridge 126:abea610beb85 398 { \
AnnaBridge 126:abea610beb85 399 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
AnnaBridge 126:abea610beb85 400 { \
<> 135:176b8275d35d 401 (__HANDLE__)->Mask = 0x007FU ; \
AnnaBridge 126:abea610beb85 402 } \
AnnaBridge 126:abea610beb85 403 else \
AnnaBridge 126:abea610beb85 404 { \
<> 135:176b8275d35d 405 (__HANDLE__)->Mask = 0x003FU ; \
AnnaBridge 126:abea610beb85 406 } \
AnnaBridge 126:abea610beb85 407 } \
<> 135:176b8275d35d 408 } while(0U)
AnnaBridge 126:abea610beb85 409 #else
AnnaBridge 126:abea610beb85 410 #define UART_MASK_COMPUTATION(__HANDLE__) \
AnnaBridge 126:abea610beb85 411 do { \
AnnaBridge 126:abea610beb85 412 if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \
AnnaBridge 126:abea610beb85 413 { \
AnnaBridge 126:abea610beb85 414 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
AnnaBridge 126:abea610beb85 415 { \
<> 135:176b8275d35d 416 (__HANDLE__)->Mask = 0x01FFU ; \
AnnaBridge 126:abea610beb85 417 } \
AnnaBridge 126:abea610beb85 418 else \
AnnaBridge 126:abea610beb85 419 { \
<> 135:176b8275d35d 420 (__HANDLE__)->Mask = 0x00FFU ; \
AnnaBridge 126:abea610beb85 421 } \
AnnaBridge 126:abea610beb85 422 } \
AnnaBridge 126:abea610beb85 423 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \
AnnaBridge 126:abea610beb85 424 { \
AnnaBridge 126:abea610beb85 425 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
AnnaBridge 126:abea610beb85 426 { \
<> 135:176b8275d35d 427 (__HANDLE__)->Mask = 0x00FFU ; \
AnnaBridge 126:abea610beb85 428 } \
AnnaBridge 126:abea610beb85 429 else \
AnnaBridge 126:abea610beb85 430 { \
<> 135:176b8275d35d 431 (__HANDLE__)->Mask = 0x007FU ; \
AnnaBridge 126:abea610beb85 432 } \
AnnaBridge 126:abea610beb85 433 } \
<> 135:176b8275d35d 434 } while(0U)
AnnaBridge 126:abea610beb85 435 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
AnnaBridge 126:abea610beb85 436 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
AnnaBridge 126:abea610beb85 437 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
AnnaBridge 126:abea610beb85 438
AnnaBridge 126:abea610beb85 439 /**
AnnaBridge 126:abea610beb85 440 * @brief Ensure that UART frame length is valid.
AnnaBridge 126:abea610beb85 441 * @param __LENGTH__: UART frame length.
AnnaBridge 126:abea610beb85 442 * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid)
AnnaBridge 126:abea610beb85 443 */
AnnaBridge 126:abea610beb85 444 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
AnnaBridge 126:abea610beb85 445 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
AnnaBridge 126:abea610beb85 446 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
AnnaBridge 126:abea610beb85 447 #define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_7B) || \
AnnaBridge 126:abea610beb85 448 ((__LENGTH__) == UART_WORDLENGTH_8B) || \
AnnaBridge 126:abea610beb85 449 ((__LENGTH__) == UART_WORDLENGTH_9B))
AnnaBridge 126:abea610beb85 450 #else
AnnaBridge 126:abea610beb85 451 #define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_8B) || \
AnnaBridge 126:abea610beb85 452 ((__LENGTH__) == UART_WORDLENGTH_9B))
AnnaBridge 126:abea610beb85 453 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
AnnaBridge 126:abea610beb85 454 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
AnnaBridge 126:abea610beb85 455 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
AnnaBridge 126:abea610beb85 456 /**
AnnaBridge 126:abea610beb85 457 * @}
AnnaBridge 126:abea610beb85 458 */
AnnaBridge 126:abea610beb85 459
AnnaBridge 126:abea610beb85 460 /* Private functions ---------------------------------------------------------*/
AnnaBridge 126:abea610beb85 461
AnnaBridge 126:abea610beb85 462 /**
AnnaBridge 126:abea610beb85 463 * @}
AnnaBridge 126:abea610beb85 464 */
AnnaBridge 126:abea610beb85 465
AnnaBridge 126:abea610beb85 466 /**
AnnaBridge 126:abea610beb85 467 * @}
AnnaBridge 126:abea610beb85 468 */
AnnaBridge 126:abea610beb85 469
AnnaBridge 126:abea610beb85 470 #ifdef __cplusplus
AnnaBridge 126:abea610beb85 471 }
AnnaBridge 126:abea610beb85 472 #endif
AnnaBridge 126:abea610beb85 473
AnnaBridge 126:abea610beb85 474 #endif /* __STM32F3xx_HAL_UART_EX_H */
AnnaBridge 126:abea610beb85 475
AnnaBridge 126:abea610beb85 476 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
AnnaBridge 126:abea610beb85 477