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 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
Parent:
TARGET_DISCO_F303VC/TARGET_STM/TARGET_STM32F3/device/stm32f3xx_hal_uart_ex.h@168:b9e159c1930a
mbed library. Release version 164

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