mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Fri Aug 14 13:15:17 2015 +0100
Revision:
610:813dcc80987e
Parent:
573:ad23fe03a082
Synchronized with git revision 6d84db41c6833e0b9b024741eb0616a5f62d5599

Full URL: https://github.com/mbedmicro/mbed/commit/6d84db41c6833e0b9b024741eb0616a5f62d5599/

DISCO_F746NG - Improvements

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 573:ad23fe03a082 1 /**
mbed_official 573:ad23fe03a082 2 ******************************************************************************
mbed_official 573:ad23fe03a082 3 * @file stm32f7xx_hal_uart.h
mbed_official 573:ad23fe03a082 4 * @author MCD Application Team
mbed_official 610:813dcc80987e 5 * @version V1.0.1
mbed_official 610:813dcc80987e 6 * @date 25-June-2015
mbed_official 573:ad23fe03a082 7 * @brief Header file of UART HAL module.
mbed_official 573:ad23fe03a082 8 ******************************************************************************
mbed_official 573:ad23fe03a082 9 * @attention
mbed_official 573:ad23fe03a082 10 *
mbed_official 573:ad23fe03a082 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 573:ad23fe03a082 12 *
mbed_official 573:ad23fe03a082 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 573:ad23fe03a082 14 * are permitted provided that the following conditions are met:
mbed_official 573:ad23fe03a082 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 573:ad23fe03a082 16 * this list of conditions and the following disclaimer.
mbed_official 573:ad23fe03a082 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 573:ad23fe03a082 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 573:ad23fe03a082 19 * and/or other materials provided with the distribution.
mbed_official 573:ad23fe03a082 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 573:ad23fe03a082 21 * may be used to endorse or promote products derived from this software
mbed_official 573:ad23fe03a082 22 * without specific prior written permission.
mbed_official 573:ad23fe03a082 23 *
mbed_official 573:ad23fe03a082 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 573:ad23fe03a082 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 573:ad23fe03a082 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 573:ad23fe03a082 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 573:ad23fe03a082 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 573:ad23fe03a082 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 573:ad23fe03a082 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 573:ad23fe03a082 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 573:ad23fe03a082 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 573:ad23fe03a082 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 573:ad23fe03a082 34 *
mbed_official 573:ad23fe03a082 35 ******************************************************************************
mbed_official 573:ad23fe03a082 36 */
mbed_official 573:ad23fe03a082 37
mbed_official 573:ad23fe03a082 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 573:ad23fe03a082 39 #ifndef __STM32F7xx_HAL_UART_H
mbed_official 573:ad23fe03a082 40 #define __STM32F7xx_HAL_UART_H
mbed_official 573:ad23fe03a082 41
mbed_official 573:ad23fe03a082 42 #ifdef __cplusplus
mbed_official 573:ad23fe03a082 43 extern "C" {
mbed_official 573:ad23fe03a082 44 #endif
mbed_official 573:ad23fe03a082 45
mbed_official 573:ad23fe03a082 46 /* Includes ------------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 47 #include "stm32f7xx_hal_def.h"
mbed_official 573:ad23fe03a082 48
mbed_official 573:ad23fe03a082 49 /** @addtogroup STM32F7xx_HAL_Driver
mbed_official 573:ad23fe03a082 50 * @{
mbed_official 573:ad23fe03a082 51 */
mbed_official 573:ad23fe03a082 52
mbed_official 573:ad23fe03a082 53 /** @addtogroup UART
mbed_official 573:ad23fe03a082 54 * @{
mbed_official 573:ad23fe03a082 55 */
mbed_official 573:ad23fe03a082 56
mbed_official 573:ad23fe03a082 57 /* Exported types ------------------------------------------------------------*/
mbed_official 573:ad23fe03a082 58 /** @defgroup UART_Exported_Types UART Exported Types
mbed_official 573:ad23fe03a082 59 * @{
mbed_official 573:ad23fe03a082 60 */
mbed_official 573:ad23fe03a082 61
mbed_official 573:ad23fe03a082 62 /**
mbed_official 573:ad23fe03a082 63 * @brief UART Init Structure definition
mbed_official 573:ad23fe03a082 64 */
mbed_official 573:ad23fe03a082 65 typedef struct
mbed_official 573:ad23fe03a082 66 {
mbed_official 573:ad23fe03a082 67 uint32_t BaudRate; /*!< This member configures the UART communication baud rate.
mbed_official 573:ad23fe03a082 68 The baud rate register is computed using the following formula:
mbed_official 573:ad23fe03a082 69 - If oversampling is 16 or in LIN mode,
mbed_official 573:ad23fe03a082 70 Baud Rate Register = ((PCLKx) / ((huart->Init.BaudRate)))
mbed_official 573:ad23fe03a082 71 - If oversampling is 8,
mbed_official 573:ad23fe03a082 72 Baud Rate Register[15:4] = ((2 * PCLKx) / ((huart->Init.BaudRate)))[15:4]
mbed_official 573:ad23fe03a082 73 Baud Rate Register[3] = 0
mbed_official 573:ad23fe03a082 74 Baud Rate Register[2:0] = (((2 * PCLKx) / ((huart->Init.BaudRate)))[3:0]) >> 1 */
mbed_official 573:ad23fe03a082 75
mbed_official 573:ad23fe03a082 76 uint32_t WordLength; /*!< Specifies the number of data bits transmitted or received in a frame.
mbed_official 573:ad23fe03a082 77 This parameter can be a value of @ref UARTEx_Word_Length */
mbed_official 573:ad23fe03a082 78
mbed_official 573:ad23fe03a082 79 uint32_t StopBits; /*!< Specifies the number of stop bits transmitted.
mbed_official 573:ad23fe03a082 80 This parameter can be a value of @ref UART_Stop_Bits */
mbed_official 573:ad23fe03a082 81
mbed_official 573:ad23fe03a082 82 uint32_t Parity; /*!< Specifies the parity mode.
mbed_official 573:ad23fe03a082 83 This parameter can be a value of @ref UART_Parity
mbed_official 573:ad23fe03a082 84 @note When parity is enabled, the computed parity is inserted
mbed_official 573:ad23fe03a082 85 at the MSB position of the transmitted data (9th bit when
mbed_official 573:ad23fe03a082 86 the word length is set to 9 data bits; 8th bit when the
mbed_official 573:ad23fe03a082 87 word length is set to 8 data bits). */
mbed_official 573:ad23fe03a082 88
mbed_official 573:ad23fe03a082 89 uint32_t Mode; /*!< Specifies whether the Receive or Transmit mode is enabled or disabled.
mbed_official 573:ad23fe03a082 90 This parameter can be a value of @ref UART_Mode */
mbed_official 573:ad23fe03a082 91
mbed_official 573:ad23fe03a082 92 uint32_t HwFlowCtl; /*!< Specifies whether the hardware flow control mode is enabled
mbed_official 573:ad23fe03a082 93 or disabled.
mbed_official 573:ad23fe03a082 94 This parameter can be a value of @ref UART_Hardware_Flow_Control */
mbed_official 573:ad23fe03a082 95
mbed_official 573:ad23fe03a082 96 uint32_t OverSampling; /*!< Specifies whether the Over sampling 8 is enabled or disabled, to achieve higher speed (up to fPCLK/8).
mbed_official 573:ad23fe03a082 97 This parameter can be a value of @ref UART_Over_Sampling */
mbed_official 573:ad23fe03a082 98
mbed_official 573:ad23fe03a082 99 uint32_t OneBitSampling; /*!< Specifies whether a single sample or three samples' majority vote is selected.
mbed_official 573:ad23fe03a082 100 Selecting the single sample method increases the receiver tolerance to clock
mbed_official 573:ad23fe03a082 101 deviations. This parameter can be a value of @ref UART_OneBit_Sampling */
mbed_official 573:ad23fe03a082 102 }UART_InitTypeDef;
mbed_official 573:ad23fe03a082 103
mbed_official 573:ad23fe03a082 104 /**
mbed_official 573:ad23fe03a082 105 * @brief UART Advanced Features initalization structure definition
mbed_official 573:ad23fe03a082 106 */
mbed_official 573:ad23fe03a082 107 typedef struct
mbed_official 573:ad23fe03a082 108 {
mbed_official 573:ad23fe03a082 109 uint32_t AdvFeatureInit; /*!< Specifies which advanced UART features is initialized. Several
mbed_official 573:ad23fe03a082 110 Advanced Features may be initialized at the same time .
mbed_official 573:ad23fe03a082 111 This parameter can be a value of @ref UART_Advanced_Features_Initialization_Type */
mbed_official 573:ad23fe03a082 112
mbed_official 573:ad23fe03a082 113 uint32_t TxPinLevelInvert; /*!< Specifies whether the TX pin active level is inverted.
mbed_official 573:ad23fe03a082 114 This parameter can be a value of @ref UART_Tx_Inv */
mbed_official 573:ad23fe03a082 115
mbed_official 573:ad23fe03a082 116 uint32_t RxPinLevelInvert; /*!< Specifies whether the RX pin active level is inverted.
mbed_official 573:ad23fe03a082 117 This parameter can be a value of @ref UART_Rx_Inv */
mbed_official 573:ad23fe03a082 118
mbed_official 573:ad23fe03a082 119 uint32_t DataInvert; /*!< Specifies whether data are inverted (positive/direct logic
mbed_official 573:ad23fe03a082 120 vs negative/inverted logic).
mbed_official 573:ad23fe03a082 121 This parameter can be a value of @ref UART_Data_Inv */
mbed_official 573:ad23fe03a082 122
mbed_official 573:ad23fe03a082 123 uint32_t Swap; /*!< Specifies whether TX and RX pins are swapped.
mbed_official 573:ad23fe03a082 124 This parameter can be a value of @ref UART_Rx_Tx_Swap */
mbed_official 573:ad23fe03a082 125
mbed_official 573:ad23fe03a082 126 uint32_t OverrunDisable; /*!< Specifies whether the reception overrun detection is disabled.
mbed_official 573:ad23fe03a082 127 This parameter can be a value of @ref UART_Overrun_Disable */
mbed_official 573:ad23fe03a082 128
mbed_official 573:ad23fe03a082 129 uint32_t DMADisableonRxError; /*!< Specifies whether the DMA is disabled in case of reception error.
mbed_official 573:ad23fe03a082 130 This parameter can be a value of @ref UART_DMA_Disable_on_Rx_Error */
mbed_official 573:ad23fe03a082 131
mbed_official 573:ad23fe03a082 132 uint32_t AutoBaudRateEnable; /*!< Specifies whether auto Baud rate detection is enabled.
mbed_official 573:ad23fe03a082 133 This parameter can be a value of @ref UART_AutoBaudRate_Enable */
mbed_official 573:ad23fe03a082 134
mbed_official 573:ad23fe03a082 135 uint32_t AutoBaudRateMode; /*!< If auto Baud rate detection is enabled, specifies how the rate
mbed_official 573:ad23fe03a082 136 detection is carried out.
mbed_official 573:ad23fe03a082 137 This parameter can be a value of @ref UART_AutoBaud_Rate_Mode */
mbed_official 573:ad23fe03a082 138
mbed_official 573:ad23fe03a082 139 uint32_t MSBFirst; /*!< Specifies whether MSB is sent first on UART line.
mbed_official 573:ad23fe03a082 140 This parameter can be a value of @ref UART_MSB_First */
mbed_official 573:ad23fe03a082 141 } UART_AdvFeatureInitTypeDef;
mbed_official 573:ad23fe03a082 142
mbed_official 573:ad23fe03a082 143
mbed_official 573:ad23fe03a082 144
mbed_official 573:ad23fe03a082 145 /**
mbed_official 573:ad23fe03a082 146 * @brief HAL UART State structures definition
mbed_official 573:ad23fe03a082 147 */
mbed_official 573:ad23fe03a082 148 typedef enum
mbed_official 573:ad23fe03a082 149 {
mbed_official 573:ad23fe03a082 150 HAL_UART_STATE_RESET = 0x00, /*!< Peripheral is not initialized */
mbed_official 573:ad23fe03a082 151 HAL_UART_STATE_READY = 0x01, /*!< Peripheral Initialized and ready for use */
mbed_official 573:ad23fe03a082 152 HAL_UART_STATE_BUSY = 0x02, /*!< an internal process is ongoing */
mbed_official 573:ad23fe03a082 153 HAL_UART_STATE_BUSY_TX = 0x12, /*!< Data Transmission process is ongoing */
mbed_official 573:ad23fe03a082 154 HAL_UART_STATE_BUSY_RX = 0x22, /*!< Data Reception process is ongoing */
mbed_official 573:ad23fe03a082 155 HAL_UART_STATE_BUSY_TX_RX = 0x32, /*!< Data Transmission and Reception process is ongoing */
mbed_official 573:ad23fe03a082 156 HAL_UART_STATE_TIMEOUT = 0x03, /*!< Timeout state */
mbed_official 573:ad23fe03a082 157 HAL_UART_STATE_ERROR = 0x04 /*!< Error */
mbed_official 573:ad23fe03a082 158 }HAL_UART_StateTypeDef;
mbed_official 573:ad23fe03a082 159
mbed_official 573:ad23fe03a082 160 /**
mbed_official 573:ad23fe03a082 161 * @brief UART clock sources definition
mbed_official 573:ad23fe03a082 162 */
mbed_official 573:ad23fe03a082 163 typedef enum
mbed_official 573:ad23fe03a082 164 {
mbed_official 573:ad23fe03a082 165 UART_CLOCKSOURCE_PCLK1 = 0x00, /*!< PCLK1 clock source */
mbed_official 573:ad23fe03a082 166 UART_CLOCKSOURCE_PCLK2 = 0x01, /*!< PCLK2 clock source */
mbed_official 573:ad23fe03a082 167 UART_CLOCKSOURCE_HSI = 0x02, /*!< HSI clock source */
mbed_official 573:ad23fe03a082 168 UART_CLOCKSOURCE_SYSCLK = 0x04, /*!< SYSCLK clock source */
mbed_official 573:ad23fe03a082 169 UART_CLOCKSOURCE_LSE = 0x08, /*!< LSE clock source */
mbed_official 573:ad23fe03a082 170 UART_CLOCKSOURCE_UNDEFINED = 0x10 /*!< Undefined clock source */
mbed_official 573:ad23fe03a082 171 }UART_ClockSourceTypeDef;
mbed_official 573:ad23fe03a082 172
mbed_official 573:ad23fe03a082 173 /**
mbed_official 573:ad23fe03a082 174 * @brief UART handle Structure definition
mbed_official 573:ad23fe03a082 175 */
mbed_official 573:ad23fe03a082 176 typedef struct
mbed_official 573:ad23fe03a082 177 {
mbed_official 573:ad23fe03a082 178 USART_TypeDef *Instance; /*!< UART registers base address */
mbed_official 573:ad23fe03a082 179
mbed_official 573:ad23fe03a082 180 UART_InitTypeDef Init; /*!< UART communication parameters */
mbed_official 573:ad23fe03a082 181
mbed_official 573:ad23fe03a082 182 UART_AdvFeatureInitTypeDef AdvancedInit; /*!< UART Advanced Features initialization parameters */
mbed_official 573:ad23fe03a082 183
mbed_official 573:ad23fe03a082 184 uint8_t *pTxBuffPtr; /*!< Pointer to UART Tx transfer Buffer */
mbed_official 573:ad23fe03a082 185
mbed_official 573:ad23fe03a082 186 uint16_t TxXferSize; /*!< UART Tx Transfer size */
mbed_official 573:ad23fe03a082 187
mbed_official 573:ad23fe03a082 188 uint16_t TxXferCount; /*!< UART Tx Transfer Counter */
mbed_official 573:ad23fe03a082 189
mbed_official 573:ad23fe03a082 190 uint8_t *pRxBuffPtr; /*!< Pointer to UART Rx transfer Buffer */
mbed_official 573:ad23fe03a082 191
mbed_official 573:ad23fe03a082 192 uint16_t RxXferSize; /*!< UART Rx Transfer size */
mbed_official 573:ad23fe03a082 193
mbed_official 573:ad23fe03a082 194 uint16_t RxXferCount; /*!< UART Rx Transfer Counter */
mbed_official 573:ad23fe03a082 195
mbed_official 573:ad23fe03a082 196 uint16_t Mask; /*!< UART Rx RDR register mask */
mbed_official 573:ad23fe03a082 197
mbed_official 573:ad23fe03a082 198 DMA_HandleTypeDef *hdmatx; /*!< UART Tx DMA Handle parameters */
mbed_official 573:ad23fe03a082 199
mbed_official 573:ad23fe03a082 200 DMA_HandleTypeDef *hdmarx; /*!< UART Rx DMA Handle parameters */
mbed_official 573:ad23fe03a082 201
mbed_official 573:ad23fe03a082 202 HAL_LockTypeDef Lock; /*!< Locking object */
mbed_official 573:ad23fe03a082 203
mbed_official 573:ad23fe03a082 204 __IO HAL_UART_StateTypeDef State; /*!< UART communication state */
mbed_official 573:ad23fe03a082 205
mbed_official 573:ad23fe03a082 206 __IO uint32_t ErrorCode; /*!< UART Error code */
mbed_official 573:ad23fe03a082 207
mbed_official 573:ad23fe03a082 208 }UART_HandleTypeDef;
mbed_official 573:ad23fe03a082 209
mbed_official 573:ad23fe03a082 210 /**
mbed_official 573:ad23fe03a082 211 * @}
mbed_official 573:ad23fe03a082 212 */
mbed_official 573:ad23fe03a082 213
mbed_official 573:ad23fe03a082 214 /* Exported constants --------------------------------------------------------*/
mbed_official 573:ad23fe03a082 215 /** @defgroup UART_Exported_Constants UART Exported Constants
mbed_official 573:ad23fe03a082 216 * @{
mbed_official 573:ad23fe03a082 217 */
mbed_official 573:ad23fe03a082 218 /** @defgroup UART_Error_Definition UART Error Definition
mbed_official 573:ad23fe03a082 219 * @{
mbed_official 573:ad23fe03a082 220 */
mbed_official 573:ad23fe03a082 221 #define HAL_UART_ERROR_NONE ((uint32_t)0x00000000) /*!< No error */
mbed_official 573:ad23fe03a082 222 #define HAL_UART_ERROR_PE ((uint32_t)0x00000001) /*!< Parity error */
mbed_official 573:ad23fe03a082 223 #define HAL_UART_ERROR_NE ((uint32_t)0x00000002) /*!< Noise error */
mbed_official 573:ad23fe03a082 224 #define HAL_UART_ERROR_FE ((uint32_t)0x00000004) /*!< frame error */
mbed_official 573:ad23fe03a082 225 #define HAL_UART_ERROR_ORE ((uint32_t)0x00000008) /*!< Overrun error */
mbed_official 573:ad23fe03a082 226 #define HAL_UART_ERROR_DMA ((uint32_t)0x00000010) /*!< DMA transfer error */
mbed_official 573:ad23fe03a082 227 /**
mbed_official 573:ad23fe03a082 228 * @}
mbed_official 573:ad23fe03a082 229 */
mbed_official 573:ad23fe03a082 230 /** @defgroup UART_Stop_Bits UART Number of Stop Bits
mbed_official 573:ad23fe03a082 231 * @{
mbed_official 573:ad23fe03a082 232 */
mbed_official 573:ad23fe03a082 233 #define UART_STOPBITS_1 ((uint32_t)0x0000)
mbed_official 573:ad23fe03a082 234 #define UART_STOPBITS_2 ((uint32_t)USART_CR2_STOP_1)
mbed_official 573:ad23fe03a082 235 /**
mbed_official 573:ad23fe03a082 236 * @}
mbed_official 573:ad23fe03a082 237 */
mbed_official 573:ad23fe03a082 238
mbed_official 573:ad23fe03a082 239 /** @defgroup UART_Parity UART Parity
mbed_official 573:ad23fe03a082 240 * @{
mbed_official 573:ad23fe03a082 241 */
mbed_official 573:ad23fe03a082 242 #define UART_PARITY_NONE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 243 #define UART_PARITY_EVEN ((uint32_t)USART_CR1_PCE)
mbed_official 573:ad23fe03a082 244 #define UART_PARITY_ODD ((uint32_t)(USART_CR1_PCE | USART_CR1_PS))
mbed_official 573:ad23fe03a082 245 /**
mbed_official 573:ad23fe03a082 246 * @}
mbed_official 573:ad23fe03a082 247 */
mbed_official 573:ad23fe03a082 248
mbed_official 573:ad23fe03a082 249 /** @defgroup UART_Hardware_Flow_Control UART Hardware Flow Control
mbed_official 573:ad23fe03a082 250 * @{
mbed_official 573:ad23fe03a082 251 */
mbed_official 573:ad23fe03a082 252 #define UART_HWCONTROL_NONE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 253 #define UART_HWCONTROL_RTS ((uint32_t)USART_CR3_RTSE)
mbed_official 573:ad23fe03a082 254 #define UART_HWCONTROL_CTS ((uint32_t)USART_CR3_CTSE)
mbed_official 573:ad23fe03a082 255 #define UART_HWCONTROL_RTS_CTS ((uint32_t)(USART_CR3_RTSE | USART_CR3_CTSE))
mbed_official 573:ad23fe03a082 256 /**
mbed_official 573:ad23fe03a082 257 * @}
mbed_official 573:ad23fe03a082 258 */
mbed_official 573:ad23fe03a082 259
mbed_official 573:ad23fe03a082 260 /** @defgroup UART_Mode UART Transfer Mode
mbed_official 573:ad23fe03a082 261 * @{
mbed_official 573:ad23fe03a082 262 */
mbed_official 573:ad23fe03a082 263 #define UART_MODE_RX ((uint32_t)USART_CR1_RE)
mbed_official 573:ad23fe03a082 264 #define UART_MODE_TX ((uint32_t)USART_CR1_TE)
mbed_official 573:ad23fe03a082 265 #define UART_MODE_TX_RX ((uint32_t)(USART_CR1_TE |USART_CR1_RE))
mbed_official 573:ad23fe03a082 266 /**
mbed_official 573:ad23fe03a082 267 * @}
mbed_official 573:ad23fe03a082 268 */
mbed_official 573:ad23fe03a082 269
mbed_official 573:ad23fe03a082 270 /** @defgroup UART_State UART State
mbed_official 573:ad23fe03a082 271 * @{
mbed_official 573:ad23fe03a082 272 */
mbed_official 573:ad23fe03a082 273 #define UART_STATE_DISABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 274 #define UART_STATE_ENABLE ((uint32_t)USART_CR1_UE)
mbed_official 573:ad23fe03a082 275 /**
mbed_official 573:ad23fe03a082 276 * @}
mbed_official 573:ad23fe03a082 277 */
mbed_official 573:ad23fe03a082 278
mbed_official 573:ad23fe03a082 279 /** @defgroup UART_Over_Sampling UART Over Sampling
mbed_official 573:ad23fe03a082 280 * @{
mbed_official 573:ad23fe03a082 281 */
mbed_official 573:ad23fe03a082 282 #define UART_OVERSAMPLING_16 ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 283 #define UART_OVERSAMPLING_8 ((uint32_t)USART_CR1_OVER8)
mbed_official 573:ad23fe03a082 284 /**
mbed_official 573:ad23fe03a082 285 * @}
mbed_official 573:ad23fe03a082 286 */
mbed_official 573:ad23fe03a082 287
mbed_official 573:ad23fe03a082 288 /** @defgroup UART_OneBit_Sampling UART One Bit Sampling Method
mbed_official 573:ad23fe03a082 289 * @{
mbed_official 573:ad23fe03a082 290 */
mbed_official 573:ad23fe03a082 291 #define UART_ONE_BIT_SAMPLE_DISABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 292 #define UART_ONE_BIT_SAMPLE_ENABLE ((uint32_t)USART_CR3_ONEBIT)
mbed_official 573:ad23fe03a082 293 /**
mbed_official 573:ad23fe03a082 294 * @}
mbed_official 573:ad23fe03a082 295 */
mbed_official 573:ad23fe03a082 296
mbed_official 573:ad23fe03a082 297 /** @defgroup UART_AutoBaud_Rate_Mode UART Advanced Feature AutoBaud Rate Mode
mbed_official 573:ad23fe03a082 298 * @{
mbed_official 573:ad23fe03a082 299 */
mbed_official 573:ad23fe03a082 300 #define UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT ((uint32_t)0x0000)
mbed_official 573:ad23fe03a082 301 #define UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE ((uint32_t)USART_CR2_ABRMODE_0)
mbed_official 573:ad23fe03a082 302 #define UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME ((uint32_t)USART_CR2_ABRMODE_1)
mbed_official 573:ad23fe03a082 303 #define UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME ((uint32_t)USART_CR2_ABRMODE)
mbed_official 573:ad23fe03a082 304 /**
mbed_official 573:ad23fe03a082 305 * @}
mbed_official 573:ad23fe03a082 306 */
mbed_official 573:ad23fe03a082 307
mbed_official 573:ad23fe03a082 308 /** @defgroup UART_Receiver_TimeOut UART Receiver TimeOut
mbed_official 573:ad23fe03a082 309 * @{
mbed_official 573:ad23fe03a082 310 */
mbed_official 573:ad23fe03a082 311 #define UART_RECEIVER_TIMEOUT_DISABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 312 #define UART_RECEIVER_TIMEOUT_ENABLE ((uint32_t)USART_CR2_RTOEN)
mbed_official 573:ad23fe03a082 313 /**
mbed_official 573:ad23fe03a082 314 * @}
mbed_official 573:ad23fe03a082 315 */
mbed_official 573:ad23fe03a082 316
mbed_official 573:ad23fe03a082 317 /** @defgroup UART_LIN UART Local Interconnection Network mode
mbed_official 573:ad23fe03a082 318 * @{
mbed_official 573:ad23fe03a082 319 */
mbed_official 573:ad23fe03a082 320 #define UART_LIN_DISABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 321 #define UART_LIN_ENABLE ((uint32_t)USART_CR2_LINEN)
mbed_official 573:ad23fe03a082 322 /**
mbed_official 573:ad23fe03a082 323 * @}
mbed_official 573:ad23fe03a082 324 */
mbed_official 573:ad23fe03a082 325
mbed_official 573:ad23fe03a082 326 /** @defgroup UART_LIN_Break_Detection UART LIN Break Detection
mbed_official 573:ad23fe03a082 327 * @{
mbed_official 573:ad23fe03a082 328 */
mbed_official 573:ad23fe03a082 329 #define UART_LINBREAKDETECTLENGTH_10B ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 330 #define UART_LINBREAKDETECTLENGTH_11B ((uint32_t)USART_CR2_LBDL)
mbed_official 573:ad23fe03a082 331 /**
mbed_official 573:ad23fe03a082 332 * @}
mbed_official 573:ad23fe03a082 333 */
mbed_official 573:ad23fe03a082 334
mbed_official 573:ad23fe03a082 335 /** @defgroup UART_DMA_Tx UART DMA Tx
mbed_official 573:ad23fe03a082 336 * @{
mbed_official 573:ad23fe03a082 337 */
mbed_official 573:ad23fe03a082 338 #define UART_DMA_TX_DISABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 339 #define UART_DMA_TX_ENABLE ((uint32_t)USART_CR3_DMAT)
mbed_official 573:ad23fe03a082 340 /**
mbed_official 573:ad23fe03a082 341 * @}
mbed_official 573:ad23fe03a082 342 */
mbed_official 573:ad23fe03a082 343
mbed_official 573:ad23fe03a082 344 /** @defgroup UART_DMA_Rx UART DMA Rx
mbed_official 573:ad23fe03a082 345 * @{
mbed_official 573:ad23fe03a082 346 */
mbed_official 573:ad23fe03a082 347 #define UART_DMA_RX_DISABLE ((uint32_t)0x0000)
mbed_official 573:ad23fe03a082 348 #define UART_DMA_RX_ENABLE ((uint32_t)USART_CR3_DMAR)
mbed_official 573:ad23fe03a082 349 /**
mbed_official 573:ad23fe03a082 350 * @}
mbed_official 573:ad23fe03a082 351 */
mbed_official 573:ad23fe03a082 352
mbed_official 573:ad23fe03a082 353 /** @defgroup UART_Half_Duplex_Selection UART Half Duplex Selection
mbed_official 573:ad23fe03a082 354 * @{
mbed_official 573:ad23fe03a082 355 */
mbed_official 573:ad23fe03a082 356 #define UART_HALF_DUPLEX_DISABLE ((uint32_t)0x0000)
mbed_official 573:ad23fe03a082 357 #define UART_HALF_DUPLEX_ENABLE ((uint32_t)USART_CR3_HDSEL)
mbed_official 573:ad23fe03a082 358 /**
mbed_official 573:ad23fe03a082 359 * @}
mbed_official 573:ad23fe03a082 360 */
mbed_official 573:ad23fe03a082 361
mbed_official 573:ad23fe03a082 362 /** @defgroup UART_WakeUp_Methods UART WakeUp Methods
mbed_official 573:ad23fe03a082 363 * @{
mbed_official 573:ad23fe03a082 364 */
mbed_official 573:ad23fe03a082 365 #define UART_WAKEUPMETHOD_IDLELINE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 366 #define UART_WAKEUPMETHOD_ADDRESSMARK ((uint32_t)USART_CR1_WAKE)
mbed_official 573:ad23fe03a082 367 /**
mbed_official 573:ad23fe03a082 368 * @}
mbed_official 573:ad23fe03a082 369 */
mbed_official 573:ad23fe03a082 370
mbed_official 573:ad23fe03a082 371 /** @defgroup UART_Request_Parameters UART Request Parameters
mbed_official 573:ad23fe03a082 372 * @{
mbed_official 573:ad23fe03a082 373 */
mbed_official 573:ad23fe03a082 374 #define UART_AUTOBAUD_REQUEST ((uint32_t)USART_RQR_ABRRQ) /*!< Auto-Baud Rate Request */
mbed_official 573:ad23fe03a082 375 #define UART_SENDBREAK_REQUEST ((uint32_t)USART_RQR_SBKRQ) /*!< Send Break Request */
mbed_official 573:ad23fe03a082 376 #define UART_MUTE_MODE_REQUEST ((uint32_t)USART_RQR_MMRQ) /*!< Mute Mode Request */
mbed_official 573:ad23fe03a082 377 #define UART_RXDATA_FLUSH_REQUEST ((uint32_t)USART_RQR_RXFRQ) /*!< Receive Data flush Request */
mbed_official 573:ad23fe03a082 378 #define UART_TXDATA_FLUSH_REQUEST ((uint32_t)USART_RQR_TXFRQ) /*!< Transmit data flush Request */
mbed_official 573:ad23fe03a082 379 /**
mbed_official 573:ad23fe03a082 380 * @}
mbed_official 573:ad23fe03a082 381 */
mbed_official 573:ad23fe03a082 382
mbed_official 573:ad23fe03a082 383 /** @defgroup UART_Advanced_Features_Initialization_Type UART Advanced Feature Initialization Type
mbed_official 573:ad23fe03a082 384 * @{
mbed_official 573:ad23fe03a082 385 */
mbed_official 573:ad23fe03a082 386 #define UART_ADVFEATURE_NO_INIT ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 387 #define UART_ADVFEATURE_TXINVERT_INIT ((uint32_t)0x00000001)
mbed_official 573:ad23fe03a082 388 #define UART_ADVFEATURE_RXINVERT_INIT ((uint32_t)0x00000002)
mbed_official 573:ad23fe03a082 389 #define UART_ADVFEATURE_DATAINVERT_INIT ((uint32_t)0x00000004)
mbed_official 573:ad23fe03a082 390 #define UART_ADVFEATURE_SWAP_INIT ((uint32_t)0x00000008)
mbed_official 573:ad23fe03a082 391 #define UART_ADVFEATURE_RXOVERRUNDISABLE_INIT ((uint32_t)0x00000010)
mbed_official 573:ad23fe03a082 392 #define UART_ADVFEATURE_DMADISABLEONERROR_INIT ((uint32_t)0x00000020)
mbed_official 573:ad23fe03a082 393 #define UART_ADVFEATURE_AUTOBAUDRATE_INIT ((uint32_t)0x00000040)
mbed_official 573:ad23fe03a082 394 #define UART_ADVFEATURE_MSBFIRST_INIT ((uint32_t)0x00000080)
mbed_official 573:ad23fe03a082 395 /**
mbed_official 573:ad23fe03a082 396 * @}
mbed_official 573:ad23fe03a082 397 */
mbed_official 573:ad23fe03a082 398
mbed_official 573:ad23fe03a082 399 /** @defgroup UART_Tx_Inv UART Advanced Feature TX Pin Active Level Inversion
mbed_official 573:ad23fe03a082 400 * @{
mbed_official 573:ad23fe03a082 401 */
mbed_official 573:ad23fe03a082 402 #define UART_ADVFEATURE_TXINV_DISABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 403 #define UART_ADVFEATURE_TXINV_ENABLE ((uint32_t)USART_CR2_TXINV)
mbed_official 573:ad23fe03a082 404 /**
mbed_official 573:ad23fe03a082 405 * @}
mbed_official 573:ad23fe03a082 406 */
mbed_official 573:ad23fe03a082 407
mbed_official 573:ad23fe03a082 408 /** @defgroup UART_Rx_Inv UART Advanced Feature RX Pin Active Level Inversion
mbed_official 573:ad23fe03a082 409 * @{
mbed_official 573:ad23fe03a082 410 */
mbed_official 573:ad23fe03a082 411 #define UART_ADVFEATURE_RXINV_DISABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 412 #define UART_ADVFEATURE_RXINV_ENABLE ((uint32_t)USART_CR2_RXINV)
mbed_official 573:ad23fe03a082 413 /**
mbed_official 573:ad23fe03a082 414 * @}
mbed_official 573:ad23fe03a082 415 */
mbed_official 573:ad23fe03a082 416
mbed_official 573:ad23fe03a082 417 /** @defgroup UART_Data_Inv UART Advanced Feature Binary Data Inversion
mbed_official 573:ad23fe03a082 418 * @{
mbed_official 573:ad23fe03a082 419 */
mbed_official 573:ad23fe03a082 420 #define UART_ADVFEATURE_DATAINV_DISABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 421 #define UART_ADVFEATURE_DATAINV_ENABLE ((uint32_t)USART_CR2_DATAINV)
mbed_official 573:ad23fe03a082 422 /**
mbed_official 573:ad23fe03a082 423 * @}
mbed_official 573:ad23fe03a082 424 */
mbed_official 573:ad23fe03a082 425
mbed_official 573:ad23fe03a082 426 /** @defgroup UART_Rx_Tx_Swap UART Advanced Feature RX TX Pins Swap
mbed_official 573:ad23fe03a082 427 * @{
mbed_official 573:ad23fe03a082 428 */
mbed_official 573:ad23fe03a082 429 #define UART_ADVFEATURE_SWAP_DISABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 430 #define UART_ADVFEATURE_SWAP_ENABLE ((uint32_t)USART_CR2_SWAP)
mbed_official 573:ad23fe03a082 431 /**
mbed_official 573:ad23fe03a082 432 * @}
mbed_official 573:ad23fe03a082 433 */
mbed_official 573:ad23fe03a082 434
mbed_official 573:ad23fe03a082 435 /** @defgroup UART_Overrun_Disable UART Advanced Feature Overrun Disable
mbed_official 573:ad23fe03a082 436 * @{
mbed_official 573:ad23fe03a082 437 */
mbed_official 573:ad23fe03a082 438 #define UART_ADVFEATURE_OVERRUN_ENABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 439 #define UART_ADVFEATURE_OVERRUN_DISABLE ((uint32_t)USART_CR3_OVRDIS)
mbed_official 573:ad23fe03a082 440 /**
mbed_official 573:ad23fe03a082 441 * @}
mbed_official 573:ad23fe03a082 442 */
mbed_official 573:ad23fe03a082 443
mbed_official 573:ad23fe03a082 444 /** @defgroup UART_AutoBaudRate_Enable UART Advanced Feature Auto BaudRate Enable
mbed_official 573:ad23fe03a082 445 * @{
mbed_official 573:ad23fe03a082 446 */
mbed_official 573:ad23fe03a082 447 #define UART_ADVFEATURE_AUTOBAUDRATE_DISABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 448 #define UART_ADVFEATURE_AUTOBAUDRATE_ENABLE ((uint32_t)USART_CR2_ABREN)
mbed_official 573:ad23fe03a082 449 /**
mbed_official 573:ad23fe03a082 450 * @}
mbed_official 573:ad23fe03a082 451 */
mbed_official 573:ad23fe03a082 452
mbed_official 573:ad23fe03a082 453 /** @defgroup UART_DMA_Disable_on_Rx_Error UART Advanced Feature DMA Disable On Rx Error
mbed_official 573:ad23fe03a082 454 * @{
mbed_official 573:ad23fe03a082 455 */
mbed_official 573:ad23fe03a082 456 #define UART_ADVFEATURE_DMA_ENABLEONRXERROR ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 457 #define UART_ADVFEATURE_DMA_DISABLEONRXERROR ((uint32_t)USART_CR3_DDRE)
mbed_official 573:ad23fe03a082 458 /**
mbed_official 573:ad23fe03a082 459 * @}
mbed_official 573:ad23fe03a082 460 */
mbed_official 573:ad23fe03a082 461
mbed_official 573:ad23fe03a082 462 /** @defgroup UART_MSB_First UART Advanced Feature MSB First
mbed_official 573:ad23fe03a082 463 * @{
mbed_official 573:ad23fe03a082 464 */
mbed_official 573:ad23fe03a082 465 #define UART_ADVFEATURE_MSBFIRST_DISABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 466 #define UART_ADVFEATURE_MSBFIRST_ENABLE ((uint32_t)USART_CR2_MSBFIRST)
mbed_official 573:ad23fe03a082 467 /**
mbed_official 573:ad23fe03a082 468 * @}
mbed_official 573:ad23fe03a082 469 */
mbed_official 573:ad23fe03a082 470
mbed_official 573:ad23fe03a082 471 /** @defgroup UART_Mute_Mode UART Advanced Feature Mute Mode Enable
mbed_official 573:ad23fe03a082 472 * @{
mbed_official 573:ad23fe03a082 473 */
mbed_official 573:ad23fe03a082 474 #define UART_ADVFEATURE_MUTEMODE_DISABLE ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 475 #define UART_ADVFEATURE_MUTEMODE_ENABLE ((uint32_t)USART_CR1_MME)
mbed_official 573:ad23fe03a082 476 /**
mbed_official 573:ad23fe03a082 477 * @}
mbed_official 573:ad23fe03a082 478 */
mbed_official 573:ad23fe03a082 479
mbed_official 573:ad23fe03a082 480 /** @defgroup UART_CR2_ADDRESS_LSB_POS UART Address-matching LSB Position In CR2 Register
mbed_official 573:ad23fe03a082 481 * @{
mbed_official 573:ad23fe03a082 482 */
mbed_official 573:ad23fe03a082 483 #define UART_CR2_ADDRESS_LSB_POS ((uint32_t) 24)
mbed_official 573:ad23fe03a082 484 /**
mbed_official 573:ad23fe03a082 485 * @}
mbed_official 573:ad23fe03a082 486 */
mbed_official 573:ad23fe03a082 487
mbed_official 573:ad23fe03a082 488 /** @defgroup UART_DriverEnable_Polarity UART DriverEnable Polarity
mbed_official 573:ad23fe03a082 489 * @{
mbed_official 573:ad23fe03a082 490 */
mbed_official 573:ad23fe03a082 491 #define UART_DE_POLARITY_HIGH ((uint32_t)0x00000000)
mbed_official 573:ad23fe03a082 492 #define UART_DE_POLARITY_LOW ((uint32_t)USART_CR3_DEP)
mbed_official 573:ad23fe03a082 493 /**
mbed_official 573:ad23fe03a082 494 * @}
mbed_official 573:ad23fe03a082 495 */
mbed_official 573:ad23fe03a082 496
mbed_official 573:ad23fe03a082 497 /** @defgroup UART_CR1_DEAT_ADDRESS_LSB_POS UART Driver Enable Assertion Time LSB Position In CR1 Register
mbed_official 573:ad23fe03a082 498 * @{
mbed_official 573:ad23fe03a082 499 */
mbed_official 573:ad23fe03a082 500 #define UART_CR1_DEAT_ADDRESS_LSB_POS ((uint32_t) 21)
mbed_official 573:ad23fe03a082 501 /**
mbed_official 573:ad23fe03a082 502 * @}
mbed_official 573:ad23fe03a082 503 */
mbed_official 573:ad23fe03a082 504
mbed_official 573:ad23fe03a082 505 /** @defgroup UART_CR1_DEDT_ADDRESS_LSB_POS UART Driver Enable DeAssertion Time LSB Position In CR1 Register
mbed_official 573:ad23fe03a082 506 * @{
mbed_official 573:ad23fe03a082 507 */
mbed_official 573:ad23fe03a082 508 #define UART_CR1_DEDT_ADDRESS_LSB_POS ((uint32_t) 16)
mbed_official 573:ad23fe03a082 509 /**
mbed_official 573:ad23fe03a082 510 * @}
mbed_official 573:ad23fe03a082 511 */
mbed_official 573:ad23fe03a082 512
mbed_official 573:ad23fe03a082 513 /** @defgroup UART_Interruption_Mask UART Interruptions Flag Mask
mbed_official 573:ad23fe03a082 514 * @{
mbed_official 573:ad23fe03a082 515 */
mbed_official 573:ad23fe03a082 516 #define UART_IT_MASK ((uint32_t)0x001F)
mbed_official 573:ad23fe03a082 517 /**
mbed_official 573:ad23fe03a082 518 * @}
mbed_official 573:ad23fe03a082 519 */
mbed_official 573:ad23fe03a082 520
mbed_official 573:ad23fe03a082 521 /** @defgroup UART_TimeOut_Value UART polling-based communications time-out value
mbed_official 573:ad23fe03a082 522 * @{
mbed_official 573:ad23fe03a082 523 */
mbed_official 573:ad23fe03a082 524 #define HAL_UART_TIMEOUT_VALUE 0x1FFFFFF
mbed_official 573:ad23fe03a082 525 /**
mbed_official 573:ad23fe03a082 526 * @}
mbed_official 573:ad23fe03a082 527 */
mbed_official 573:ad23fe03a082 528
mbed_official 573:ad23fe03a082 529 /** @defgroup UART_Flags UART Status Flags
mbed_official 573:ad23fe03a082 530 * Elements values convention: 0xXXXX
mbed_official 573:ad23fe03a082 531 * - 0xXXXX : Flag mask in the ISR register
mbed_official 573:ad23fe03a082 532 * @{
mbed_official 573:ad23fe03a082 533 */
mbed_official 573:ad23fe03a082 534 #define UART_FLAG_TEACK ((uint32_t)0x00200000)
mbed_official 610:813dcc80987e 535 #define UART_FLAG_SBKF ((uint32_t)0x00040000)
mbed_official 573:ad23fe03a082 536 #define UART_FLAG_CMF ((uint32_t)0x00020000)
mbed_official 573:ad23fe03a082 537 #define UART_FLAG_BUSY ((uint32_t)0x00010000)
mbed_official 573:ad23fe03a082 538 #define UART_FLAG_ABRF ((uint32_t)0x00008000)
mbed_official 573:ad23fe03a082 539 #define UART_FLAG_ABRE ((uint32_t)0x00004000)
mbed_official 573:ad23fe03a082 540 #define UART_FLAG_EOBF ((uint32_t)0x00001000)
mbed_official 573:ad23fe03a082 541 #define UART_FLAG_RTOF ((uint32_t)0x00000800)
mbed_official 573:ad23fe03a082 542 #define UART_FLAG_CTS ((uint32_t)0x00000400)
mbed_official 573:ad23fe03a082 543 #define UART_FLAG_CTSIF ((uint32_t)0x00000200)
mbed_official 573:ad23fe03a082 544 #define UART_FLAG_LBDF ((uint32_t)0x00000100)
mbed_official 573:ad23fe03a082 545 #define UART_FLAG_TXE ((uint32_t)0x00000080)
mbed_official 573:ad23fe03a082 546 #define UART_FLAG_TC ((uint32_t)0x00000040)
mbed_official 573:ad23fe03a082 547 #define UART_FLAG_RXNE ((uint32_t)0x00000020)
mbed_official 573:ad23fe03a082 548 #define UART_FLAG_IDLE ((uint32_t)0x00000010)
mbed_official 573:ad23fe03a082 549 #define UART_FLAG_ORE ((uint32_t)0x00000008)
mbed_official 573:ad23fe03a082 550 #define UART_FLAG_NE ((uint32_t)0x00000004)
mbed_official 573:ad23fe03a082 551 #define UART_FLAG_FE ((uint32_t)0x00000002)
mbed_official 573:ad23fe03a082 552 #define UART_FLAG_PE ((uint32_t)0x00000001)
mbed_official 573:ad23fe03a082 553 /**
mbed_official 573:ad23fe03a082 554 * @}
mbed_official 573:ad23fe03a082 555 */
mbed_official 573:ad23fe03a082 556
mbed_official 573:ad23fe03a082 557 /** @defgroup UART_Interrupt_definition UART Interrupts Definition
mbed_official 573:ad23fe03a082 558 * Elements values convention: 0000ZZZZ0XXYYYYYb
mbed_official 573:ad23fe03a082 559 * - YYYYY : Interrupt source position in the XX register (5bits)
mbed_official 573:ad23fe03a082 560 * - XX : Interrupt source register (2bits)
mbed_official 573:ad23fe03a082 561 * - 01: CR1 register
mbed_official 573:ad23fe03a082 562 * - 10: CR2 register
mbed_official 573:ad23fe03a082 563 * - 11: CR3 register
mbed_official 573:ad23fe03a082 564 * - ZZZZ : Flag position in the ISR register(4bits)
mbed_official 573:ad23fe03a082 565 * @{
mbed_official 573:ad23fe03a082 566 */
mbed_official 573:ad23fe03a082 567 #define UART_IT_PE ((uint32_t)0x0028)
mbed_official 573:ad23fe03a082 568 #define UART_IT_TXE ((uint32_t)0x0727)
mbed_official 573:ad23fe03a082 569 #define UART_IT_TC ((uint32_t)0x0626)
mbed_official 573:ad23fe03a082 570 #define UART_IT_RXNE ((uint32_t)0x0525)
mbed_official 573:ad23fe03a082 571 #define UART_IT_IDLE ((uint32_t)0x0424)
mbed_official 573:ad23fe03a082 572 #define UART_IT_LBD ((uint32_t)0x0846)
mbed_official 573:ad23fe03a082 573 #define UART_IT_CTS ((uint32_t)0x096A)
mbed_official 573:ad23fe03a082 574 #define UART_IT_CM ((uint32_t)0x112E)
mbed_official 573:ad23fe03a082 575
mbed_official 573:ad23fe03a082 576 /** Elements values convention: 000000000XXYYYYYb
mbed_official 573:ad23fe03a082 577 * - YYYYY : Interrupt source position in the XX register (5bits)
mbed_official 573:ad23fe03a082 578 * - XX : Interrupt source register (2bits)
mbed_official 573:ad23fe03a082 579 * - 01: CR1 register
mbed_official 573:ad23fe03a082 580 * - 10: CR2 register
mbed_official 573:ad23fe03a082 581 * - 11: CR3 register
mbed_official 573:ad23fe03a082 582 */
mbed_official 573:ad23fe03a082 583 #define UART_IT_ERR ((uint32_t)0x0060)
mbed_official 573:ad23fe03a082 584
mbed_official 573:ad23fe03a082 585 /** Elements values convention: 0000ZZZZ00000000b
mbed_official 573:ad23fe03a082 586 * - ZZZZ : Flag position in the ISR register(4bits)
mbed_official 573:ad23fe03a082 587 */
mbed_official 573:ad23fe03a082 588 #define UART_IT_ORE ((uint32_t)0x0300)
mbed_official 573:ad23fe03a082 589 #define UART_IT_NE ((uint32_t)0x0200)
mbed_official 573:ad23fe03a082 590 #define UART_IT_FE ((uint32_t)0x0100)
mbed_official 573:ad23fe03a082 591 /**
mbed_official 573:ad23fe03a082 592 * @}
mbed_official 573:ad23fe03a082 593 */
mbed_official 573:ad23fe03a082 594
mbed_official 573:ad23fe03a082 595 /** @defgroup UART_IT_CLEAR_Flags UART Interruption Clear Flags
mbed_official 573:ad23fe03a082 596 * @{
mbed_official 573:ad23fe03a082 597 */
mbed_official 573:ad23fe03a082 598 #define UART_CLEAR_PEF USART_ICR_PECF /*!< Parity Error Clear Flag */
mbed_official 573:ad23fe03a082 599 #define UART_CLEAR_FEF USART_ICR_FECF /*!< Framing Error Clear Flag */
mbed_official 573:ad23fe03a082 600 #define UART_CLEAR_NEF USART_ICR_NCF /*!< Noise detected Clear Flag */
mbed_official 573:ad23fe03a082 601 #define UART_CLEAR_OREF USART_ICR_ORECF /*!< OverRun Error Clear Flag */
mbed_official 573:ad23fe03a082 602 #define UART_CLEAR_IDLEF USART_ICR_IDLECF /*!< IDLE line detected Clear Flag */
mbed_official 573:ad23fe03a082 603 #define UART_CLEAR_TCF USART_ICR_TCCF /*!< Transmission Complete Clear Flag */
mbed_official 573:ad23fe03a082 604 #define UART_CLEAR_LBDF USART_ICR_LBDCF /*!< LIN Break Detection Clear Flag */
mbed_official 573:ad23fe03a082 605 #define UART_CLEAR_CTSF USART_ICR_CTSCF /*!< CTS Interrupt Clear Flag */
mbed_official 573:ad23fe03a082 606 #define UART_CLEAR_RTOF USART_ICR_RTOCF /*!< Receiver Time Out Clear Flag */
mbed_official 573:ad23fe03a082 607 #define UART_CLEAR_EOBF USART_ICR_EOBCF /*!< End Of Block Clear Flag */
mbed_official 573:ad23fe03a082 608 #define UART_CLEAR_CMF USART_ICR_CMCF /*!< Character Match Clear Flag */
mbed_official 573:ad23fe03a082 609 /**
mbed_official 573:ad23fe03a082 610 * @}
mbed_official 573:ad23fe03a082 611 */
mbed_official 573:ad23fe03a082 612
mbed_official 573:ad23fe03a082 613
mbed_official 573:ad23fe03a082 614 /**
mbed_official 573:ad23fe03a082 615 * @}
mbed_official 573:ad23fe03a082 616 */
mbed_official 573:ad23fe03a082 617
mbed_official 573:ad23fe03a082 618 /* Exported macros -----------------------------------------------------------*/
mbed_official 573:ad23fe03a082 619 /** @defgroup UART_Exported_Macros UART Exported Macros
mbed_official 573:ad23fe03a082 620 * @{
mbed_official 573:ad23fe03a082 621 */
mbed_official 573:ad23fe03a082 622
mbed_official 573:ad23fe03a082 623 /** @brief Reset UART handle state
mbed_official 573:ad23fe03a082 624 * @param __HANDLE__: UART handle.
mbed_official 573:ad23fe03a082 625 * @retval None
mbed_official 573:ad23fe03a082 626 */
mbed_official 573:ad23fe03a082 627 #define __HAL_UART_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_UART_STATE_RESET)
mbed_official 573:ad23fe03a082 628
mbed_official 573:ad23fe03a082 629 /** @brief Flush the UART Data registers
mbed_official 573:ad23fe03a082 630 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 631 */
mbed_official 573:ad23fe03a082 632 #define __HAL_UART_FLUSH_DRREGISTER(__HANDLE__) \
mbed_official 573:ad23fe03a082 633 do{ \
mbed_official 573:ad23fe03a082 634 SET_BIT((__HANDLE__)->Instance->RQR, UART_RXDATA_FLUSH_REQUEST); \
mbed_official 573:ad23fe03a082 635 SET_BIT((__HANDLE__)->Instance->RQR, UART_TXDATA_FLUSH_REQUEST); \
mbed_official 573:ad23fe03a082 636 } while(0)
mbed_official 573:ad23fe03a082 637
mbed_official 573:ad23fe03a082 638 /** @brief Clears the specified UART ISR flag, in setting the proper ICR register flag.
mbed_official 573:ad23fe03a082 639 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 640 * @param __FLAG__: specifies the interrupt clear register flag that needs to be set
mbed_official 573:ad23fe03a082 641 * to clear the corresponding interrupt
mbed_official 573:ad23fe03a082 642 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 643 * @arg UART_CLEAR_PEF: Parity Error Clear Flag
mbed_official 573:ad23fe03a082 644 * @arg UART_CLEAR_FEF: Framing Error Clear Flag
mbed_official 573:ad23fe03a082 645 * @arg UART_CLEAR_NEF: Noise detected Clear Flag
mbed_official 573:ad23fe03a082 646 * @arg UART_CLEAR_OREF: OverRun Error Clear Flag
mbed_official 573:ad23fe03a082 647 * @arg UART_CLEAR_IDLEF: IDLE line detected Clear Flag
mbed_official 573:ad23fe03a082 648 * @arg UART_CLEAR_TCF: Transmission Complete Clear Flag
mbed_official 573:ad23fe03a082 649 * @arg UART_CLEAR_LBDF: LIN Break Detection Clear Flag
mbed_official 573:ad23fe03a082 650 * @arg UART_CLEAR_CTSF: CTS Interrupt Clear Flag
mbed_official 573:ad23fe03a082 651 * @arg UART_CLEAR_RTOF: Receiver Time Out Clear Flag
mbed_official 573:ad23fe03a082 652 * @arg UART_CLEAR_EOBF: End Of Block Clear Flag
mbed_official 573:ad23fe03a082 653 * @arg UART_CLEAR_CMF: Character Match Clear Flag
mbed_official 573:ad23fe03a082 654 * @retval None
mbed_official 573:ad23fe03a082 655 */
mbed_official 573:ad23fe03a082 656 #define __HAL_UART_CLEAR_IT(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = ~(__FLAG__))
mbed_official 573:ad23fe03a082 657
mbed_official 573:ad23fe03a082 658 /** @brief Clear the UART PE pending flag.
mbed_official 573:ad23fe03a082 659 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 660 * @retval None
mbed_official 573:ad23fe03a082 661 */
mbed_official 573:ad23fe03a082 662 #define __HAL_UART_CLEAR_PEFLAG(__HANDLE__) __HAL_UART_CLEAR_IT((__HANDLE__),UART_CLEAR_PEF)
mbed_official 573:ad23fe03a082 663
mbed_official 573:ad23fe03a082 664 /** @brief Clear the UART FE pending flag.
mbed_official 573:ad23fe03a082 665 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 666 * @retval None
mbed_official 573:ad23fe03a082 667 */
mbed_official 573:ad23fe03a082 668 #define __HAL_UART_CLEAR_FEFLAG(__HANDLE__) __HAL_UART_CLEAR_IT((__HANDLE__),UART_CLEAR_FEF)
mbed_official 573:ad23fe03a082 669
mbed_official 573:ad23fe03a082 670 /** @brief Clear the UART NE pending flag.
mbed_official 573:ad23fe03a082 671 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 672 * @retval None
mbed_official 573:ad23fe03a082 673 */
mbed_official 573:ad23fe03a082 674 #define __HAL_UART_CLEAR_NEFLAG(__HANDLE__) __HAL_UART_CLEAR_IT((__HANDLE__),UART_CLEAR_NEF)
mbed_official 573:ad23fe03a082 675
mbed_official 573:ad23fe03a082 676 /** @brief Clear the UART ORE pending flag.
mbed_official 573:ad23fe03a082 677 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 678 * @retval None
mbed_official 573:ad23fe03a082 679 */
mbed_official 573:ad23fe03a082 680 #define __HAL_UART_CLEAR_OREFLAG(__HANDLE__) __HAL_UART_CLEAR_IT((__HANDLE__),UART_CLEAR_OREF)
mbed_official 573:ad23fe03a082 681
mbed_official 573:ad23fe03a082 682 /** @brief Clear the UART IDLE pending flag.
mbed_official 573:ad23fe03a082 683 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 684 * @retval None
mbed_official 573:ad23fe03a082 685 */
mbed_official 573:ad23fe03a082 686 #define __HAL_UART_CLEAR_IDLEFLAG(__HANDLE__) __HAL_UART_CLEAR_IT((__HANDLE__),UART_CLEAR_IDLEF)
mbed_official 573:ad23fe03a082 687
mbed_official 573:ad23fe03a082 688 /** @brief Checks whether the specified UART flag is set or not.
mbed_official 573:ad23fe03a082 689 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 690 * @param __FLAG__: specifies the flag to check.
mbed_official 573:ad23fe03a082 691 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 692 * @arg UART_FLAG_REACK: Receive enable acknowledge flag
mbed_official 573:ad23fe03a082 693 * @arg UART_FLAG_TEACK: Transmit enable acknowledge flag
mbed_official 573:ad23fe03a082 694 * @arg UART_FLAG_WUF: Wake up from stop mode flag
mbed_official 573:ad23fe03a082 695 * @arg UART_FLAG_RWU: Receiver wake up flag (is the UART in mute mode)
mbed_official 573:ad23fe03a082 696 * @arg UART_FLAG_SBKF: Send Break flag
mbed_official 573:ad23fe03a082 697 * @arg UART_FLAG_CMF: Character match flag
mbed_official 573:ad23fe03a082 698 * @arg UART_FLAG_BUSY: Busy flag
mbed_official 573:ad23fe03a082 699 * @arg UART_FLAG_ABRF: Auto Baud rate detection flag
mbed_official 573:ad23fe03a082 700 * @arg UART_FLAG_ABRE: Auto Baud rate detection error flag
mbed_official 573:ad23fe03a082 701 * @arg UART_FLAG_EOBF: End of block flag
mbed_official 573:ad23fe03a082 702 * @arg UART_FLAG_RTOF: Receiver timeout flag
mbed_official 573:ad23fe03a082 703 * @arg UART_FLAG_CTS: CTS Change flag (not available for UART4 and UART5)
mbed_official 573:ad23fe03a082 704 * @arg UART_FLAG_LBD: LIN Break detection flag
mbed_official 573:ad23fe03a082 705 * @arg UART_FLAG_TXE: Transmit data register empty flag
mbed_official 573:ad23fe03a082 706 * @arg UART_FLAG_TC: Transmission Complete flag
mbed_official 573:ad23fe03a082 707 * @arg UART_FLAG_RXNE: Receive data register not empty flag
mbed_official 573:ad23fe03a082 708 * @arg UART_FLAG_IDLE: Idle Line detection flag
mbed_official 573:ad23fe03a082 709 * @arg UART_FLAG_ORE: OverRun Error flag
mbed_official 573:ad23fe03a082 710 * @arg UART_FLAG_NE: Noise Error flag
mbed_official 573:ad23fe03a082 711 * @arg UART_FLAG_FE: Framing Error flag
mbed_official 573:ad23fe03a082 712 * @arg UART_FLAG_PE: Parity Error flag
mbed_official 573:ad23fe03a082 713 * @retval The new state of __FLAG__ (TRUE or FALSE).
mbed_official 573:ad23fe03a082 714 */
mbed_official 573:ad23fe03a082 715 #define __HAL_UART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__))
mbed_official 573:ad23fe03a082 716
mbed_official 573:ad23fe03a082 717 /** @brief Enables the specified UART interrupt.
mbed_official 573:ad23fe03a082 718 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 719 * @param __INTERRUPT__: specifies the UART interrupt source to enable.
mbed_official 573:ad23fe03a082 720 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 721 * @arg UART_IT_WUF: Wakeup from stop mode interrupt
mbed_official 573:ad23fe03a082 722 * @arg UART_IT_CM: Character match interrupt
mbed_official 573:ad23fe03a082 723 * @arg UART_IT_CTS: CTS change interrupt
mbed_official 573:ad23fe03a082 724 * @arg UART_IT_LBD: LIN Break detection interrupt
mbed_official 573:ad23fe03a082 725 * @arg UART_IT_TXE: Transmit Data Register empty interrupt
mbed_official 573:ad23fe03a082 726 * @arg UART_IT_TC: Transmission complete interrupt
mbed_official 573:ad23fe03a082 727 * @arg UART_IT_RXNE: Receive Data register not empty interrupt
mbed_official 573:ad23fe03a082 728 * @arg UART_IT_IDLE: Idle line detection interrupt
mbed_official 573:ad23fe03a082 729 * @arg UART_IT_PE: Parity Error interrupt
mbed_official 573:ad23fe03a082 730 * @arg UART_IT_ERR: Error interrupt(Frame error, noise error, overrun error)
mbed_official 573:ad23fe03a082 731 * @retval None
mbed_official 573:ad23fe03a082 732 */
mbed_official 573:ad23fe03a082 733 #define __HAL_UART_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1)? ((__HANDLE__)->Instance->CR1 |= (1U << ((__INTERRUPT__) & UART_IT_MASK))): \
mbed_official 573:ad23fe03a082 734 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2)? ((__HANDLE__)->Instance->CR2 |= (1U << ((__INTERRUPT__) & UART_IT_MASK))): \
mbed_official 573:ad23fe03a082 735 ((__HANDLE__)->Instance->CR3 |= (1U << ((__INTERRUPT__) & UART_IT_MASK))))
mbed_official 573:ad23fe03a082 736
mbed_official 573:ad23fe03a082 737
mbed_official 573:ad23fe03a082 738 /** @brief Disables the specified UART interrupt.
mbed_official 573:ad23fe03a082 739 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 740 * @param __INTERRUPT__: specifies the UART interrupt source to disable.
mbed_official 573:ad23fe03a082 741 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 742 * @arg UART_IT_CM: Character match interrupt
mbed_official 573:ad23fe03a082 743 * @arg UART_IT_CTS: CTS change interrupt
mbed_official 573:ad23fe03a082 744 * @arg UART_IT_LBD: LIN Break detection interrupt
mbed_official 573:ad23fe03a082 745 * @arg UART_IT_TXE: Transmit Data Register empty interrupt
mbed_official 573:ad23fe03a082 746 * @arg UART_IT_TC: Transmission complete interrupt
mbed_official 573:ad23fe03a082 747 * @arg UART_IT_RXNE: Receive Data register not empty interrupt
mbed_official 573:ad23fe03a082 748 * @arg UART_IT_IDLE: Idle line detection interrupt
mbed_official 573:ad23fe03a082 749 * @arg UART_IT_PE: Parity Error interrupt
mbed_official 573:ad23fe03a082 750 * @arg UART_IT_ERR: Error interrupt(Frame error, noise error, overrun error)
mbed_official 573:ad23fe03a082 751 * @retval None
mbed_official 573:ad23fe03a082 752 */
mbed_official 573:ad23fe03a082 753 #define __HAL_UART_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1)? ((__HANDLE__)->Instance->CR1 &= ~ (1U << ((__INTERRUPT__) & UART_IT_MASK))): \
mbed_official 573:ad23fe03a082 754 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2)? ((__HANDLE__)->Instance->CR2 &= ~ (1U << ((__INTERRUPT__) & UART_IT_MASK))): \
mbed_official 573:ad23fe03a082 755 ((__HANDLE__)->Instance->CR3 &= ~ (1U << ((__INTERRUPT__) & UART_IT_MASK))))
mbed_official 573:ad23fe03a082 756
mbed_official 573:ad23fe03a082 757 /** @brief Checks whether the specified UART interrupt has occurred or not.
mbed_official 573:ad23fe03a082 758 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 759 * @param __IT__: specifies the UART interrupt to check.
mbed_official 573:ad23fe03a082 760 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 761 * @arg UART_IT_CM: Character match interrupt
mbed_official 573:ad23fe03a082 762 * @arg UART_IT_CTS: CTS change interrupt (not available for UART4 and UART5)
mbed_official 573:ad23fe03a082 763 * @arg UART_IT_LBD: LIN Break detection interrupt
mbed_official 573:ad23fe03a082 764 * @arg UART_IT_TXE: Transmit Data Register empty interrupt
mbed_official 573:ad23fe03a082 765 * @arg UART_IT_TC: Transmission complete interrupt
mbed_official 573:ad23fe03a082 766 * @arg UART_IT_RXNE: Receive Data register not empty interrupt
mbed_official 573:ad23fe03a082 767 * @arg UART_IT_IDLE: Idle line detection interrupt
mbed_official 573:ad23fe03a082 768 * @arg UART_IT_ORE: OverRun Error interrupt
mbed_official 573:ad23fe03a082 769 * @arg UART_IT_NE: Noise Error interrupt
mbed_official 573:ad23fe03a082 770 * @arg UART_IT_FE: Framing Error interrupt
mbed_official 573:ad23fe03a082 771 * @arg UART_IT_PE: Parity Error interrupt
mbed_official 573:ad23fe03a082 772 * @retval The new state of __IT__ (TRUE or FALSE).
mbed_official 573:ad23fe03a082 773 */
mbed_official 573:ad23fe03a082 774 #define __HAL_UART_GET_IT(__HANDLE__, __IT__) ((__HANDLE__)->Instance->ISR & ((uint32_t)1 << ((__IT__)>> 0x08)))
mbed_official 573:ad23fe03a082 775
mbed_official 573:ad23fe03a082 776 /** @brief Checks whether the specified UART interrupt source is enabled.
mbed_official 573:ad23fe03a082 777 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 778 * @param __IT__: specifies the UART interrupt source to check.
mbed_official 573:ad23fe03a082 779 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 780 * @arg UART_IT_CTS: CTS change interrupt (not available for UART4 and UART5)
mbed_official 573:ad23fe03a082 781 * @arg UART_IT_LBD: LIN Break detection interrupt
mbed_official 573:ad23fe03a082 782 * @arg UART_IT_TXE: Transmit Data Register empty interrupt
mbed_official 573:ad23fe03a082 783 * @arg UART_IT_TC: Transmission complete interrupt
mbed_official 573:ad23fe03a082 784 * @arg UART_IT_RXNE: Receive Data register not empty interrupt
mbed_official 573:ad23fe03a082 785 * @arg UART_IT_IDLE: Idle line detection interrupt
mbed_official 573:ad23fe03a082 786 * @arg UART_IT_ORE: OverRun Error interrupt
mbed_official 573:ad23fe03a082 787 * @arg UART_IT_NE: Noise Error interrupt
mbed_official 573:ad23fe03a082 788 * @arg UART_IT_FE: Framing Error interrupt
mbed_official 573:ad23fe03a082 789 * @arg UART_IT_PE: Parity Error interrupt
mbed_official 573:ad23fe03a082 790 * @retval The new state of __IT__ (TRUE or FALSE).
mbed_official 573:ad23fe03a082 791 */
mbed_official 573:ad23fe03a082 792 #define __HAL_UART_GET_IT_SOURCE(__HANDLE__, __IT__) ((((((uint8_t)(__IT__)) >> 5U) == 1)? (__HANDLE__)->Instance->CR1:(((((uint8_t)(__IT__)) >> 5U) == 2)? \
mbed_official 573:ad23fe03a082 793 (__HANDLE__)->Instance->CR2 : (__HANDLE__)->Instance->CR3)) & ((uint32_t)1 << (((uint16_t)(__IT__)) & UART_IT_MASK)))
mbed_official 573:ad23fe03a082 794
mbed_official 573:ad23fe03a082 795 /** @brief Set a specific UART request flag.
mbed_official 573:ad23fe03a082 796 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 797 * @param __REQ__: specifies the request flag to set
mbed_official 573:ad23fe03a082 798 * This parameter can be one of the following values:
mbed_official 573:ad23fe03a082 799 * @arg UART_AUTOBAUD_REQUEST: Auto-Baud Rate Request
mbed_official 573:ad23fe03a082 800 * @arg UART_SENDBREAK_REQUEST: Send Break Request
mbed_official 573:ad23fe03a082 801 * @arg UART_MUTE_MODE_REQUEST: Mute Mode Request
mbed_official 573:ad23fe03a082 802 * @arg UART_RXDATA_FLUSH_REQUEST: Receive Data flush Request
mbed_official 573:ad23fe03a082 803 * @arg UART_TXDATA_FLUSH_REQUEST: Transmit data flush Request
mbed_official 573:ad23fe03a082 804 * @retval None
mbed_official 573:ad23fe03a082 805 */
mbed_official 573:ad23fe03a082 806 #define __HAL_UART_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint32_t)(__REQ__))
mbed_official 573:ad23fe03a082 807
mbed_official 573:ad23fe03a082 808 /** @brief Enables the UART one bit sample method
mbed_official 573:ad23fe03a082 809 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 810 * @retval None
mbed_official 573:ad23fe03a082 811 */
mbed_official 573:ad23fe03a082 812 #define __HAL_UART_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT)
mbed_official 573:ad23fe03a082 813
mbed_official 573:ad23fe03a082 814 /** @brief Disables the UART one bit sample method
mbed_official 573:ad23fe03a082 815 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 816 * @retval None
mbed_official 573:ad23fe03a082 817 */
mbed_official 573:ad23fe03a082 818 #define __HAL_UART_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= (uint32_t)~((uint32_t)USART_CR3_ONEBIT))
mbed_official 573:ad23fe03a082 819
mbed_official 573:ad23fe03a082 820 /** @brief Enable UART
mbed_official 573:ad23fe03a082 821 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 822 * @retval None
mbed_official 573:ad23fe03a082 823 */
mbed_official 573:ad23fe03a082 824 #define __HAL_UART_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE)
mbed_official 573:ad23fe03a082 825
mbed_official 573:ad23fe03a082 826 /** @brief Disable UART
mbed_official 573:ad23fe03a082 827 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 828 * @retval None
mbed_official 573:ad23fe03a082 829 */
mbed_official 573:ad23fe03a082 830 #define __HAL_UART_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE)
mbed_official 573:ad23fe03a082 831
mbed_official 573:ad23fe03a082 832 /** @brief Enable CTS flow control
mbed_official 573:ad23fe03a082 833 * This macro allows to enable CTS hardware flow control for a given UART instance,
mbed_official 573:ad23fe03a082 834 * without need to call HAL_UART_Init() function.
mbed_official 573:ad23fe03a082 835 * As involving direct access to UART registers, usage of this macro should be fully endorsed by user.
mbed_official 573:ad23fe03a082 836 * @note As macro is expected to be used for modifying CTS Hw flow control feature activation, without need
mbed_official 573:ad23fe03a082 837 * for USART instance Deinit/Init, following conditions for macro call should be fulfilled :
mbed_official 573:ad23fe03a082 838 * - UART instance should have already been initialised (through call of HAL_UART_Init() )
mbed_official 573:ad23fe03a082 839 * - macro could only be called when corresponding UART instance is disabled (i.e __HAL_UART_DISABLE(__HANDLE__))
mbed_official 573:ad23fe03a082 840 * and should be followed by an Enable macro (i.e __HAL_UART_ENABLE(__HANDLE__)).
mbed_official 573:ad23fe03a082 841 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 842 * The Handle Instance can be USART1, USART2 or LPUART.
mbed_official 573:ad23fe03a082 843 * @retval None
mbed_official 573:ad23fe03a082 844 */
mbed_official 573:ad23fe03a082 845 #define __HAL_UART_HWCONTROL_CTS_ENABLE(__HANDLE__) \
mbed_official 573:ad23fe03a082 846 do{ \
mbed_official 573:ad23fe03a082 847 SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \
mbed_official 573:ad23fe03a082 848 (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_CTSE; \
mbed_official 573:ad23fe03a082 849 } while(0)
mbed_official 573:ad23fe03a082 850
mbed_official 573:ad23fe03a082 851 /** @brief Disable CTS flow control
mbed_official 573:ad23fe03a082 852 * This macro allows to disable CTS hardware flow control for a given UART instance,
mbed_official 573:ad23fe03a082 853 * without need to call HAL_UART_Init() function.
mbed_official 573:ad23fe03a082 854 * As involving direct access to UART registers, usage of this macro should be fully endorsed by user.
mbed_official 573:ad23fe03a082 855 * @note As macro is expected to be used for modifying CTS Hw flow control feature activation, without need
mbed_official 573:ad23fe03a082 856 * for USART instance Deinit/Init, following conditions for macro call should be fulfilled :
mbed_official 573:ad23fe03a082 857 * - UART instance should have already been initialised (through call of HAL_UART_Init() )
mbed_official 573:ad23fe03a082 858 * - macro could only be called when corresponding UART instance is disabled (i.e __HAL_UART_DISABLE(__HANDLE__))
mbed_official 573:ad23fe03a082 859 * and should be followed by an Enable macro (i.e __HAL_UART_ENABLE(__HANDLE__)).
mbed_official 573:ad23fe03a082 860 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 861 * The Handle Instance can be USART1, USART2 or LPUART.
mbed_official 573:ad23fe03a082 862 * @retval None
mbed_official 573:ad23fe03a082 863 */
mbed_official 573:ad23fe03a082 864 #define __HAL_UART_HWCONTROL_CTS_DISABLE(__HANDLE__) \
mbed_official 573:ad23fe03a082 865 do{ \
mbed_official 573:ad23fe03a082 866 CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \
mbed_official 573:ad23fe03a082 867 (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_CTSE); \
mbed_official 573:ad23fe03a082 868 } while(0)
mbed_official 573:ad23fe03a082 869
mbed_official 573:ad23fe03a082 870 /** @brief Enable RTS flow control
mbed_official 573:ad23fe03a082 871 * This macro allows to enable RTS hardware flow control for a given UART instance,
mbed_official 573:ad23fe03a082 872 * without need to call HAL_UART_Init() function.
mbed_official 573:ad23fe03a082 873 * As involving direct access to UART registers, usage of this macro should be fully endorsed by user.
mbed_official 573:ad23fe03a082 874 * @note As macro is expected to be used for modifying RTS Hw flow control feature activation, without need
mbed_official 573:ad23fe03a082 875 * for USART instance Deinit/Init, following conditions for macro call should be fulfilled :
mbed_official 573:ad23fe03a082 876 * - UART instance should have already been initialised (through call of HAL_UART_Init() )
mbed_official 573:ad23fe03a082 877 * - macro could only be called when corresponding UART instance is disabled (i.e __HAL_UART_DISABLE(__HANDLE__))
mbed_official 573:ad23fe03a082 878 * and should be followed by an Enable macro (i.e __HAL_UART_ENABLE(__HANDLE__)).
mbed_official 573:ad23fe03a082 879 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 880 * The Handle Instance can be USART1, USART2 or LPUART.
mbed_official 573:ad23fe03a082 881 * @retval None
mbed_official 573:ad23fe03a082 882 */
mbed_official 573:ad23fe03a082 883 #define __HAL_UART_HWCONTROL_RTS_ENABLE(__HANDLE__) \
mbed_official 573:ad23fe03a082 884 do{ \
mbed_official 573:ad23fe03a082 885 SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE); \
mbed_official 573:ad23fe03a082 886 (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_RTSE; \
mbed_official 573:ad23fe03a082 887 } while(0)
mbed_official 573:ad23fe03a082 888
mbed_official 573:ad23fe03a082 889 /** @brief Disable RTS flow control
mbed_official 573:ad23fe03a082 890 * This macro allows to disable RTS hardware flow control for a given UART instance,
mbed_official 573:ad23fe03a082 891 * without need to call HAL_UART_Init() function.
mbed_official 573:ad23fe03a082 892 * As involving direct access to UART registers, usage of this macro should be fully endorsed by user.
mbed_official 573:ad23fe03a082 893 * @note As macro is expected to be used for modifying RTS Hw flow control feature activation, without need
mbed_official 573:ad23fe03a082 894 * for USART instance Deinit/Init, following conditions for macro call should be fulfilled :
mbed_official 573:ad23fe03a082 895 * - UART instance should have already been initialised (through call of HAL_UART_Init() )
mbed_official 573:ad23fe03a082 896 * - macro could only be called when corresponding UART instance is disabled (i.e __HAL_UART_DISABLE(__HANDLE__))
mbed_official 573:ad23fe03a082 897 * and should be followed by an Enable macro (i.e __HAL_UART_ENABLE(__HANDLE__)).
mbed_official 573:ad23fe03a082 898 * @param __HANDLE__: specifies the UART Handle.
mbed_official 573:ad23fe03a082 899 * The Handle Instance can be USART1, USART2 or LPUART.
mbed_official 573:ad23fe03a082 900 * @retval None
mbed_official 573:ad23fe03a082 901 */
mbed_official 573:ad23fe03a082 902 #define __HAL_UART_HWCONTROL_RTS_DISABLE(__HANDLE__) \
mbed_official 573:ad23fe03a082 903 do{ \
mbed_official 573:ad23fe03a082 904 CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE);\
mbed_official 573:ad23fe03a082 905 (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_RTSE); \
mbed_official 573:ad23fe03a082 906 } while(0)
mbed_official 573:ad23fe03a082 907
mbed_official 573:ad23fe03a082 908 /**
mbed_official 573:ad23fe03a082 909 * @}
mbed_official 573:ad23fe03a082 910 */
mbed_official 573:ad23fe03a082 911
mbed_official 573:ad23fe03a082 912 /* Private macros --------------------------------------------------------*/
mbed_official 573:ad23fe03a082 913 /** @defgroup UART_Private_Macros UART Private Macros
mbed_official 573:ad23fe03a082 914 * @{
mbed_official 573:ad23fe03a082 915 */
mbed_official 573:ad23fe03a082 916 /** @brief BRR division operation to set BRR register with LPUART
mbed_official 573:ad23fe03a082 917 * @param _PCLK_: LPUART clock
mbed_official 573:ad23fe03a082 918 * @param _BAUD_: Baud rate set by the user
mbed_official 573:ad23fe03a082 919 * @retval Division result
mbed_official 573:ad23fe03a082 920 */
mbed_official 573:ad23fe03a082 921 #define UART_DIV_LPUART(_PCLK_, _BAUD_) (((_PCLK_)*256)/((_BAUD_)))
mbed_official 573:ad23fe03a082 922
mbed_official 573:ad23fe03a082 923 /** @brief BRR division operation to set BRR register in 8-bit oversampling mode
mbed_official 573:ad23fe03a082 924 * @param _PCLK_: UART clock
mbed_official 573:ad23fe03a082 925 * @param _BAUD_: Baud rate set by the user
mbed_official 573:ad23fe03a082 926 * @retval Division result
mbed_official 573:ad23fe03a082 927 */
mbed_official 573:ad23fe03a082 928 #define UART_DIV_SAMPLING8(_PCLK_, _BAUD_) (((_PCLK_)*2)/((_BAUD_)))
mbed_official 573:ad23fe03a082 929
mbed_official 573:ad23fe03a082 930 /** @brief BRR division operation to set BRR register in 16-bit oversampling mode
mbed_official 573:ad23fe03a082 931 * @param _PCLK_: UART clock
mbed_official 573:ad23fe03a082 932 * @param _BAUD_: Baud rate set by the user
mbed_official 573:ad23fe03a082 933 * @retval Division result
mbed_official 573:ad23fe03a082 934 */
mbed_official 573:ad23fe03a082 935 #define UART_DIV_SAMPLING16(_PCLK_, _BAUD_) (((_PCLK_))/((_BAUD_)))
mbed_official 573:ad23fe03a082 936
mbed_official 573:ad23fe03a082 937 /** @brief Check UART Baud rate
mbed_official 573:ad23fe03a082 938 * @param BAUDRATE: Baudrate specified by the user
mbed_official 573:ad23fe03a082 939 * The maximum Baud Rate is derived from the maximum clock on F7 (i.e. 216 MHz)
mbed_official 573:ad23fe03a082 940 * divided by the smallest oversampling used on the USART (i.e. 8)
mbed_official 573:ad23fe03a082 941 * @retval Test result (TRUE or FALSE).
mbed_official 573:ad23fe03a082 942 */
mbed_official 573:ad23fe03a082 943 #define IS_UART_BAUDRATE(BAUDRATE) ((BAUDRATE) < 9000001)
mbed_official 573:ad23fe03a082 944
mbed_official 573:ad23fe03a082 945 /** @brief Check UART assertion time
mbed_official 573:ad23fe03a082 946 * @param TIME: 5-bit value assertion time
mbed_official 573:ad23fe03a082 947 * @retval Test result (TRUE or FALSE).
mbed_official 573:ad23fe03a082 948 */
mbed_official 573:ad23fe03a082 949 #define IS_UART_ASSERTIONTIME(TIME) ((TIME) <= 0x1F)
mbed_official 573:ad23fe03a082 950
mbed_official 573:ad23fe03a082 951 /** @brief Check UART deassertion time
mbed_official 573:ad23fe03a082 952 * @param TIME: 5-bit value deassertion time
mbed_official 573:ad23fe03a082 953 * @retval Test result (TRUE or FALSE).
mbed_official 573:ad23fe03a082 954 */
mbed_official 573:ad23fe03a082 955 #define IS_UART_DEASSERTIONTIME(TIME) ((TIME) <= 0x1F)
mbed_official 573:ad23fe03a082 956
mbed_official 573:ad23fe03a082 957 #define IS_UART_STOPBITS(STOPBITS) (((STOPBITS) == UART_STOPBITS_1) || \
mbed_official 573:ad23fe03a082 958 ((STOPBITS) == UART_STOPBITS_2))
mbed_official 573:ad23fe03a082 959
mbed_official 573:ad23fe03a082 960 #define IS_UART_PARITY(PARITY) (((PARITY) == UART_PARITY_NONE) || \
mbed_official 573:ad23fe03a082 961 ((PARITY) == UART_PARITY_EVEN) || \
mbed_official 573:ad23fe03a082 962 ((PARITY) == UART_PARITY_ODD))
mbed_official 573:ad23fe03a082 963
mbed_official 573:ad23fe03a082 964 #define IS_UART_HARDWARE_FLOW_CONTROL(CONTROL)\
mbed_official 573:ad23fe03a082 965 (((CONTROL) == UART_HWCONTROL_NONE) || \
mbed_official 573:ad23fe03a082 966 ((CONTROL) == UART_HWCONTROL_RTS) || \
mbed_official 573:ad23fe03a082 967 ((CONTROL) == UART_HWCONTROL_CTS) || \
mbed_official 573:ad23fe03a082 968 ((CONTROL) == UART_HWCONTROL_RTS_CTS))
mbed_official 573:ad23fe03a082 969
mbed_official 573:ad23fe03a082 970 #define IS_UART_MODE(MODE) ((((MODE) & (~((uint32_t)(UART_MODE_TX_RX)))) == (uint32_t)0x00) && ((MODE) != (uint32_t)0x00))
mbed_official 573:ad23fe03a082 971
mbed_official 573:ad23fe03a082 972 #define IS_UART_STATE(STATE) (((STATE) == UART_STATE_DISABLE) || \
mbed_official 573:ad23fe03a082 973 ((STATE) == UART_STATE_ENABLE))
mbed_official 573:ad23fe03a082 974
mbed_official 573:ad23fe03a082 975 #define IS_UART_OVERSAMPLING(SAMPLING) (((SAMPLING) == UART_OVERSAMPLING_16) || \
mbed_official 573:ad23fe03a082 976 ((SAMPLING) == UART_OVERSAMPLING_8))
mbed_official 573:ad23fe03a082 977
mbed_official 573:ad23fe03a082 978 #define IS_UART_ONE_BIT_SAMPLE(ONEBIT) (((ONEBIT) == UART_ONE_BIT_SAMPLE_DISABLE) || \
mbed_official 573:ad23fe03a082 979 ((ONEBIT) == UART_ONE_BIT_SAMPLE_ENABLE))
mbed_official 573:ad23fe03a082 980
mbed_official 573:ad23fe03a082 981 #define IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(MODE) (((MODE) == UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT) || \
mbed_official 573:ad23fe03a082 982 ((MODE) == UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE) || \
mbed_official 573:ad23fe03a082 983 ((MODE) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME) || \
mbed_official 573:ad23fe03a082 984 ((MODE) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME))
mbed_official 573:ad23fe03a082 985
mbed_official 573:ad23fe03a082 986 #define IS_UART_RECEIVER_TIMEOUT(TIMEOUT) (((TIMEOUT) == UART_RECEIVER_TIMEOUT_DISABLE) || \
mbed_official 573:ad23fe03a082 987 ((TIMEOUT) == UART_RECEIVER_TIMEOUT_ENABLE))
mbed_official 573:ad23fe03a082 988
mbed_official 573:ad23fe03a082 989 #define IS_UART_LIN(LIN) (((LIN) == UART_LIN_DISABLE) || \
mbed_official 573:ad23fe03a082 990 ((LIN) == UART_LIN_ENABLE))
mbed_official 573:ad23fe03a082 991
mbed_official 573:ad23fe03a082 992 #define IS_UART_WAKEUPMETHOD(WAKEUP) (((WAKEUP) == UART_WAKEUPMETHOD_IDLELINE) || \
mbed_official 573:ad23fe03a082 993 ((WAKEUP) == UART_WAKEUPMETHOD_ADDRESSMARK))
mbed_official 573:ad23fe03a082 994
mbed_official 573:ad23fe03a082 995 #define IS_UART_LIN_BREAK_DETECT_LENGTH(LENGTH) (((LENGTH) == UART_LINBREAKDETECTLENGTH_10B) || \
mbed_official 573:ad23fe03a082 996 ((LENGTH) == UART_LINBREAKDETECTLENGTH_11B))
mbed_official 573:ad23fe03a082 997
mbed_official 573:ad23fe03a082 998 #define IS_UART_DMA_TX(DMATX) (((DMATX) == UART_DMA_TX_DISABLE) || \
mbed_official 573:ad23fe03a082 999 ((DMATX) == UART_DMA_TX_ENABLE))
mbed_official 573:ad23fe03a082 1000
mbed_official 573:ad23fe03a082 1001 #define IS_UART_DMA_RX(DMARX) (((DMARX) == UART_DMA_RX_DISABLE) || \
mbed_official 573:ad23fe03a082 1002 ((DMARX) == UART_DMA_RX_ENABLE))
mbed_official 573:ad23fe03a082 1003
mbed_official 573:ad23fe03a082 1004 #define IS_UART_HALF_DUPLEX(HDSEL) (((HDSEL) == UART_HALF_DUPLEX_DISABLE) || \
mbed_official 573:ad23fe03a082 1005 ((HDSEL) == UART_HALF_DUPLEX_ENABLE))
mbed_official 573:ad23fe03a082 1006
mbed_official 573:ad23fe03a082 1007 #define IS_UART_REQUEST_PARAMETER(PARAM) (((PARAM) == UART_AUTOBAUD_REQUEST) || \
mbed_official 573:ad23fe03a082 1008 ((PARAM) == UART_SENDBREAK_REQUEST) || \
mbed_official 573:ad23fe03a082 1009 ((PARAM) == UART_MUTE_MODE_REQUEST) || \
mbed_official 573:ad23fe03a082 1010 ((PARAM) == UART_RXDATA_FLUSH_REQUEST) || \
mbed_official 573:ad23fe03a082 1011 ((PARAM) == UART_TXDATA_FLUSH_REQUEST))
mbed_official 573:ad23fe03a082 1012
mbed_official 573:ad23fe03a082 1013 #define IS_UART_ADVFEATURE_INIT(INIT) ((INIT) <= (UART_ADVFEATURE_NO_INIT | \
mbed_official 573:ad23fe03a082 1014 UART_ADVFEATURE_TXINVERT_INIT | \
mbed_official 573:ad23fe03a082 1015 UART_ADVFEATURE_RXINVERT_INIT | \
mbed_official 573:ad23fe03a082 1016 UART_ADVFEATURE_DATAINVERT_INIT | \
mbed_official 573:ad23fe03a082 1017 UART_ADVFEATURE_SWAP_INIT | \
mbed_official 573:ad23fe03a082 1018 UART_ADVFEATURE_RXOVERRUNDISABLE_INIT | \
mbed_official 573:ad23fe03a082 1019 UART_ADVFEATURE_DMADISABLEONERROR_INIT | \
mbed_official 573:ad23fe03a082 1020 UART_ADVFEATURE_AUTOBAUDRATE_INIT | \
mbed_official 573:ad23fe03a082 1021 UART_ADVFEATURE_MSBFIRST_INIT))
mbed_official 573:ad23fe03a082 1022
mbed_official 573:ad23fe03a082 1023 #define IS_UART_ADVFEATURE_TXINV(TXINV) (((TXINV) == UART_ADVFEATURE_TXINV_DISABLE) || \
mbed_official 573:ad23fe03a082 1024 ((TXINV) == UART_ADVFEATURE_TXINV_ENABLE))
mbed_official 573:ad23fe03a082 1025
mbed_official 573:ad23fe03a082 1026 #define IS_UART_ADVFEATURE_RXINV(RXINV) (((RXINV) == UART_ADVFEATURE_RXINV_DISABLE) || \
mbed_official 573:ad23fe03a082 1027 ((RXINV) == UART_ADVFEATURE_RXINV_ENABLE))
mbed_official 573:ad23fe03a082 1028
mbed_official 573:ad23fe03a082 1029 #define IS_UART_ADVFEATURE_DATAINV(DATAINV) (((DATAINV) == UART_ADVFEATURE_DATAINV_DISABLE) || \
mbed_official 573:ad23fe03a082 1030 ((DATAINV) == UART_ADVFEATURE_DATAINV_ENABLE))
mbed_official 573:ad23fe03a082 1031
mbed_official 573:ad23fe03a082 1032 #define IS_UART_ADVFEATURE_SWAP(SWAP) (((SWAP) == UART_ADVFEATURE_SWAP_DISABLE) || \
mbed_official 573:ad23fe03a082 1033 ((SWAP) == UART_ADVFEATURE_SWAP_ENABLE))
mbed_official 573:ad23fe03a082 1034
mbed_official 573:ad23fe03a082 1035 #define IS_UART_OVERRUN(OVERRUN) (((OVERRUN) == UART_ADVFEATURE_OVERRUN_ENABLE) || \
mbed_official 573:ad23fe03a082 1036 ((OVERRUN) == UART_ADVFEATURE_OVERRUN_DISABLE))
mbed_official 573:ad23fe03a082 1037
mbed_official 573:ad23fe03a082 1038 #define IS_UART_ADVFEATURE_AUTOBAUDRATE(AUTOBAUDRATE) (((AUTOBAUDRATE) == UART_ADVFEATURE_AUTOBAUDRATE_DISABLE) || \
mbed_official 573:ad23fe03a082 1039 ((AUTOBAUDRATE) == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE))
mbed_official 573:ad23fe03a082 1040
mbed_official 573:ad23fe03a082 1041 #define IS_UART_ADVFEATURE_DMAONRXERROR(DMA) (((DMA) == UART_ADVFEATURE_DMA_ENABLEONRXERROR) || \
mbed_official 573:ad23fe03a082 1042 ((DMA) == UART_ADVFEATURE_DMA_DISABLEONRXERROR))
mbed_official 573:ad23fe03a082 1043
mbed_official 573:ad23fe03a082 1044 #define IS_UART_ADVFEATURE_MSBFIRST(MSBFIRST) (((MSBFIRST) == UART_ADVFEATURE_MSBFIRST_DISABLE) || \
mbed_official 573:ad23fe03a082 1045 ((MSBFIRST) == UART_ADVFEATURE_MSBFIRST_ENABLE))
mbed_official 573:ad23fe03a082 1046
mbed_official 573:ad23fe03a082 1047 #define IS_UART_MUTE_MODE(MUTE) (((MUTE) == UART_ADVFEATURE_MUTEMODE_DISABLE) || \
mbed_official 573:ad23fe03a082 1048 ((MUTE) == UART_ADVFEATURE_MUTEMODE_ENABLE))
mbed_official 573:ad23fe03a082 1049
mbed_official 573:ad23fe03a082 1050 #define IS_UART_DE_POLARITY(POLARITY) (((POLARITY) == UART_DE_POLARITY_HIGH) || \
mbed_official 573:ad23fe03a082 1051 ((POLARITY) == UART_DE_POLARITY_LOW))
mbed_official 573:ad23fe03a082 1052
mbed_official 573:ad23fe03a082 1053 /**
mbed_official 573:ad23fe03a082 1054 * @}
mbed_official 573:ad23fe03a082 1055 */
mbed_official 573:ad23fe03a082 1056 /* Include UART HAL Extension module */
mbed_official 573:ad23fe03a082 1057 #include "stm32f7xx_hal_uart_ex.h"
mbed_official 573:ad23fe03a082 1058 /* Exported functions --------------------------------------------------------*/
mbed_official 573:ad23fe03a082 1059 /** @addtogroup UART_Exported_Functions UART Exported Functions
mbed_official 573:ad23fe03a082 1060 * @{
mbed_official 573:ad23fe03a082 1061 */
mbed_official 573:ad23fe03a082 1062
mbed_official 573:ad23fe03a082 1063 /** @addtogroup UART_Exported_Functions_Group1 Initialization and de-initialization functions
mbed_official 573:ad23fe03a082 1064 * @{
mbed_official 573:ad23fe03a082 1065 */
mbed_official 573:ad23fe03a082 1066
mbed_official 573:ad23fe03a082 1067 /* Initialization and de-initialization functions ****************************/
mbed_official 573:ad23fe03a082 1068 HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1069 HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1070 HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength);
mbed_official 573:ad23fe03a082 1071 HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t WakeUpMethod);
mbed_official 573:ad23fe03a082 1072 HAL_StatusTypeDef HAL_UART_DeInit (UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1073 void HAL_UART_MspInit(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1074 void HAL_UART_MspDeInit(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1075
mbed_official 573:ad23fe03a082 1076 /**
mbed_official 573:ad23fe03a082 1077 * @}
mbed_official 573:ad23fe03a082 1078 */
mbed_official 573:ad23fe03a082 1079
mbed_official 573:ad23fe03a082 1080 /** @addtogroup UART_Exported_Functions_Group2 IO operation functions
mbed_official 573:ad23fe03a082 1081 * @{
mbed_official 573:ad23fe03a082 1082 */
mbed_official 573:ad23fe03a082 1083
mbed_official 573:ad23fe03a082 1084 /* IO operation functions *****************************************************/
mbed_official 573:ad23fe03a082 1085 HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 573:ad23fe03a082 1086 HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 573:ad23fe03a082 1087 HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
mbed_official 573:ad23fe03a082 1088 HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
mbed_official 573:ad23fe03a082 1089 HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
mbed_official 573:ad23fe03a082 1090 HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
mbed_official 573:ad23fe03a082 1091 HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1092 HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1093 HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1094 void HAL_UART_IRQHandler(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1095 void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1096 void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1097 void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1098 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1099 void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1100
mbed_official 573:ad23fe03a082 1101 /**
mbed_official 573:ad23fe03a082 1102 * @}
mbed_official 573:ad23fe03a082 1103 */
mbed_official 573:ad23fe03a082 1104
mbed_official 573:ad23fe03a082 1105 /** @addtogroup UART_Exported_Functions_Group3 Peripheral Control functions
mbed_official 573:ad23fe03a082 1106 * @{
mbed_official 573:ad23fe03a082 1107 */
mbed_official 573:ad23fe03a082 1108
mbed_official 573:ad23fe03a082 1109 /* Peripheral Control functions ************************************************/
mbed_official 573:ad23fe03a082 1110 HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1111 HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1112 HAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1113 void HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1114 HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1115 HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1116
mbed_official 573:ad23fe03a082 1117 /**
mbed_official 573:ad23fe03a082 1118 * @}
mbed_official 573:ad23fe03a082 1119 */
mbed_official 573:ad23fe03a082 1120
mbed_official 573:ad23fe03a082 1121 /** @addtogroup UART_Exported_Functions_Group4 Peripheral State and Error functions
mbed_official 573:ad23fe03a082 1122 * @{
mbed_official 573:ad23fe03a082 1123 */
mbed_official 573:ad23fe03a082 1124
mbed_official 573:ad23fe03a082 1125 /* Peripheral State and Errors functions **************************************************/
mbed_official 573:ad23fe03a082 1126 HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1127 uint32_t HAL_UART_GetError(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1128
mbed_official 573:ad23fe03a082 1129 /**
mbed_official 573:ad23fe03a082 1130 * @}
mbed_official 573:ad23fe03a082 1131 */
mbed_official 573:ad23fe03a082 1132
mbed_official 573:ad23fe03a082 1133 /**
mbed_official 573:ad23fe03a082 1134 * @}
mbed_official 573:ad23fe03a082 1135 */
mbed_official 573:ad23fe03a082 1136
mbed_official 573:ad23fe03a082 1137 /* Private functions -----------------------------------------------------------*/
mbed_official 573:ad23fe03a082 1138 /** @addtogroup UART_Private_Functions UART Private Functions
mbed_official 573:ad23fe03a082 1139 * @{
mbed_official 573:ad23fe03a082 1140 */
mbed_official 573:ad23fe03a082 1141
mbed_official 573:ad23fe03a082 1142 HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1143 HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1144 HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Timeout);
mbed_official 573:ad23fe03a082 1145 void UART_AdvFeatureConfig(UART_HandleTypeDef *huart);
mbed_official 573:ad23fe03a082 1146
mbed_official 573:ad23fe03a082 1147 /**
mbed_official 573:ad23fe03a082 1148 * @}
mbed_official 573:ad23fe03a082 1149 */
mbed_official 573:ad23fe03a082 1150
mbed_official 573:ad23fe03a082 1151 /**
mbed_official 573:ad23fe03a082 1152 * @}
mbed_official 573:ad23fe03a082 1153 */
mbed_official 573:ad23fe03a082 1154
mbed_official 573:ad23fe03a082 1155 /**
mbed_official 573:ad23fe03a082 1156 * @}
mbed_official 573:ad23fe03a082 1157 */
mbed_official 573:ad23fe03a082 1158
mbed_official 573:ad23fe03a082 1159 #ifdef __cplusplus
mbed_official 573:ad23fe03a082 1160 }
mbed_official 573:ad23fe03a082 1161 #endif
mbed_official 573:ad23fe03a082 1162
mbed_official 573:ad23fe03a082 1163 #endif /* __STM32F7xx_HAL_UART_H */
mbed_official 573:ad23fe03a082 1164
mbed_official 573:ad23fe03a082 1165 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/