2019-07-08 12:45:16 +01:00
/**
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* @ file stm32f0xx_hal_uart_ex . h
* @ author MCD Application Team
* @ brief Header file of UART HAL Extended module .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* @ attention
*
2019-10-18 12:36:04 +01:00
* < h2 > < center > & copy ; Copyright ( c ) 2016 STMicroelectronics .
* All rights reserved . < / center > < / h2 >
2019-07-08 12:45:16 +01:00
*
2019-10-18 12:36:04 +01:00
* This software component is licensed by ST under BSD 3 - Clause license ,
* the " License " ; You may not use this file except in compliance with the
* License . You may obtain a copy of the License at :
* opensource . org / licenses / BSD - 3 - Clause
2019-07-08 12:45:16 +01:00
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/
/* Define to prevent recursive inclusion -------------------------------------*/
2019-10-18 12:36:04 +01:00
# ifndef STM32F0xx_HAL_UART_EX_H
# define STM32F0xx_HAL_UART_EX_H
2019-07-08 12:45:16 +01:00
# ifdef __cplusplus
2019-10-18 12:36:04 +01:00
extern " C " {
2019-07-08 12:45:16 +01:00
# endif
/* Includes ------------------------------------------------------------------*/
# include "stm32f0xx_hal_def.h"
/** @addtogroup STM32F0xx_HAL_Driver
* @ {
*/
/** @addtogroup UARTEx
* @ {
*/
/* Exported types ------------------------------------------------------------*/
/** @defgroup UARTEx_Exported_Types UARTEx Exported Types
* @ {
*/
2019-10-18 12:36:04 +01:00
# if defined(USART_CR1_UESM)
2019-07-08 12:45:16 +01:00
/**
* @ brief UART wake up from stop mode parameters
*/
typedef struct
{
2019-10-18 12:36:04 +01:00
uint32_t WakeUpEvent ; /*!< Specifies which event will activate the Wakeup from Stop mode flag (WUF).
2019-07-08 12:45:16 +01:00
This parameter can be a value of @ ref UART_WakeUp_from_Stop_Selection .
If set to UART_WAKEUP_ON_ADDRESS , the two other fields below must
be filled up . */
uint16_t AddressLength ; /*!< Specifies whether the address is 4 or 7-bit long.
2019-10-18 12:36:04 +01:00
This parameter can be a value of @ ref UARTEx_WakeUp_Address_Length . */
2019-07-08 12:45:16 +01:00
uint8_t Address ; /*!< UART/USART node address (7-bit long max). */
} UART_WakeUpTypeDef ;
2019-10-18 12:36:04 +01:00
# endif /* USART_CR1_UESM */
2019-07-08 12:45:16 +01:00
/**
* @ }
*/
/* Exported constants --------------------------------------------------------*/
/** @defgroup UARTEx_Exported_Constants UARTEx Exported Constants
* @ {
*/
/** @defgroup UARTEx_Word_Length UARTEx Word Length
* @ {
*/
2019-10-18 12:36:04 +01:00
# if defined(USART_CR1_M1)
# define UART_WORDLENGTH_7B USART_CR1_M1 /*!< 7-bit long UART frame */
# endif /* USART_CR1_M1 */
# define UART_WORDLENGTH_8B 0x00000000U /*!< 8-bit long UART frame */
# if defined (USART_CR1_M0)
# define UART_WORDLENGTH_9B USART_CR1_M0 /*!< 9-bit long UART frame */
2019-07-08 12:45:16 +01:00
# else
2019-10-18 12:36:04 +01:00
# define UART_WORDLENGTH_9B USART_CR1_M /*!< 9-bit long UART frame */
# endif /* USART_CR1_M0 */
2019-07-08 12:45:16 +01:00
/**
* @ }
*/
2019-10-18 12:36:04 +01:00
/** @defgroup UARTEx_WakeUp_Address_Length UARTEx WakeUp Address Length
2019-07-08 12:45:16 +01:00
* @ {
*/
2019-10-18 12:36:04 +01:00
# define UART_ADDRESS_DETECT_4B 0x00000000U /*!< 4-bit long wake-up address */
# define UART_ADDRESS_DETECT_7B USART_CR2_ADDM7 /*!< 7-bit long wake-up address */
2019-07-08 12:45:16 +01:00
/**
* @ }
*/
/**
* @ }
*/
2019-10-18 12:36:04 +01:00
/* Exported macros -----------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
/** @addtogroup UARTEx_Exported_Functions
2019-07-08 12:45:16 +01:00
* @ {
*/
2019-10-18 12:36:04 +01:00
/** @addtogroup UARTEx_Exported_Functions_Group1
2019-07-08 12:45:16 +01:00
* @ {
*/
2019-10-18 12:36:04 +01:00
/* Initialization and de-initialization functions ****************************/
HAL_StatusTypeDef HAL_RS485Ex_Init ( UART_HandleTypeDef * huart , uint32_t Polarity , uint32_t AssertionTime ,
uint32_t DeassertionTime ) ;
2019-07-08 12:45:16 +01:00
/**
* @ }
*/
2019-10-18 12:36:04 +01:00
/** @addtogroup UARTEx_Exported_Functions_Group2
2019-07-08 12:45:16 +01:00
* @ {
*/
2019-10-18 12:36:04 +01:00
# if defined(USART_CR1_UESM)
void HAL_UARTEx_WakeupCallback ( UART_HandleTypeDef * huart ) ;
2019-07-08 12:45:16 +01:00
2019-10-18 12:36:04 +01:00
# endif /* USART_CR1_UESM */
2019-07-08 12:45:16 +01:00
/**
* @ }
*/
2019-10-18 12:36:04 +01:00
/** @addtogroup UARTEx_Exported_Functions_Group3
2019-07-08 12:45:16 +01:00
* @ {
*/
2019-10-18 12:36:04 +01:00
/* Peripheral Control functions **********************************************/
# if defined(USART_CR1_UESM)
HAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig ( UART_HandleTypeDef * huart , UART_WakeUpTypeDef WakeUpSelection ) ;
HAL_StatusTypeDef HAL_UARTEx_EnableStopMode ( UART_HandleTypeDef * huart ) ;
HAL_StatusTypeDef HAL_UARTEx_DisableStopMode ( UART_HandleTypeDef * huart ) ;
2019-07-08 12:45:16 +01:00
2019-10-18 12:36:04 +01:00
# endif /* USART_CR1_UESM */
HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set ( UART_HandleTypeDef * huart , uint32_t AddressLength ) ;
2019-07-08 12:45:16 +01:00
2019-10-18 12:36:04 +01:00
/**
* @ }
2019-07-08 12:45:16 +01:00
*/
/**
* @ }
*/
/* Private macros ------------------------------------------------------------*/
/** @defgroup UARTEx_Private_Macros UARTEx Private Macros
* @ {
*/
/** @brief Report the UART clock source.
* @ param __HANDLE__ specifies the UART Handle .
* @ param __CLOCKSOURCE__ output variable .
* @ retval UART clocking source , written in __CLOCKSOURCE__ .
*/
2019-10-18 12:36:04 +01:00
2019-07-08 12:45:16 +01:00
# if defined(STM32F030x6) || defined(STM32F031x6) || defined(STM32F038xx)
# define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
do { \
switch ( __HAL_RCC_GET_USART1_SOURCE ( ) ) \
{ \
case RCC_USART1CLKSOURCE_PCLK1 : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
break ; \
case RCC_USART1CLKSOURCE_HSI : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_HSI ; \
break ; \
case RCC_USART1CLKSOURCE_SYSCLK : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_SYSCLK ; \
break ; \
case RCC_USART1CLKSOURCE_LSE : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_LSE ; \
break ; \
default : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
break ; \
} \
} while ( 0 )
2019-10-18 12:36:04 +01:00
# elif defined (STM32F030x8) || defined (STM32F070x6) || defined (STM32F042x6) || defined (STM32F048xx) || defined (STM32F051x8) || defined (STM32F058xx)
2019-07-08 12:45:16 +01:00
# define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
do { \
if ( ( __HANDLE__ ) - > Instance = = USART1 ) \
{ \
switch ( __HAL_RCC_GET_USART1_SOURCE ( ) ) \
{ \
case RCC_USART1CLKSOURCE_PCLK1 : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
break ; \
case RCC_USART1CLKSOURCE_HSI : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_HSI ; \
break ; \
case RCC_USART1CLKSOURCE_SYSCLK : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_SYSCLK ; \
break ; \
case RCC_USART1CLKSOURCE_LSE : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_LSE ; \
break ; \
default : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
break ; \
} \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART2 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
} \
} while ( 0 )
# elif defined(STM32F070xB)
# define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
do { \
if ( ( __HANDLE__ ) - > Instance = = USART1 ) \
{ \
switch ( __HAL_RCC_GET_USART1_SOURCE ( ) ) \
{ \
case RCC_USART1CLKSOURCE_PCLK1 : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
break ; \
case RCC_USART1CLKSOURCE_HSI : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_HSI ; \
break ; \
case RCC_USART1CLKSOURCE_SYSCLK : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_SYSCLK ; \
break ; \
case RCC_USART1CLKSOURCE_LSE : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_LSE ; \
break ; \
default : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
break ; \
} \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART2 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART3 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART4 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
} \
} while ( 0 )
# elif defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx)
# define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
do { \
if ( ( __HANDLE__ ) - > Instance = = USART1 ) \
{ \
switch ( __HAL_RCC_GET_USART1_SOURCE ( ) ) \
{ \
case RCC_USART1CLKSOURCE_PCLK1 : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
break ; \
case RCC_USART1CLKSOURCE_HSI : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_HSI ; \
break ; \
case RCC_USART1CLKSOURCE_SYSCLK : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_SYSCLK ; \
break ; \
case RCC_USART1CLKSOURCE_LSE : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_LSE ; \
break ; \
default : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
break ; \
} \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART2 ) \
{ \
switch ( __HAL_RCC_GET_USART2_SOURCE ( ) ) \
{ \
case RCC_USART2CLKSOURCE_PCLK1 : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
break ; \
case RCC_USART2CLKSOURCE_HSI : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_HSI ; \
break ; \
case RCC_USART2CLKSOURCE_SYSCLK : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_SYSCLK ; \
break ; \
case RCC_USART2CLKSOURCE_LSE : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_LSE ; \
break ; \
default : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
break ; \
} \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART3 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART4 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
} \
} while ( 0 )
# elif defined(STM32F091xC) || defined (STM32F098xx)
# define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
do { \
if ( ( __HANDLE__ ) - > Instance = = USART1 ) \
{ \
switch ( __HAL_RCC_GET_USART1_SOURCE ( ) ) \
{ \
case RCC_USART1CLKSOURCE_PCLK1 : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
break ; \
case RCC_USART1CLKSOURCE_HSI : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_HSI ; \
break ; \
case RCC_USART1CLKSOURCE_SYSCLK : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_SYSCLK ; \
break ; \
case RCC_USART1CLKSOURCE_LSE : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_LSE ; \
break ; \
default : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
break ; \
} \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART2 ) \
{ \
switch ( __HAL_RCC_GET_USART2_SOURCE ( ) ) \
{ \
case RCC_USART2CLKSOURCE_PCLK1 : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
break ; \
case RCC_USART2CLKSOURCE_HSI : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_HSI ; \
break ; \
case RCC_USART2CLKSOURCE_SYSCLK : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_SYSCLK ; \
break ; \
case RCC_USART2CLKSOURCE_LSE : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_LSE ; \
break ; \
default : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
break ; \
} \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART3 ) \
{ \
switch ( __HAL_RCC_GET_USART3_SOURCE ( ) ) \
{ \
case RCC_USART3CLKSOURCE_PCLK1 : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
break ; \
case RCC_USART3CLKSOURCE_HSI : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_HSI ; \
break ; \
case RCC_USART3CLKSOURCE_SYSCLK : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_SYSCLK ; \
break ; \
case RCC_USART3CLKSOURCE_LSE : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_LSE ; \
break ; \
default : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
break ; \
} \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART4 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART5 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART6 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART7 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART8 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
} \
} while ( 0 )
# elif defined(STM32F030xC)
# define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
do { \
if ( ( __HANDLE__ ) - > Instance = = USART1 ) \
{ \
switch ( __HAL_RCC_GET_USART1_SOURCE ( ) ) \
{ \
case RCC_USART1CLKSOURCE_PCLK1 : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
break ; \
case RCC_USART1CLKSOURCE_HSI : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_HSI ; \
break ; \
case RCC_USART1CLKSOURCE_SYSCLK : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_SYSCLK ; \
break ; \
case RCC_USART1CLKSOURCE_LSE : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_LSE ; \
break ; \
default : \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
break ; \
} \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART2 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART3 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART4 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART5 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else if ( ( __HANDLE__ ) - > Instance = = USART6 ) \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_PCLK1 ; \
} \
else \
{ \
( __CLOCKSOURCE__ ) = UART_CLOCKSOURCE_UNDEFINED ; \
} \
} while ( 0 )
# endif /* defined(STM32F030x6) || defined(STM32F031x6) || defined(STM32F038xx) */
2019-10-18 12:36:04 +01:00
/** @brief Report the UART mask to apply to retrieve the received data
2019-07-08 12:45:16 +01:00
* according to the word length and to the parity bits activation .
* @ note If PCE = 1 , the parity bit is not included in the data extracted
* by the reception API ( ) .
* This masking operation is not carried out in the case of
* DMA transfers .
* @ param __HANDLE__ specifies the UART Handle .
* @ retval None , the mask to apply to UART RDR register is stored in ( __HANDLE__ ) - > Mask field .
*/
2019-10-18 12:36:04 +01:00
# if defined (USART_CR1_M1)
2019-07-08 12:45:16 +01:00
# define UART_MASK_COMPUTATION(__HANDLE__) \
do { \
2019-10-18 12:36:04 +01:00
if ( ( __HANDLE__ ) - > Init . WordLength = = UART_WORDLENGTH_9B ) \
{ \
if ( ( __HANDLE__ ) - > Init . Parity = = UART_PARITY_NONE ) \
{ \
( __HANDLE__ ) - > Mask = 0x01FFU ; \
} \
else \
{ \
( __HANDLE__ ) - > Mask = 0x00FFU ; \
} \
} \
else if ( ( __HANDLE__ ) - > Init . WordLength = = UART_WORDLENGTH_8B ) \
{ \
if ( ( __HANDLE__ ) - > Init . Parity = = UART_PARITY_NONE ) \
{ \
( __HANDLE__ ) - > Mask = 0x00FFU ; \
} \
else \
{ \
( __HANDLE__ ) - > Mask = 0x007FU ; \
} \
} \
else if ( ( __HANDLE__ ) - > Init . WordLength = = UART_WORDLENGTH_7B ) \
{ \
if ( ( __HANDLE__ ) - > Init . Parity = = UART_PARITY_NONE ) \
{ \
( __HANDLE__ ) - > Mask = 0x007FU ; \
} \
else \
{ \
( __HANDLE__ ) - > Mask = 0x003FU ; \
} \
} \
else \
{ \
( __HANDLE__ ) - > Mask = 0x0000U ; \
} \
} while ( 0U )
2019-07-08 12:45:16 +01:00
# else
# define UART_MASK_COMPUTATION(__HANDLE__) \
do { \
2019-10-18 12:36:04 +01:00
if ( ( __HANDLE__ ) - > Init . WordLength = = UART_WORDLENGTH_9B ) \
{ \
if ( ( __HANDLE__ ) - > Init . Parity = = UART_PARITY_NONE ) \
{ \
( __HANDLE__ ) - > Mask = 0x01FFU ; \
} \
else \
{ \
( __HANDLE__ ) - > Mask = 0x00FFU ; \
} \
} \
else if ( ( __HANDLE__ ) - > Init . WordLength = = UART_WORDLENGTH_8B ) \
{ \
if ( ( __HANDLE__ ) - > Init . Parity = = UART_PARITY_NONE ) \
{ \
( __HANDLE__ ) - > Mask = 0x00FFU ; \
} \
else \
{ \
( __HANDLE__ ) - > Mask = 0x007FU ; \
} \
} \
else \
{ \
( __HANDLE__ ) - > Mask = 0x0000U ; \
} \
} while ( 0U )
# endif /* USART_CR1_M1 */
2019-07-08 12:45:16 +01:00
/**
* @ brief Ensure that UART frame length is valid .
2019-10-18 12:36:04 +01:00
* @ param __LENGTH__ UART frame length .
2019-07-08 12:45:16 +01:00
* @ retval SET ( __LENGTH__ is valid ) or RESET ( __LENGTH__ is invalid )
*/
2019-10-18 12:36:04 +01:00
# if defined (USART_CR1_M1)
2019-07-08 12:45:16 +01:00
# define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_7B) || \
( ( __LENGTH__ ) = = UART_WORDLENGTH_8B ) | | \
( ( __LENGTH__ ) = = UART_WORDLENGTH_9B ) )
# else
# define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_8B) || \
( ( __LENGTH__ ) = = UART_WORDLENGTH_9B ) )
2019-10-18 12:36:04 +01:00
# endif /* USART_CR1_M1 */
2019-07-08 12:45:16 +01:00
/**
2019-10-18 12:36:04 +01:00
* @ brief Ensure that UART wake - up address length is valid .
* @ param __ADDRESS__ UART wake - up address length .
* @ retval SET ( __ADDRESS__ is valid ) or RESET ( __ADDRESS__ is invalid )
2019-07-08 12:45:16 +01:00
*/
2019-10-18 12:36:04 +01:00
# define IS_UART_ADDRESSLENGTH_DETECT(__ADDRESS__) (((__ADDRESS__) == UART_ADDRESS_DETECT_4B) || \
( ( __ADDRESS__ ) = = UART_ADDRESS_DETECT_7B ) )
2019-07-08 12:45:16 +01:00
/**
* @ }
*/
/* Private functions ---------------------------------------------------------*/
/**
* @ }
*/
/**
* @ }
*/
# ifdef __cplusplus
}
# endif
2019-10-18 12:36:04 +01:00
# endif /* STM32F0xx_HAL_UART_EX_H */
2019-07-08 12:45:16 +01:00
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/