mbed library sources

Fork of mbed-src by mbed official

Committer:
moirans2
Date:
Wed Jan 14 20:53:08 2015 +0000
Revision:
445:9a3ffe6cfa19
Parent:
385:be64abf45658
internal clock stm32L051

Who changed what in which revision?

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