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:
Tue Mar 20 13:30:58 2018 +0000
Revision:
163:e59c8e839560
Child:
168:b9e159c1930a
mbed library. Release version 160

Who changed what in which revision?

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