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:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 172:65be27845400 1 /**
AnnaBridge 172:65be27845400 2 ******************************************************************************
AnnaBridge 172:65be27845400 3 * @file stm32h7xx_hal_uart_ex.h
AnnaBridge 172:65be27845400 4 * @author MCD Application Team
AnnaBridge 172:65be27845400 5 * @brief Header file of UART HAL Extended module.
AnnaBridge 172:65be27845400 6 ******************************************************************************
AnnaBridge 172:65be27845400 7 * @attention
AnnaBridge 172:65be27845400 8 *
AnnaBridge 172:65be27845400 9 * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
AnnaBridge 172:65be27845400 10 * All rights reserved.</center></h2>
AnnaBridge 172:65be27845400 11 *
AnnaBridge 172:65be27845400 12 * This software component is licensed by ST under BSD 3-Clause license,
AnnaBridge 172:65be27845400 13 * the "License"; You may not use this file except in compliance with the
AnnaBridge 172:65be27845400 14 * License. You may obtain a copy of the License at:
AnnaBridge 172:65be27845400 15 * opensource.org/licenses/BSD-3-Clause
AnnaBridge 172:65be27845400 16 *
AnnaBridge 172:65be27845400 17 ******************************************************************************
AnnaBridge 172:65be27845400 18 */
AnnaBridge 172:65be27845400 19
AnnaBridge 172:65be27845400 20 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 172:65be27845400 21 #ifndef STM32H7xx_HAL_UART_EX_H
AnnaBridge 172:65be27845400 22 #define STM32H7xx_HAL_UART_EX_H
AnnaBridge 172:65be27845400 23
AnnaBridge 172:65be27845400 24 #ifdef __cplusplus
AnnaBridge 172:65be27845400 25 extern "C" {
AnnaBridge 172:65be27845400 26 #endif
AnnaBridge 172:65be27845400 27
AnnaBridge 172:65be27845400 28 /* Includes ------------------------------------------------------------------*/
AnnaBridge 172:65be27845400 29 #include "stm32h7xx_hal_def.h"
AnnaBridge 172:65be27845400 30
AnnaBridge 172:65be27845400 31 /** @addtogroup STM32H7xx_HAL_Driver
AnnaBridge 172:65be27845400 32 * @{
AnnaBridge 172:65be27845400 33 */
AnnaBridge 172:65be27845400 34
AnnaBridge 172:65be27845400 35 /** @addtogroup UARTEx
AnnaBridge 172:65be27845400 36 * @{
AnnaBridge 172:65be27845400 37 */
AnnaBridge 172:65be27845400 38
AnnaBridge 172:65be27845400 39 /* Exported types ------------------------------------------------------------*/
AnnaBridge 172:65be27845400 40 /** @defgroup UARTEx_Exported_Types UARTEx Exported Types
AnnaBridge 172:65be27845400 41 * @{
AnnaBridge 172:65be27845400 42 */
AnnaBridge 172:65be27845400 43
AnnaBridge 172:65be27845400 44 /**
AnnaBridge 172:65be27845400 45 * @brief UART wake up from stop mode parameters
AnnaBridge 172:65be27845400 46 */
AnnaBridge 172:65be27845400 47 typedef struct
AnnaBridge 172:65be27845400 48 {
AnnaBridge 172:65be27845400 49 uint32_t WakeUpEvent; /*!< Specifies which event will activate the Wakeup from Stop mode flag (WUF).
AnnaBridge 172:65be27845400 50 This parameter can be a value of @ref UART_WakeUp_from_Stop_Selection.
AnnaBridge 172:65be27845400 51 If set to UART_WAKEUP_ON_ADDRESS, the two other fields below must
AnnaBridge 172:65be27845400 52 be filled up. */
AnnaBridge 172:65be27845400 53
AnnaBridge 172:65be27845400 54 uint16_t AddressLength; /*!< Specifies whether the address is 4 or 7-bit long.
AnnaBridge 172:65be27845400 55 This parameter can be a value of @ref UARTEx_WakeUp_Address_Length. */
AnnaBridge 172:65be27845400 56
AnnaBridge 172:65be27845400 57 uint8_t Address; /*!< UART/USART node address (7-bit long max). */
AnnaBridge 172:65be27845400 58 } UART_WakeUpTypeDef;
AnnaBridge 172:65be27845400 59
AnnaBridge 172:65be27845400 60 /**
AnnaBridge 172:65be27845400 61 * @}
AnnaBridge 172:65be27845400 62 */
AnnaBridge 172:65be27845400 63
AnnaBridge 172:65be27845400 64 /* Exported constants --------------------------------------------------------*/
AnnaBridge 172:65be27845400 65 /** @defgroup UARTEx_Exported_Constants UARTEx Exported Constants
AnnaBridge 172:65be27845400 66 * @{
AnnaBridge 172:65be27845400 67 */
AnnaBridge 172:65be27845400 68
AnnaBridge 172:65be27845400 69 /** @defgroup UARTEx_Word_Length UARTEx Word Length
AnnaBridge 172:65be27845400 70 * @{
AnnaBridge 172:65be27845400 71 */
AnnaBridge 172:65be27845400 72 #define UART_WORDLENGTH_7B USART_CR1_M1 /*!< 7-bit long UART frame */
AnnaBridge 172:65be27845400 73 #define UART_WORDLENGTH_8B 0x00000000U /*!< 8-bit long UART frame */
AnnaBridge 172:65be27845400 74 #define UART_WORDLENGTH_9B USART_CR1_M0 /*!< 9-bit long UART frame */
AnnaBridge 172:65be27845400 75 /**
AnnaBridge 172:65be27845400 76 * @}
AnnaBridge 172:65be27845400 77 */
AnnaBridge 172:65be27845400 78
AnnaBridge 172:65be27845400 79 /** @defgroup UARTEx_WakeUp_Address_Length UARTEx WakeUp Address Length
AnnaBridge 172:65be27845400 80 * @{
AnnaBridge 172:65be27845400 81 */
AnnaBridge 172:65be27845400 82 #define UART_ADDRESS_DETECT_4B 0x00000000U /*!< 4-bit long wake-up address */
AnnaBridge 172:65be27845400 83 #define UART_ADDRESS_DETECT_7B USART_CR2_ADDM7 /*!< 7-bit long wake-up address */
AnnaBridge 172:65be27845400 84 /**
AnnaBridge 172:65be27845400 85 * @}
AnnaBridge 172:65be27845400 86 */
AnnaBridge 172:65be27845400 87
AnnaBridge 172:65be27845400 88 /** @defgroup UARTEx_FIFO_mode UARTEx FIFO mode
AnnaBridge 172:65be27845400 89 * @brief UART FIFO mode
AnnaBridge 172:65be27845400 90 * @{
AnnaBridge 172:65be27845400 91 */
AnnaBridge 172:65be27845400 92 #define UART_FIFOMODE_DISABLE 0x00000000U /*!< FIFO mode disable */
AnnaBridge 172:65be27845400 93 #define UART_FIFOMODE_ENABLE USART_CR1_FIFOEN /*!< FIFO mode enable */
AnnaBridge 172:65be27845400 94 /**
AnnaBridge 172:65be27845400 95 * @}
AnnaBridge 172:65be27845400 96 */
AnnaBridge 172:65be27845400 97
AnnaBridge 172:65be27845400 98 /** @defgroup UARTEx_TXFIFO_threshold_level UARTEx TXFIFO threshold level
AnnaBridge 172:65be27845400 99 * @brief UART TXFIFO threshold level
AnnaBridge 172:65be27845400 100 * @{
AnnaBridge 172:65be27845400 101 */
AnnaBridge 172:65be27845400 102 #define UART_TXFIFO_THRESHOLD_1_8 0x00000000U /*!< TXFIFO reaches 1/8 of its depth */
AnnaBridge 172:65be27845400 103 #define UART_TXFIFO_THRESHOLD_1_4 USART_CR3_TXFTCFG_0 /*!< TXFIFO reaches 1/4 of its depth */
AnnaBridge 172:65be27845400 104 #define UART_TXFIFO_THRESHOLD_1_2 USART_CR3_TXFTCFG_1 /*!< TXFIFO reaches 1/2 of its depth */
AnnaBridge 172:65be27845400 105 #define UART_TXFIFO_THRESHOLD_3_4 (USART_CR3_TXFTCFG_0|USART_CR3_TXFTCFG_1) /*!< TXFIFO reaches 3/4 of its depth */
AnnaBridge 172:65be27845400 106 #define UART_TXFIFO_THRESHOLD_7_8 USART_CR3_TXFTCFG_2 /*!< TXFIFO reaches 7/8 of its depth */
AnnaBridge 172:65be27845400 107 #define UART_TXFIFO_THRESHOLD_8_8 (USART_CR3_TXFTCFG_2|USART_CR3_TXFTCFG_0) /*!< TXFIFO becomes empty */
AnnaBridge 172:65be27845400 108 /**
AnnaBridge 172:65be27845400 109 * @}
AnnaBridge 172:65be27845400 110 */
AnnaBridge 172:65be27845400 111
AnnaBridge 172:65be27845400 112 /** @defgroup UARTEx_RXFIFO_threshold_level UARTEx RXFIFO threshold level
AnnaBridge 172:65be27845400 113 * @brief UART RXFIFO threshold level
AnnaBridge 172:65be27845400 114 * @{
AnnaBridge 172:65be27845400 115 */
AnnaBridge 172:65be27845400 116 #define UART_RXFIFO_THRESHOLD_1_8 0x00000000U /*!< RXFIFO FIFO reaches 1/8 of its depth */
AnnaBridge 172:65be27845400 117 #define UART_RXFIFO_THRESHOLD_1_4 USART_CR3_RXFTCFG_0 /*!< RXFIFO FIFO reaches 1/4 of its depth */
AnnaBridge 172:65be27845400 118 #define UART_RXFIFO_THRESHOLD_1_2 USART_CR3_RXFTCFG_1 /*!< RXFIFO FIFO reaches 1/2 of its depth */
AnnaBridge 172:65be27845400 119 #define UART_RXFIFO_THRESHOLD_3_4 (USART_CR3_RXFTCFG_0|USART_CR3_RXFTCFG_1) /*!< RXFIFO FIFO reaches 3/4 of its depth */
AnnaBridge 172:65be27845400 120 #define UART_RXFIFO_THRESHOLD_7_8 USART_CR3_RXFTCFG_2 /*!< RXFIFO FIFO reaches 7/8 of its depth */
AnnaBridge 172:65be27845400 121 #define UART_RXFIFO_THRESHOLD_8_8 (USART_CR3_RXFTCFG_2|USART_CR3_RXFTCFG_0) /*!< RXFIFO FIFO becomes full */
AnnaBridge 172:65be27845400 122 /**
AnnaBridge 172:65be27845400 123 * @}
AnnaBridge 172:65be27845400 124 */
AnnaBridge 172:65be27845400 125
AnnaBridge 172:65be27845400 126 /**
AnnaBridge 172:65be27845400 127 * @}
AnnaBridge 172:65be27845400 128 */
AnnaBridge 172:65be27845400 129
AnnaBridge 172:65be27845400 130 /* Exported macros -----------------------------------------------------------*/
AnnaBridge 172:65be27845400 131 /* Exported functions --------------------------------------------------------*/
AnnaBridge 172:65be27845400 132 /** @addtogroup UARTEx_Exported_Functions
AnnaBridge 172:65be27845400 133 * @{
AnnaBridge 172:65be27845400 134 */
AnnaBridge 172:65be27845400 135
AnnaBridge 172:65be27845400 136 /** @addtogroup UARTEx_Exported_Functions_Group1
AnnaBridge 172:65be27845400 137 * @{
AnnaBridge 172:65be27845400 138 */
AnnaBridge 172:65be27845400 139
AnnaBridge 172:65be27845400 140 /* Initialization and de-initialization functions ****************************/
AnnaBridge 172:65be27845400 141 HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, uint32_t DeassertionTime);
AnnaBridge 172:65be27845400 142
AnnaBridge 172:65be27845400 143 /**
AnnaBridge 172:65be27845400 144 * @}
AnnaBridge 172:65be27845400 145 */
AnnaBridge 172:65be27845400 146
AnnaBridge 172:65be27845400 147 /** @addtogroup UARTEx_Exported_Functions_Group2
AnnaBridge 172:65be27845400 148 * @{
AnnaBridge 172:65be27845400 149 */
AnnaBridge 172:65be27845400 150
AnnaBridge 172:65be27845400 151 void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart);
AnnaBridge 172:65be27845400 152
AnnaBridge 172:65be27845400 153 void HAL_UARTEx_RxFifoFullCallback(UART_HandleTypeDef *huart);
AnnaBridge 172:65be27845400 154 void HAL_UARTEx_TxFifoEmptyCallback(UART_HandleTypeDef *huart);
AnnaBridge 172:65be27845400 155
AnnaBridge 172:65be27845400 156 /**
AnnaBridge 172:65be27845400 157 * @}
AnnaBridge 172:65be27845400 158 */
AnnaBridge 172:65be27845400 159
AnnaBridge 172:65be27845400 160 /** @addtogroup UARTEx_Exported_Functions_Group3
AnnaBridge 172:65be27845400 161 * @{
AnnaBridge 172:65be27845400 162 */
AnnaBridge 172:65be27845400 163
AnnaBridge 172:65be27845400 164 /* Peripheral Control functions **********************************************/
AnnaBridge 172:65be27845400 165 HAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection);
AnnaBridge 172:65be27845400 166 HAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart);
AnnaBridge 172:65be27845400 167 HAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart);
AnnaBridge 172:65be27845400 168 HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength);
AnnaBridge 172:65be27845400 169 HAL_StatusTypeDef HAL_UARTEx_EnableFifoMode(UART_HandleTypeDef *huart);
AnnaBridge 172:65be27845400 170 HAL_StatusTypeDef HAL_UARTEx_DisableFifoMode(UART_HandleTypeDef *huart);
AnnaBridge 172:65be27845400 171 HAL_StatusTypeDef HAL_UARTEx_SetTxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold);
AnnaBridge 172:65be27845400 172 HAL_StatusTypeDef HAL_UARTEx_SetRxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold);
AnnaBridge 172:65be27845400 173
AnnaBridge 172:65be27845400 174 /**
AnnaBridge 172:65be27845400 175 * @}
AnnaBridge 172:65be27845400 176 */
AnnaBridge 172:65be27845400 177
AnnaBridge 172:65be27845400 178 /**
AnnaBridge 172:65be27845400 179 * @}
AnnaBridge 172:65be27845400 180 */
AnnaBridge 172:65be27845400 181
AnnaBridge 172:65be27845400 182 /* Private macros ------------------------------------------------------------*/
AnnaBridge 172:65be27845400 183 /** @defgroup UARTEx_Private_Macros UARTEx Private Macros
AnnaBridge 172:65be27845400 184 * @{
AnnaBridge 172:65be27845400 185 */
AnnaBridge 172:65be27845400 186
AnnaBridge 172:65be27845400 187 /** @brief Report the UART clock source.
AnnaBridge 172:65be27845400 188 * @param __HANDLE__ specifies the UART Handle.
AnnaBridge 172:65be27845400 189 * @param __CLOCKSOURCE__ output variable.
AnnaBridge 172:65be27845400 190 * @retval UART clocking source, written in __CLOCKSOURCE__.
AnnaBridge 172:65be27845400 191 */
AnnaBridge 172:65be27845400 192 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
AnnaBridge 172:65be27845400 193 do { \
AnnaBridge 172:65be27845400 194 if((__HANDLE__)->Instance == USART1) \
AnnaBridge 172:65be27845400 195 { \
AnnaBridge 172:65be27845400 196 switch(__HAL_RCC_GET_USART1_SOURCE()) \
AnnaBridge 172:65be27845400 197 { \
AnnaBridge 172:65be27845400 198 case RCC_USART1CLKSOURCE_D2PCLK2: \
AnnaBridge 172:65be27845400 199 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK2; \
AnnaBridge 172:65be27845400 200 break; \
AnnaBridge 172:65be27845400 201 case RCC_USART1CLKSOURCE_PLL2: \
AnnaBridge 172:65be27845400 202 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2; \
AnnaBridge 172:65be27845400 203 break; \
AnnaBridge 172:65be27845400 204 case RCC_USART1CLKSOURCE_PLL3: \
AnnaBridge 172:65be27845400 205 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3; \
AnnaBridge 172:65be27845400 206 break; \
AnnaBridge 172:65be27845400 207 case RCC_USART1CLKSOURCE_HSI: \
AnnaBridge 172:65be27845400 208 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 172:65be27845400 209 break; \
AnnaBridge 172:65be27845400 210 case RCC_USART1CLKSOURCE_CSI: \
AnnaBridge 172:65be27845400 211 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI; \
AnnaBridge 172:65be27845400 212 break; \
AnnaBridge 172:65be27845400 213 case RCC_USART1CLKSOURCE_LSE: \
AnnaBridge 172:65be27845400 214 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 172:65be27845400 215 break; \
AnnaBridge 172:65be27845400 216 default: \
AnnaBridge 172:65be27845400 217 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 172:65be27845400 218 break; \
AnnaBridge 172:65be27845400 219 } \
AnnaBridge 172:65be27845400 220 } \
AnnaBridge 172:65be27845400 221 else if((__HANDLE__)->Instance == USART2) \
AnnaBridge 172:65be27845400 222 { \
AnnaBridge 172:65be27845400 223 switch(__HAL_RCC_GET_USART2_SOURCE()) \
AnnaBridge 172:65be27845400 224 { \
AnnaBridge 172:65be27845400 225 case RCC_USART2CLKSOURCE_D2PCLK1: \
AnnaBridge 172:65be27845400 226 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1; \
AnnaBridge 172:65be27845400 227 break; \
AnnaBridge 172:65be27845400 228 case RCC_USART2CLKSOURCE_PLL2: \
AnnaBridge 172:65be27845400 229 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2; \
AnnaBridge 172:65be27845400 230 break; \
AnnaBridge 172:65be27845400 231 case RCC_USART2CLKSOURCE_PLL3: \
AnnaBridge 172:65be27845400 232 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3; \
AnnaBridge 172:65be27845400 233 break; \
AnnaBridge 172:65be27845400 234 case RCC_USART2CLKSOURCE_HSI: \
AnnaBridge 172:65be27845400 235 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 172:65be27845400 236 break; \
AnnaBridge 172:65be27845400 237 case RCC_USART2CLKSOURCE_CSI: \
AnnaBridge 172:65be27845400 238 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI; \
AnnaBridge 172:65be27845400 239 break; \
AnnaBridge 172:65be27845400 240 case RCC_USART2CLKSOURCE_LSE: \
AnnaBridge 172:65be27845400 241 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 172:65be27845400 242 break; \
AnnaBridge 172:65be27845400 243 default: \
AnnaBridge 172:65be27845400 244 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 172:65be27845400 245 break; \
AnnaBridge 172:65be27845400 246 } \
AnnaBridge 172:65be27845400 247 } \
AnnaBridge 172:65be27845400 248 else if((__HANDLE__)->Instance == USART3) \
AnnaBridge 172:65be27845400 249 { \
AnnaBridge 172:65be27845400 250 switch(__HAL_RCC_GET_USART3_SOURCE()) \
AnnaBridge 172:65be27845400 251 { \
AnnaBridge 172:65be27845400 252 case RCC_USART3CLKSOURCE_D2PCLK1: \
AnnaBridge 172:65be27845400 253 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1; \
AnnaBridge 172:65be27845400 254 break; \
AnnaBridge 172:65be27845400 255 case RCC_USART3CLKSOURCE_PLL2: \
AnnaBridge 172:65be27845400 256 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2; \
AnnaBridge 172:65be27845400 257 break; \
AnnaBridge 172:65be27845400 258 case RCC_USART3CLKSOURCE_PLL3: \
AnnaBridge 172:65be27845400 259 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3; \
AnnaBridge 172:65be27845400 260 break; \
AnnaBridge 172:65be27845400 261 case RCC_USART3CLKSOURCE_HSI: \
AnnaBridge 172:65be27845400 262 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 172:65be27845400 263 break; \
AnnaBridge 172:65be27845400 264 case RCC_USART3CLKSOURCE_CSI: \
AnnaBridge 172:65be27845400 265 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI; \
AnnaBridge 172:65be27845400 266 break; \
AnnaBridge 172:65be27845400 267 case RCC_USART3CLKSOURCE_LSE: \
AnnaBridge 172:65be27845400 268 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 172:65be27845400 269 break; \
AnnaBridge 172:65be27845400 270 default: \
AnnaBridge 172:65be27845400 271 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 172:65be27845400 272 break; \
AnnaBridge 172:65be27845400 273 } \
AnnaBridge 172:65be27845400 274 } \
AnnaBridge 172:65be27845400 275 else if((__HANDLE__)->Instance == UART4) \
AnnaBridge 172:65be27845400 276 { \
AnnaBridge 172:65be27845400 277 switch(__HAL_RCC_GET_UART4_SOURCE()) \
AnnaBridge 172:65be27845400 278 { \
AnnaBridge 172:65be27845400 279 case RCC_UART4CLKSOURCE_D2PCLK1: \
AnnaBridge 172:65be27845400 280 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1; \
AnnaBridge 172:65be27845400 281 break; \
AnnaBridge 172:65be27845400 282 case RCC_UART4CLKSOURCE_PLL2: \
AnnaBridge 172:65be27845400 283 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2; \
AnnaBridge 172:65be27845400 284 break; \
AnnaBridge 172:65be27845400 285 case RCC_UART4CLKSOURCE_PLL3: \
AnnaBridge 172:65be27845400 286 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3; \
AnnaBridge 172:65be27845400 287 break; \
AnnaBridge 172:65be27845400 288 case RCC_UART4CLKSOURCE_HSI: \
AnnaBridge 172:65be27845400 289 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 172:65be27845400 290 break; \
AnnaBridge 172:65be27845400 291 case RCC_UART4CLKSOURCE_CSI: \
AnnaBridge 172:65be27845400 292 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI; \
AnnaBridge 172:65be27845400 293 break; \
AnnaBridge 172:65be27845400 294 case RCC_UART4CLKSOURCE_LSE: \
AnnaBridge 172:65be27845400 295 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 172:65be27845400 296 break; \
AnnaBridge 172:65be27845400 297 default: \
AnnaBridge 172:65be27845400 298 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 172:65be27845400 299 break; \
AnnaBridge 172:65be27845400 300 } \
AnnaBridge 172:65be27845400 301 } \
AnnaBridge 172:65be27845400 302 else if ((__HANDLE__)->Instance == UART5) \
AnnaBridge 172:65be27845400 303 { \
AnnaBridge 172:65be27845400 304 switch(__HAL_RCC_GET_UART5_SOURCE()) \
AnnaBridge 172:65be27845400 305 { \
AnnaBridge 172:65be27845400 306 case RCC_UART5CLKSOURCE_D2PCLK1: \
AnnaBridge 172:65be27845400 307 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1; \
AnnaBridge 172:65be27845400 308 break; \
AnnaBridge 172:65be27845400 309 case RCC_UART5CLKSOURCE_PLL2: \
AnnaBridge 172:65be27845400 310 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2; \
AnnaBridge 172:65be27845400 311 break; \
AnnaBridge 172:65be27845400 312 case RCC_UART5CLKSOURCE_PLL3: \
AnnaBridge 172:65be27845400 313 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3; \
AnnaBridge 172:65be27845400 314 break; \
AnnaBridge 172:65be27845400 315 case RCC_UART5CLKSOURCE_HSI: \
AnnaBridge 172:65be27845400 316 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 172:65be27845400 317 break; \
AnnaBridge 172:65be27845400 318 case RCC_UART5CLKSOURCE_CSI: \
AnnaBridge 172:65be27845400 319 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI; \
AnnaBridge 172:65be27845400 320 break; \
AnnaBridge 172:65be27845400 321 case RCC_UART5CLKSOURCE_LSE: \
AnnaBridge 172:65be27845400 322 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 172:65be27845400 323 break; \
AnnaBridge 172:65be27845400 324 default: \
AnnaBridge 172:65be27845400 325 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 172:65be27845400 326 break; \
AnnaBridge 172:65be27845400 327 } \
AnnaBridge 172:65be27845400 328 } \
AnnaBridge 172:65be27845400 329 else if((__HANDLE__)->Instance == USART6) \
AnnaBridge 172:65be27845400 330 { \
AnnaBridge 172:65be27845400 331 switch(__HAL_RCC_GET_USART6_SOURCE()) \
AnnaBridge 172:65be27845400 332 { \
AnnaBridge 172:65be27845400 333 case RCC_USART6CLKSOURCE_D2PCLK2: \
AnnaBridge 172:65be27845400 334 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK2; \
AnnaBridge 172:65be27845400 335 break; \
AnnaBridge 172:65be27845400 336 case RCC_USART6CLKSOURCE_PLL2: \
AnnaBridge 172:65be27845400 337 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2; \
AnnaBridge 172:65be27845400 338 break; \
AnnaBridge 172:65be27845400 339 case RCC_USART6CLKSOURCE_PLL3: \
AnnaBridge 172:65be27845400 340 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3; \
AnnaBridge 172:65be27845400 341 break; \
AnnaBridge 172:65be27845400 342 case RCC_USART6CLKSOURCE_HSI: \
AnnaBridge 172:65be27845400 343 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 172:65be27845400 344 break; \
AnnaBridge 172:65be27845400 345 case RCC_USART6CLKSOURCE_CSI: \
AnnaBridge 172:65be27845400 346 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI; \
AnnaBridge 172:65be27845400 347 break; \
AnnaBridge 172:65be27845400 348 case RCC_USART6CLKSOURCE_LSE: \
AnnaBridge 172:65be27845400 349 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 172:65be27845400 350 break; \
AnnaBridge 172:65be27845400 351 default: \
AnnaBridge 172:65be27845400 352 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 172:65be27845400 353 break; \
AnnaBridge 172:65be27845400 354 } \
AnnaBridge 172:65be27845400 355 } \
AnnaBridge 172:65be27845400 356 else if((__HANDLE__)->Instance == UART7) \
AnnaBridge 172:65be27845400 357 { \
AnnaBridge 172:65be27845400 358 switch(__HAL_RCC_GET_UART7_SOURCE()) \
AnnaBridge 172:65be27845400 359 { \
AnnaBridge 172:65be27845400 360 case RCC_UART7CLKSOURCE_D2PCLK1: \
AnnaBridge 172:65be27845400 361 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1; \
AnnaBridge 172:65be27845400 362 break; \
AnnaBridge 172:65be27845400 363 case RCC_UART7CLKSOURCE_PLL2: \
AnnaBridge 172:65be27845400 364 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2; \
AnnaBridge 172:65be27845400 365 break; \
AnnaBridge 172:65be27845400 366 case RCC_UART7CLKSOURCE_PLL3: \
AnnaBridge 172:65be27845400 367 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3; \
AnnaBridge 172:65be27845400 368 break; \
AnnaBridge 172:65be27845400 369 case RCC_UART7CLKSOURCE_HSI: \
AnnaBridge 172:65be27845400 370 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 172:65be27845400 371 break; \
AnnaBridge 172:65be27845400 372 case RCC_UART7CLKSOURCE_CSI: \
AnnaBridge 172:65be27845400 373 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI; \
AnnaBridge 172:65be27845400 374 break; \
AnnaBridge 172:65be27845400 375 case RCC_UART7CLKSOURCE_LSE: \
AnnaBridge 172:65be27845400 376 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 172:65be27845400 377 break; \
AnnaBridge 172:65be27845400 378 default: \
AnnaBridge 172:65be27845400 379 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 172:65be27845400 380 break; \
AnnaBridge 172:65be27845400 381 } \
AnnaBridge 172:65be27845400 382 } \
AnnaBridge 172:65be27845400 383 else if((__HANDLE__)->Instance == UART8) \
AnnaBridge 172:65be27845400 384 { \
AnnaBridge 172:65be27845400 385 switch(__HAL_RCC_GET_UART8_SOURCE()) \
AnnaBridge 172:65be27845400 386 { \
AnnaBridge 172:65be27845400 387 case RCC_UART8CLKSOURCE_D2PCLK1: \
AnnaBridge 172:65be27845400 388 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D2PCLK1; \
AnnaBridge 172:65be27845400 389 break; \
AnnaBridge 172:65be27845400 390 case RCC_UART8CLKSOURCE_PLL2: \
AnnaBridge 172:65be27845400 391 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2; \
AnnaBridge 172:65be27845400 392 break; \
AnnaBridge 172:65be27845400 393 case RCC_UART8CLKSOURCE_PLL3: \
AnnaBridge 172:65be27845400 394 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3; \
AnnaBridge 172:65be27845400 395 break; \
AnnaBridge 172:65be27845400 396 case RCC_UART8CLKSOURCE_HSI: \
AnnaBridge 172:65be27845400 397 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 172:65be27845400 398 break; \
AnnaBridge 172:65be27845400 399 case RCC_UART8CLKSOURCE_CSI: \
AnnaBridge 172:65be27845400 400 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI; \
AnnaBridge 172:65be27845400 401 break; \
AnnaBridge 172:65be27845400 402 case RCC_UART8CLKSOURCE_LSE: \
AnnaBridge 172:65be27845400 403 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 172:65be27845400 404 break; \
AnnaBridge 172:65be27845400 405 default: \
AnnaBridge 172:65be27845400 406 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 172:65be27845400 407 break; \
AnnaBridge 172:65be27845400 408 } \
AnnaBridge 172:65be27845400 409 } \
AnnaBridge 172:65be27845400 410 else if((__HANDLE__)->Instance == LPUART1) \
AnnaBridge 172:65be27845400 411 { \
AnnaBridge 172:65be27845400 412 switch(__HAL_RCC_GET_LPUART1_SOURCE()) \
AnnaBridge 172:65be27845400 413 { \
AnnaBridge 172:65be27845400 414 case RCC_LPUART1CLKSOURCE_D3PCLK1: \
AnnaBridge 172:65be27845400 415 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_D3PCLK1; \
AnnaBridge 172:65be27845400 416 break; \
AnnaBridge 172:65be27845400 417 case RCC_LPUART1CLKSOURCE_PLL2: \
AnnaBridge 172:65be27845400 418 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL2; \
AnnaBridge 172:65be27845400 419 break; \
AnnaBridge 172:65be27845400 420 case RCC_LPUART1CLKSOURCE_PLL3: \
AnnaBridge 172:65be27845400 421 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PLL3; \
AnnaBridge 172:65be27845400 422 break; \
AnnaBridge 172:65be27845400 423 case RCC_LPUART1CLKSOURCE_HSI: \
AnnaBridge 172:65be27845400 424 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
AnnaBridge 172:65be27845400 425 break; \
AnnaBridge 172:65be27845400 426 case RCC_LPUART1CLKSOURCE_CSI: \
AnnaBridge 172:65be27845400 427 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_CSI; \
AnnaBridge 172:65be27845400 428 break; \
AnnaBridge 172:65be27845400 429 case RCC_LPUART1CLKSOURCE_LSE: \
AnnaBridge 172:65be27845400 430 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
AnnaBridge 172:65be27845400 431 break; \
AnnaBridge 172:65be27845400 432 default: \
AnnaBridge 172:65be27845400 433 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 172:65be27845400 434 break; \
AnnaBridge 172:65be27845400 435 } \
AnnaBridge 172:65be27845400 436 } \
AnnaBridge 172:65be27845400 437 else \
AnnaBridge 172:65be27845400 438 { \
AnnaBridge 172:65be27845400 439 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 172:65be27845400 440 } \
AnnaBridge 172:65be27845400 441 } while(0U)
AnnaBridge 172:65be27845400 442
AnnaBridge 172:65be27845400 443 /** @brief Report the UART mask to apply to retrieve the received data
AnnaBridge 172:65be27845400 444 * according to the word length and to the parity bits activation.
AnnaBridge 172:65be27845400 445 * @note If PCE = 1, the parity bit is not included in the data extracted
AnnaBridge 172:65be27845400 446 * by the reception API().
AnnaBridge 172:65be27845400 447 * This masking operation is not carried out in the case of
AnnaBridge 172:65be27845400 448 * DMA transfers.
AnnaBridge 172:65be27845400 449 * @param __HANDLE__ specifies the UART Handle.
AnnaBridge 172:65be27845400 450 * @retval None, the mask to apply to UART RDR register is stored in (__HANDLE__)->Mask field.
AnnaBridge 172:65be27845400 451 */
AnnaBridge 172:65be27845400 452 #define UART_MASK_COMPUTATION(__HANDLE__) \
AnnaBridge 172:65be27845400 453 do { \
AnnaBridge 172:65be27845400 454 if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \
AnnaBridge 172:65be27845400 455 { \
AnnaBridge 172:65be27845400 456 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
AnnaBridge 172:65be27845400 457 { \
AnnaBridge 172:65be27845400 458 (__HANDLE__)->Mask = 0x01FFU ; \
AnnaBridge 172:65be27845400 459 } \
AnnaBridge 172:65be27845400 460 else \
AnnaBridge 172:65be27845400 461 { \
AnnaBridge 172:65be27845400 462 (__HANDLE__)->Mask = 0x00FFU ; \
AnnaBridge 172:65be27845400 463 } \
AnnaBridge 172:65be27845400 464 } \
AnnaBridge 172:65be27845400 465 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \
AnnaBridge 172:65be27845400 466 { \
AnnaBridge 172:65be27845400 467 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
AnnaBridge 172:65be27845400 468 { \
AnnaBridge 172:65be27845400 469 (__HANDLE__)->Mask = 0x00FFU ; \
AnnaBridge 172:65be27845400 470 } \
AnnaBridge 172:65be27845400 471 else \
AnnaBridge 172:65be27845400 472 { \
AnnaBridge 172:65be27845400 473 (__HANDLE__)->Mask = 0x007FU ; \
AnnaBridge 172:65be27845400 474 } \
AnnaBridge 172:65be27845400 475 } \
AnnaBridge 172:65be27845400 476 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_7B) \
AnnaBridge 172:65be27845400 477 { \
AnnaBridge 172:65be27845400 478 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
AnnaBridge 172:65be27845400 479 { \
AnnaBridge 172:65be27845400 480 (__HANDLE__)->Mask = 0x007FU ; \
AnnaBridge 172:65be27845400 481 } \
AnnaBridge 172:65be27845400 482 else \
AnnaBridge 172:65be27845400 483 { \
AnnaBridge 172:65be27845400 484 (__HANDLE__)->Mask = 0x003FU ; \
AnnaBridge 172:65be27845400 485 } \
AnnaBridge 172:65be27845400 486 } \
AnnaBridge 172:65be27845400 487 else \
AnnaBridge 172:65be27845400 488 { \
AnnaBridge 172:65be27845400 489 (__HANDLE__)->Mask = 0x0000U; \
AnnaBridge 172:65be27845400 490 } \
AnnaBridge 172:65be27845400 491 } while(0U)
AnnaBridge 172:65be27845400 492
AnnaBridge 172:65be27845400 493 /**
AnnaBridge 172:65be27845400 494 * @brief Ensure that UART frame length is valid.
AnnaBridge 172:65be27845400 495 * @param __LENGTH__ UART frame length.
AnnaBridge 172:65be27845400 496 * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid)
AnnaBridge 172:65be27845400 497 */
AnnaBridge 172:65be27845400 498 #define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_7B) || \
AnnaBridge 172:65be27845400 499 ((__LENGTH__) == UART_WORDLENGTH_8B) || \
AnnaBridge 172:65be27845400 500 ((__LENGTH__) == UART_WORDLENGTH_9B))
AnnaBridge 172:65be27845400 501
AnnaBridge 172:65be27845400 502 /**
AnnaBridge 172:65be27845400 503 * @brief Ensure that UART wake-up address length is valid.
AnnaBridge 172:65be27845400 504 * @param __ADDRESS__ UART wake-up address length.
AnnaBridge 172:65be27845400 505 * @retval SET (__ADDRESS__ is valid) or RESET (__ADDRESS__ is invalid)
AnnaBridge 172:65be27845400 506 */
AnnaBridge 172:65be27845400 507 #define IS_UART_ADDRESSLENGTH_DETECT(__ADDRESS__) (((__ADDRESS__) == UART_ADDRESS_DETECT_4B) || \
AnnaBridge 172:65be27845400 508 ((__ADDRESS__) == UART_ADDRESS_DETECT_7B))
AnnaBridge 172:65be27845400 509
AnnaBridge 172:65be27845400 510 /**
AnnaBridge 172:65be27845400 511 * @brief Ensure that UART TXFIFO threshold level is valid.
AnnaBridge 172:65be27845400 512 * @param __THRESHOLD__ UART TXFIFO threshold level.
AnnaBridge 172:65be27845400 513 * @retval SET (__THRESHOLD__ is valid) or RESET (__THRESHOLD__ is invalid)
AnnaBridge 172:65be27845400 514 */
AnnaBridge 172:65be27845400 515 #define IS_UART_TXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == UART_TXFIFO_THRESHOLD_1_8) || \
AnnaBridge 172:65be27845400 516 ((__THRESHOLD__) == UART_TXFIFO_THRESHOLD_1_4) || \
AnnaBridge 172:65be27845400 517 ((__THRESHOLD__) == UART_TXFIFO_THRESHOLD_1_2) || \
AnnaBridge 172:65be27845400 518 ((__THRESHOLD__) == UART_TXFIFO_THRESHOLD_3_4) || \
AnnaBridge 172:65be27845400 519 ((__THRESHOLD__) == UART_TXFIFO_THRESHOLD_7_8) || \
AnnaBridge 172:65be27845400 520 ((__THRESHOLD__) == UART_TXFIFO_THRESHOLD_8_8))
AnnaBridge 172:65be27845400 521
AnnaBridge 172:65be27845400 522 /**
AnnaBridge 172:65be27845400 523 * @brief Ensure that UART RXFIFO threshold level is valid.
AnnaBridge 172:65be27845400 524 * @param __THRESHOLD__ UART RXFIFO threshold level.
AnnaBridge 172:65be27845400 525 * @retval SET (__THRESHOLD__ is valid) or RESET (__THRESHOLD__ is invalid)
AnnaBridge 172:65be27845400 526 */
AnnaBridge 172:65be27845400 527 #define IS_UART_RXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == UART_RXFIFO_THRESHOLD_1_8) || \
AnnaBridge 172:65be27845400 528 ((__THRESHOLD__) == UART_RXFIFO_THRESHOLD_1_4) || \
AnnaBridge 172:65be27845400 529 ((__THRESHOLD__) == UART_RXFIFO_THRESHOLD_1_2) || \
AnnaBridge 172:65be27845400 530 ((__THRESHOLD__) == UART_RXFIFO_THRESHOLD_3_4) || \
AnnaBridge 172:65be27845400 531 ((__THRESHOLD__) == UART_RXFIFO_THRESHOLD_7_8) || \
AnnaBridge 172:65be27845400 532 ((__THRESHOLD__) == UART_RXFIFO_THRESHOLD_8_8))
AnnaBridge 172:65be27845400 533
AnnaBridge 172:65be27845400 534 /**
AnnaBridge 172:65be27845400 535 * @}
AnnaBridge 172:65be27845400 536 */
AnnaBridge 172:65be27845400 537
AnnaBridge 172:65be27845400 538 /* Private functions ---------------------------------------------------------*/
AnnaBridge 172:65be27845400 539
AnnaBridge 172:65be27845400 540 /**
AnnaBridge 172:65be27845400 541 * @}
AnnaBridge 172:65be27845400 542 */
AnnaBridge 172:65be27845400 543
AnnaBridge 172:65be27845400 544 /**
AnnaBridge 172:65be27845400 545 * @}
AnnaBridge 172:65be27845400 546 */
AnnaBridge 172:65be27845400 547
AnnaBridge 172:65be27845400 548 #ifdef __cplusplus
AnnaBridge 172:65be27845400 549 }
AnnaBridge 172:65be27845400 550 #endif
AnnaBridge 172:65be27845400 551
AnnaBridge 172:65be27845400 552 #endif /* STM32H7xx_HAL_UART_EX_H */
AnnaBridge 172:65be27845400 553
AnnaBridge 172:65be27845400 554 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/