Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
stm32l4xx_hal_uart_ex.h
00001 /** 00002 ****************************************************************************** 00003 * @file stm32l4xx_hal_uart_ex.h 00004 * @author MCD Application Team 00005 * @version V1.5.1 00006 * @date 31-May-2016 00007 * @brief Header file of UART HAL Extended module. 00008 ****************************************************************************** 00009 * @attention 00010 * 00011 * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> 00012 * 00013 * Redistribution and use in source and binary forms, with or without modification, 00014 * are permitted provided that the following conditions are met: 00015 * 1. Redistributions of source code must retain the above copyright notice, 00016 * this list of conditions and the following disclaimer. 00017 * 2. Redistributions in binary form must reproduce the above copyright notice, 00018 * this list of conditions and the following disclaimer in the documentation 00019 * and/or other materials provided with the distribution. 00020 * 3. Neither the name of STMicroelectronics nor the names of its contributors 00021 * may be used to endorse or promote products derived from this software 00022 * without specific prior written permission. 00023 * 00024 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00025 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00026 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00027 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 00028 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00029 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00030 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00031 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00032 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00033 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00034 * 00035 ****************************************************************************** 00036 */ 00037 00038 /* Define to prevent recursive inclusion -------------------------------------*/ 00039 #ifndef __STM32L4xx_HAL_UART_EX_H 00040 #define __STM32L4xx_HAL_UART_EX_H 00041 00042 #ifdef __cplusplus 00043 extern "C" { 00044 #endif 00045 00046 /* Includes ------------------------------------------------------------------*/ 00047 #include "stm32l4xx_hal_def.h" 00048 00049 /** @addtogroup STM32L4xx_HAL_Driver 00050 * @{ 00051 */ 00052 00053 /** @addtogroup UARTEx 00054 * @{ 00055 */ 00056 00057 /* Exported types ------------------------------------------------------------*/ 00058 /** @defgroup UARTEx_Exported_Types UARTEx Exported Types 00059 * @{ 00060 */ 00061 00062 /** 00063 * @brief UART wake up from stop mode parameters 00064 */ 00065 typedef struct 00066 { 00067 uint32_t WakeUpEvent; /*!< Specifies which event will activat the Wakeup from Stop mode flag (WUF). 00068 This parameter can be a value of @ref UART_WakeUp_from_Stop_Selection. 00069 If set to UART_WAKEUP_ON_ADDRESS, the two other fields below must 00070 be filled up. */ 00071 00072 uint16_t AddressLength; /*!< Specifies whether the address is 4 or 7-bit long. 00073 This parameter can be a value of @ref UARTEx_WakeUp_Address_Length. */ 00074 00075 uint8_t Address; /*!< UART/USART node address (7-bit long max). */ 00076 } UART_WakeUpTypeDef; 00077 00078 /** 00079 * @} 00080 */ 00081 00082 /* Exported constants --------------------------------------------------------*/ 00083 /** @defgroup UARTEx_Exported_Constants UARTEx Exported Constants 00084 * @{ 00085 */ 00086 00087 /** @defgroup UARTEx_Word_Length UART Word Length 00088 * @{ 00089 */ 00090 #define UART_WORDLENGTH_7B ((uint32_t)USART_CR1_M1) /*!< 7-bit long UART frame */ 00091 #define UART_WORDLENGTH_8B ((uint32_t)0x00000000) /*!< 8-bit long UART frame */ 00092 #define UART_WORDLENGTH_9B ((uint32_t)USART_CR1_M0) /*!< 9-bit long UART frame */ 00093 /** 00094 * @} 00095 */ 00096 00097 /** @defgroup UARTEx_WakeUp_Address_Length UART Extended WakeUp Address Length 00098 * @{ 00099 */ 00100 #define UART_ADDRESS_DETECT_4B ((uint32_t)0x00000000) /*!< 4-bit long wake-up address */ 00101 #define UART_ADDRESS_DETECT_7B ((uint32_t)USART_CR2_ADDM7) /*!< 7-bit long wake-up address */ 00102 /** 00103 * @} 00104 */ 00105 00106 /** 00107 * @} 00108 */ 00109 00110 /* Exported macros -----------------------------------------------------------*/ 00111 /* Exported functions --------------------------------------------------------*/ 00112 /** @addtogroup UARTEx_Exported_Functions 00113 * @{ 00114 */ 00115 00116 /** @addtogroup UARTEx_Exported_Functions_Group1 00117 * @{ 00118 */ 00119 00120 /* Initialization and de-initialization functions ****************************/ 00121 HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, uint32_t DeassertionTime); 00122 00123 /** 00124 * @} 00125 */ 00126 00127 /* IO operation functions *****************************************************/ 00128 00129 /** @addtogroup UARTEx_Exported_Functions_Group3 00130 * @{ 00131 */ 00132 00133 /* Peripheral Control functions **********************************************/ 00134 HAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection); 00135 HAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart); 00136 HAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart); 00137 HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength); 00138 void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart); 00139 00140 /** 00141 * @} 00142 */ 00143 00144 /** 00145 * @} 00146 */ 00147 00148 /* Private macros ------------------------------------------------------------*/ 00149 /** @defgroup UARTEx_Private_Macros UARTEx Private Macros 00150 * @{ 00151 */ 00152 00153 /** @brief Report the UART clock source. 00154 * @param __HANDLE__: specifies the UART Handle. 00155 * @param __CLOCKSOURCE__: output variable. 00156 * @retval UART clocking source, written in __CLOCKSOURCE__. 00157 */ 00158 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) 00159 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ 00160 do { \ 00161 if((__HANDLE__)->Instance == USART1) \ 00162 { \ 00163 switch(__HAL_RCC_GET_USART1_SOURCE()) \ 00164 { \ 00165 case RCC_USART1CLKSOURCE_PCLK2: \ 00166 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \ 00167 break; \ 00168 case RCC_USART1CLKSOURCE_HSI: \ 00169 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ 00170 break; \ 00171 case RCC_USART1CLKSOURCE_SYSCLK: \ 00172 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ 00173 break; \ 00174 case RCC_USART1CLKSOURCE_LSE: \ 00175 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ 00176 break; \ 00177 default: \ 00178 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ 00179 break; \ 00180 } \ 00181 } \ 00182 else if((__HANDLE__)->Instance == USART2) \ 00183 { \ 00184 switch(__HAL_RCC_GET_USART2_SOURCE()) \ 00185 { \ 00186 case RCC_USART2CLKSOURCE_PCLK1: \ 00187 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ 00188 break; \ 00189 case RCC_USART2CLKSOURCE_HSI: \ 00190 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ 00191 break; \ 00192 case RCC_USART2CLKSOURCE_SYSCLK: \ 00193 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ 00194 break; \ 00195 case RCC_USART2CLKSOURCE_LSE: \ 00196 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ 00197 break; \ 00198 default: \ 00199 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ 00200 break; \ 00201 } \ 00202 } \ 00203 else if((__HANDLE__)->Instance == USART3) \ 00204 { \ 00205 switch(__HAL_RCC_GET_USART3_SOURCE()) \ 00206 { \ 00207 case RCC_USART3CLKSOURCE_PCLK1: \ 00208 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ 00209 break; \ 00210 case RCC_USART3CLKSOURCE_HSI: \ 00211 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ 00212 break; \ 00213 case RCC_USART3CLKSOURCE_SYSCLK: \ 00214 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ 00215 break; \ 00216 case RCC_USART3CLKSOURCE_LSE: \ 00217 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ 00218 break; \ 00219 default: \ 00220 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ 00221 break; \ 00222 } \ 00223 } \ 00224 else if((__HANDLE__)->Instance == UART4) \ 00225 { \ 00226 switch(__HAL_RCC_GET_UART4_SOURCE()) \ 00227 { \ 00228 case RCC_UART4CLKSOURCE_PCLK1: \ 00229 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ 00230 break; \ 00231 case RCC_UART4CLKSOURCE_HSI: \ 00232 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ 00233 break; \ 00234 case RCC_UART4CLKSOURCE_SYSCLK: \ 00235 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ 00236 break; \ 00237 case RCC_UART4CLKSOURCE_LSE: \ 00238 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ 00239 break; \ 00240 default: \ 00241 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ 00242 break; \ 00243 } \ 00244 } \ 00245 else if ((__HANDLE__)->Instance == UART5) \ 00246 { \ 00247 switch(__HAL_RCC_GET_UART5_SOURCE()) \ 00248 { \ 00249 case RCC_UART5CLKSOURCE_PCLK1: \ 00250 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ 00251 break; \ 00252 case RCC_UART5CLKSOURCE_HSI: \ 00253 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ 00254 break; \ 00255 case RCC_UART5CLKSOURCE_SYSCLK: \ 00256 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ 00257 break; \ 00258 case RCC_UART5CLKSOURCE_LSE: \ 00259 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ 00260 break; \ 00261 default: \ 00262 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ 00263 break; \ 00264 } \ 00265 } \ 00266 else if((__HANDLE__)->Instance == LPUART1) \ 00267 { \ 00268 switch(__HAL_RCC_GET_LPUART1_SOURCE()) \ 00269 { \ 00270 case RCC_LPUART1CLKSOURCE_PCLK1: \ 00271 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ 00272 break; \ 00273 case RCC_LPUART1CLKSOURCE_HSI: \ 00274 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ 00275 break; \ 00276 case RCC_LPUART1CLKSOURCE_SYSCLK: \ 00277 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ 00278 break; \ 00279 case RCC_LPUART1CLKSOURCE_LSE: \ 00280 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ 00281 break; \ 00282 default: \ 00283 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ 00284 break; \ 00285 } \ 00286 } \ 00287 } while(0) 00288 #elif defined (STM32L431xx) || defined (STM32L433xx) || defined (STM32L443xx) 00289 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ 00290 do { \ 00291 if((__HANDLE__)->Instance == USART1) \ 00292 { \ 00293 switch(__HAL_RCC_GET_USART1_SOURCE()) \ 00294 { \ 00295 case RCC_USART1CLKSOURCE_PCLK2: \ 00296 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \ 00297 break; \ 00298 case RCC_USART1CLKSOURCE_HSI: \ 00299 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ 00300 break; \ 00301 case RCC_USART1CLKSOURCE_SYSCLK: \ 00302 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ 00303 break; \ 00304 case RCC_USART1CLKSOURCE_LSE: \ 00305 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ 00306 break; \ 00307 default: \ 00308 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ 00309 break; \ 00310 } \ 00311 } \ 00312 else if((__HANDLE__)->Instance == USART2) \ 00313 { \ 00314 switch(__HAL_RCC_GET_USART2_SOURCE()) \ 00315 { \ 00316 case RCC_USART2CLKSOURCE_PCLK1: \ 00317 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ 00318 break; \ 00319 case RCC_USART2CLKSOURCE_HSI: \ 00320 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ 00321 break; \ 00322 case RCC_USART2CLKSOURCE_SYSCLK: \ 00323 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ 00324 break; \ 00325 case RCC_USART2CLKSOURCE_LSE: \ 00326 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ 00327 break; \ 00328 default: \ 00329 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ 00330 break; \ 00331 } \ 00332 } \ 00333 else if((__HANDLE__)->Instance == USART3) \ 00334 { \ 00335 switch(__HAL_RCC_GET_USART3_SOURCE()) \ 00336 { \ 00337 case RCC_USART3CLKSOURCE_PCLK1: \ 00338 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ 00339 break; \ 00340 case RCC_USART3CLKSOURCE_HSI: \ 00341 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ 00342 break; \ 00343 case RCC_USART3CLKSOURCE_SYSCLK: \ 00344 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ 00345 break; \ 00346 case RCC_USART3CLKSOURCE_LSE: \ 00347 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ 00348 break; \ 00349 default: \ 00350 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ 00351 break; \ 00352 } \ 00353 } \ 00354 else if((__HANDLE__)->Instance == LPUART1) \ 00355 { \ 00356 switch(__HAL_RCC_GET_LPUART1_SOURCE()) \ 00357 { \ 00358 case RCC_LPUART1CLKSOURCE_PCLK1: \ 00359 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ 00360 break; \ 00361 case RCC_LPUART1CLKSOURCE_HSI: \ 00362 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ 00363 break; \ 00364 case RCC_LPUART1CLKSOURCE_SYSCLK: \ 00365 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ 00366 break; \ 00367 case RCC_LPUART1CLKSOURCE_LSE: \ 00368 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ 00369 break; \ 00370 default: \ 00371 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ 00372 break; \ 00373 } \ 00374 } \ 00375 } while(0) 00376 #elif defined (STM32L432xx) || defined (STM32L442xx) 00377 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ 00378 do { \ 00379 if((__HANDLE__)->Instance == USART1) \ 00380 { \ 00381 switch(__HAL_RCC_GET_USART1_SOURCE()) \ 00382 { \ 00383 case RCC_USART1CLKSOURCE_PCLK2: \ 00384 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \ 00385 break; \ 00386 case RCC_USART1CLKSOURCE_HSI: \ 00387 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ 00388 break; \ 00389 case RCC_USART1CLKSOURCE_SYSCLK: \ 00390 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ 00391 break; \ 00392 case RCC_USART1CLKSOURCE_LSE: \ 00393 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ 00394 break; \ 00395 default: \ 00396 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ 00397 break; \ 00398 } \ 00399 } \ 00400 else if((__HANDLE__)->Instance == USART2) \ 00401 { \ 00402 switch(__HAL_RCC_GET_USART2_SOURCE()) \ 00403 { \ 00404 case RCC_USART2CLKSOURCE_PCLK1: \ 00405 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ 00406 break; \ 00407 case RCC_USART2CLKSOURCE_HSI: \ 00408 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ 00409 break; \ 00410 case RCC_USART2CLKSOURCE_SYSCLK: \ 00411 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ 00412 break; \ 00413 case RCC_USART2CLKSOURCE_LSE: \ 00414 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ 00415 break; \ 00416 default: \ 00417 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ 00418 break; \ 00419 } \ 00420 } \ 00421 else if((__HANDLE__)->Instance == LPUART1) \ 00422 { \ 00423 switch(__HAL_RCC_GET_LPUART1_SOURCE()) \ 00424 { \ 00425 case RCC_LPUART1CLKSOURCE_PCLK1: \ 00426 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ 00427 break; \ 00428 case RCC_LPUART1CLKSOURCE_HSI: \ 00429 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ 00430 break; \ 00431 case RCC_LPUART1CLKSOURCE_SYSCLK: \ 00432 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ 00433 break; \ 00434 case RCC_LPUART1CLKSOURCE_LSE: \ 00435 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ 00436 break; \ 00437 default: \ 00438 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ 00439 break; \ 00440 } \ 00441 } \ 00442 } while(0) 00443 #endif 00444 00445 /** @brief Report the UART mask to apply to retrieve the received data 00446 * according to the word length and to the parity bits activation. 00447 * @note If PCE = 1, the parity bit is not included in the data extracted 00448 * by the reception API(). 00449 * This masking operation is not carried out in the case of 00450 * DMA transfers. 00451 * @param __HANDLE__: specifies the UART Handle. 00452 * @retval None, the mask to apply to UART RDR register is stored in (__HANDLE__)->Mask field. 00453 */ 00454 #define UART_MASK_COMPUTATION(__HANDLE__) \ 00455 do { \ 00456 if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \ 00457 { \ 00458 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \ 00459 { \ 00460 (__HANDLE__)->Mask = 0x01FF ; \ 00461 } \ 00462 else \ 00463 { \ 00464 (__HANDLE__)->Mask = 0x00FF ; \ 00465 } \ 00466 } \ 00467 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \ 00468 { \ 00469 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \ 00470 { \ 00471 (__HANDLE__)->Mask = 0x00FF ; \ 00472 } \ 00473 else \ 00474 { \ 00475 (__HANDLE__)->Mask = 0x007F ; \ 00476 } \ 00477 } \ 00478 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_7B) \ 00479 { \ 00480 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \ 00481 { \ 00482 (__HANDLE__)->Mask = 0x007F ; \ 00483 } \ 00484 else \ 00485 { \ 00486 (__HANDLE__)->Mask = 0x003F ; \ 00487 } \ 00488 } \ 00489 } while(0) 00490 00491 00492 /** 00493 * @brief Ensure that UART frame length is valid. 00494 * @param __LENGTH__: UART frame length. 00495 * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid) 00496 */ 00497 #define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_7B) || \ 00498 ((__LENGTH__) == UART_WORDLENGTH_8B) || \ 00499 ((__LENGTH__) == UART_WORDLENGTH_9B)) 00500 00501 /** 00502 * @brief Ensure that UART wake-up address length is valid. 00503 * @param __ADDRESS__: UART wake-up address length. 00504 * @retval SET (__ADDRESS__ is valid) or RESET (__ADDRESS__ is invalid) 00505 */ 00506 #define IS_UART_ADDRESSLENGTH_DETECT(__ADDRESS__) (((__ADDRESS__) == UART_ADDRESS_DETECT_4B) || \ 00507 ((__ADDRESS__) == UART_ADDRESS_DETECT_7B)) 00508 00509 /** 00510 * @} 00511 */ 00512 00513 /* Private functions ---------------------------------------------------------*/ 00514 00515 /** 00516 * @} 00517 */ 00518 00519 /** 00520 * @} 00521 */ 00522 00523 #ifdef __cplusplus 00524 } 00525 #endif 00526 00527 #endif /* __STM32L4xx_HAL_UART_EX_H */ 00528 00529 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Generated on Tue Jul 12 2022 10:59:59 by
