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:
Thu Jul 02 16:30:08 2015 +0100
Revision:
581:39197bcd20f2
Parent:
489:119543c9f674
Synchronized with git revision ae2d3cdffe70184eb8736d94f76c45c93f4b7724

Full URL: https://github.com/mbedmicro/mbed/commit/ae2d3cdffe70184eb8736d94f76c45c93f4b7724/

Make it possible to build the core mbed library with yotta

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 489:119543c9f674 1 /**
mbed_official 489:119543c9f674 2 ******************************************************************************
mbed_official 489:119543c9f674 3 * @file stm32f1xx_hal_uart.h
mbed_official 489:119543c9f674 4 * @author MCD Application Team
mbed_official 489:119543c9f674 5 * @version V1.0.0
mbed_official 489:119543c9f674 6 * @date 15-December-2014
mbed_official 489:119543c9f674 7 * @brief Header file of UART HAL module.
mbed_official 489:119543c9f674 8 ******************************************************************************
mbed_official 489:119543c9f674 9 * @attention
mbed_official 489:119543c9f674 10 *
mbed_official 489:119543c9f674 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 489:119543c9f674 12 *
mbed_official 489:119543c9f674 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 489:119543c9f674 14 * are permitted provided that the following conditions are met:
mbed_official 489:119543c9f674 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 489:119543c9f674 16 * this list of conditions and the following disclaimer.
mbed_official 489:119543c9f674 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 489:119543c9f674 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 489:119543c9f674 19 * and/or other materials provided with the distribution.
mbed_official 489:119543c9f674 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 489:119543c9f674 21 * may be used to endorse or promote products derived from this software
mbed_official 489:119543c9f674 22 * without specific prior written permission.
mbed_official 489:119543c9f674 23 *
mbed_official 489:119543c9f674 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 489:119543c9f674 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 489:119543c9f674 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 489:119543c9f674 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 489:119543c9f674 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 489:119543c9f674 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 489:119543c9f674 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 489:119543c9f674 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 489:119543c9f674 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 489:119543c9f674 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 489:119543c9f674 34 *
mbed_official 489:119543c9f674 35 ******************************************************************************
mbed_official 489:119543c9f674 36 */
mbed_official 489:119543c9f674 37
mbed_official 489:119543c9f674 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 489:119543c9f674 39 #ifndef __STM32F1xx_HAL_UART_H
mbed_official 489:119543c9f674 40 #define __STM32F1xx_HAL_UART_H
mbed_official 489:119543c9f674 41
mbed_official 489:119543c9f674 42 #ifdef __cplusplus
mbed_official 489:119543c9f674 43 extern "C" {
mbed_official 489:119543c9f674 44 #endif
mbed_official 489:119543c9f674 45
mbed_official 489:119543c9f674 46 /* Includes ------------------------------------------------------------------*/
mbed_official 489:119543c9f674 47 #include "stm32f1xx_hal_def.h"
mbed_official 489:119543c9f674 48
mbed_official 489:119543c9f674 49 /** @addtogroup STM32F1xx_HAL_Driver
mbed_official 489:119543c9f674 50 * @{
mbed_official 489:119543c9f674 51 */
mbed_official 489:119543c9f674 52
mbed_official 489:119543c9f674 53 /** @addtogroup UART
mbed_official 489:119543c9f674 54 * @{
mbed_official 489:119543c9f674 55 */
mbed_official 489:119543c9f674 56
mbed_official 489:119543c9f674 57 /* Exported types ------------------------------------------------------------*/
mbed_official 489:119543c9f674 58 /** @defgroup UART_Exported_Types UART Exported Types
mbed_official 489:119543c9f674 59 * @{
mbed_official 489:119543c9f674 60 */
mbed_official 489:119543c9f674 61
mbed_official 489:119543c9f674 62
mbed_official 489:119543c9f674 63 /**
mbed_official 489:119543c9f674 64 * @brief UART Init Structure definition
mbed_official 489:119543c9f674 65 */
mbed_official 489:119543c9f674 66 typedef struct
mbed_official 489:119543c9f674 67 {
mbed_official 489:119543c9f674 68 uint32_t BaudRate; /*!< This member configures the UART communication baud rate.
mbed_official 489:119543c9f674 69 The baud rate is computed using the following formula:
mbed_official 489:119543c9f674 70 - IntegerDivider = ((PCLKx) / (16 * (huart->Init.BaudRate)))
mbed_official 489:119543c9f674 71 - FractionalDivider = ((IntegerDivider - ((uint32_t) IntegerDivider)) * 16) + 0.5 */
mbed_official 489:119543c9f674 72
mbed_official 489:119543c9f674 73 uint32_t WordLength; /*!< Specifies the number of data bits transmitted or received in a frame.
mbed_official 489:119543c9f674 74 This parameter can be a value of @ref UART_Word_Length */
mbed_official 489:119543c9f674 75
mbed_official 489:119543c9f674 76 uint32_t StopBits; /*!< Specifies the number of stop bits transmitted.
mbed_official 489:119543c9f674 77 This parameter can be a value of @ref UART_Stop_Bits */
mbed_official 489:119543c9f674 78
mbed_official 489:119543c9f674 79 uint32_t Parity; /*!< Specifies the parity mode.
mbed_official 489:119543c9f674 80 This parameter can be a value of @ref UART_Parity
mbed_official 489:119543c9f674 81 @note When parity is enabled, the computed parity is inserted
mbed_official 489:119543c9f674 82 at the MSB position of the transmitted data (9th bit when
mbed_official 489:119543c9f674 83 the word length is set to 9 data bits; 8th bit when the
mbed_official 489:119543c9f674 84 word length is set to 8 data bits). */
mbed_official 489:119543c9f674 85
mbed_official 489:119543c9f674 86 uint32_t Mode; /*!< Specifies wether the Receive or Transmit mode is enabled or disabled.
mbed_official 489:119543c9f674 87 This parameter can be a value of @ref UART_Mode */
mbed_official 489:119543c9f674 88
mbed_official 489:119543c9f674 89 uint32_t HwFlowCtl; /*!< Specifies wether the hardware flow control mode is enabled
mbed_official 489:119543c9f674 90 or disabled.
mbed_official 489:119543c9f674 91 This parameter can be a value of @ref UART_Hardware_Flow_Control */
mbed_official 489:119543c9f674 92
mbed_official 489:119543c9f674 93 uint32_t OverSampling; /*!< Specifies whether the Over sampling 8 is enabled or disabled, to achieve higher speed (up to fPCLK/8).
mbed_official 489:119543c9f674 94 This parameter can be a value of @ref UART_Over_Sampling. This feature is not available
mbed_official 489:119543c9f674 95 on STM32F1xx family, so OverSampling parameter should always be set to 16. */
mbed_official 489:119543c9f674 96 }UART_InitTypeDef;
mbed_official 489:119543c9f674 97
mbed_official 489:119543c9f674 98 /**
mbed_official 489:119543c9f674 99 * @brief HAL UART State structures definition
mbed_official 489:119543c9f674 100 */
mbed_official 489:119543c9f674 101 typedef enum
mbed_official 489:119543c9f674 102 {
mbed_official 489:119543c9f674 103 HAL_UART_STATE_RESET = 0x00, /*!< Peripheral is not initialized */
mbed_official 489:119543c9f674 104 HAL_UART_STATE_READY = 0x01, /*!< Peripheral Initialized and ready for use */
mbed_official 489:119543c9f674 105 HAL_UART_STATE_BUSY = 0x02, /*!< an internal process is ongoing */
mbed_official 489:119543c9f674 106 HAL_UART_STATE_BUSY_TX = 0x12, /*!< Data Transmission process is ongoing */
mbed_official 489:119543c9f674 107 HAL_UART_STATE_BUSY_RX = 0x22, /*!< Data Reception process is ongoing */
mbed_official 489:119543c9f674 108 HAL_UART_STATE_BUSY_TX_RX = 0x32, /*!< Data Transmission and Reception process is ongoing */
mbed_official 489:119543c9f674 109 HAL_UART_STATE_TIMEOUT = 0x03, /*!< Timeout state */
mbed_official 489:119543c9f674 110 HAL_UART_STATE_ERROR = 0x04 /*!< Error */
mbed_official 489:119543c9f674 111 }HAL_UART_StateTypeDef;
mbed_official 489:119543c9f674 112
mbed_official 489:119543c9f674 113
mbed_official 489:119543c9f674 114 /**
mbed_official 489:119543c9f674 115 * @brief UART handle Structure definition
mbed_official 489:119543c9f674 116 */
mbed_official 489:119543c9f674 117 typedef struct
mbed_official 489:119543c9f674 118 {
mbed_official 489:119543c9f674 119 USART_TypeDef *Instance; /*!< UART registers base address */
mbed_official 489:119543c9f674 120
mbed_official 489:119543c9f674 121 UART_InitTypeDef Init; /*!< UART communication parameters */
mbed_official 489:119543c9f674 122
mbed_official 489:119543c9f674 123 uint8_t *pTxBuffPtr; /*!< Pointer to UART Tx transfer Buffer */
mbed_official 489:119543c9f674 124
mbed_official 489:119543c9f674 125 uint16_t TxXferSize; /*!< UART Tx Transfer size */
mbed_official 489:119543c9f674 126
mbed_official 489:119543c9f674 127 uint16_t TxXferCount; /*!< UART Tx Transfer Counter */
mbed_official 489:119543c9f674 128
mbed_official 489:119543c9f674 129 uint8_t *pRxBuffPtr; /*!< Pointer to UART Rx transfer Buffer */
mbed_official 489:119543c9f674 130
mbed_official 489:119543c9f674 131 uint16_t RxXferSize; /*!< UART Rx Transfer size */
mbed_official 489:119543c9f674 132
mbed_official 489:119543c9f674 133 uint16_t RxXferCount; /*!< UART Rx Transfer Counter */
mbed_official 489:119543c9f674 134
mbed_official 489:119543c9f674 135 DMA_HandleTypeDef *hdmatx; /*!< UART Tx DMA Handle parameters */
mbed_official 489:119543c9f674 136
mbed_official 489:119543c9f674 137 DMA_HandleTypeDef *hdmarx; /*!< UART Rx DMA Handle parameters */
mbed_official 489:119543c9f674 138
mbed_official 489:119543c9f674 139 HAL_LockTypeDef Lock; /*!< Locking object */
mbed_official 489:119543c9f674 140
mbed_official 489:119543c9f674 141 __IO HAL_UART_StateTypeDef State; /*!< UART communication state */
mbed_official 489:119543c9f674 142
mbed_official 489:119543c9f674 143 __IO uint32_t ErrorCode; /*!< UART Error code */
mbed_official 489:119543c9f674 144
mbed_official 489:119543c9f674 145 }UART_HandleTypeDef;
mbed_official 489:119543c9f674 146
mbed_official 489:119543c9f674 147 /**
mbed_official 489:119543c9f674 148 * @}
mbed_official 489:119543c9f674 149 */
mbed_official 489:119543c9f674 150
mbed_official 489:119543c9f674 151 /* Exported constants --------------------------------------------------------*/
mbed_official 489:119543c9f674 152 /** @defgroup UART_Exported_Constants UART Exported constants
mbed_official 489:119543c9f674 153 * @{
mbed_official 489:119543c9f674 154 */
mbed_official 489:119543c9f674 155
mbed_official 489:119543c9f674 156 /** @defgroup UART_Error_Codes UART Error Codes
mbed_official 489:119543c9f674 157 * @{
mbed_official 489:119543c9f674 158 */
mbed_official 489:119543c9f674 159
mbed_official 489:119543c9f674 160 #define HAL_UART_ERROR_NONE ((uint32_t)0x00) /*!< No error */
mbed_official 489:119543c9f674 161 #define HAL_UART_ERROR_PE ((uint32_t)0x01) /*!< Parity error */
mbed_official 489:119543c9f674 162 #define HAL_UART_ERROR_NE ((uint32_t)0x02) /*!< Noise error */
mbed_official 489:119543c9f674 163 #define HAL_UART_ERROR_FE ((uint32_t)0x04) /*!< frame error */
mbed_official 489:119543c9f674 164 #define HAL_UART_ERROR_ORE ((uint32_t)0x08) /*!< Overrun error */
mbed_official 489:119543c9f674 165 #define HAL_UART_ERROR_DMA ((uint32_t)0x10) /*!< DMA transfer error */
mbed_official 489:119543c9f674 166
mbed_official 489:119543c9f674 167 /**
mbed_official 489:119543c9f674 168 * @}
mbed_official 489:119543c9f674 169 */
mbed_official 489:119543c9f674 170
mbed_official 489:119543c9f674 171
mbed_official 489:119543c9f674 172
mbed_official 489:119543c9f674 173
mbed_official 489:119543c9f674 174 /** @defgroup UART_Word_Length UART Word Length
mbed_official 489:119543c9f674 175 * @{
mbed_official 489:119543c9f674 176 */
mbed_official 489:119543c9f674 177 #define UART_WORDLENGTH_8B ((uint32_t)0x00000000)
mbed_official 489:119543c9f674 178 #define UART_WORDLENGTH_9B ((uint32_t)USART_CR1_M)
mbed_official 489:119543c9f674 179 /**
mbed_official 489:119543c9f674 180 * @}
mbed_official 489:119543c9f674 181 */
mbed_official 489:119543c9f674 182
mbed_official 489:119543c9f674 183 /** @defgroup UART_Stop_Bits UART Number of Stop Bits
mbed_official 489:119543c9f674 184 * @{
mbed_official 489:119543c9f674 185 */
mbed_official 489:119543c9f674 186 #define UART_STOPBITS_1 ((uint32_t)0x00000000)
mbed_official 489:119543c9f674 187 #define UART_STOPBITS_2 ((uint32_t)USART_CR2_STOP_1)
mbed_official 489:119543c9f674 188 /**
mbed_official 489:119543c9f674 189 * @}
mbed_official 489:119543c9f674 190 */
mbed_official 489:119543c9f674 191
mbed_official 489:119543c9f674 192 /** @defgroup UART_Parity UART Parity
mbed_official 489:119543c9f674 193 * @{
mbed_official 489:119543c9f674 194 */
mbed_official 489:119543c9f674 195 #define UART_PARITY_NONE ((uint32_t)0x00000000)
mbed_official 489:119543c9f674 196 #define UART_PARITY_EVEN ((uint32_t)USART_CR1_PCE)
mbed_official 489:119543c9f674 197 #define UART_PARITY_ODD ((uint32_t)(USART_CR1_PCE | USART_CR1_PS))
mbed_official 489:119543c9f674 198 /**
mbed_official 489:119543c9f674 199 * @}
mbed_official 489:119543c9f674 200 */
mbed_official 489:119543c9f674 201
mbed_official 489:119543c9f674 202 /** @defgroup UART_Hardware_Flow_Control UART Hardware Flow Control
mbed_official 489:119543c9f674 203 * @{
mbed_official 489:119543c9f674 204 */
mbed_official 489:119543c9f674 205 #define UART_HWCONTROL_NONE ((uint32_t)0x00000000)
mbed_official 489:119543c9f674 206 #define UART_HWCONTROL_RTS ((uint32_t)USART_CR3_RTSE)
mbed_official 489:119543c9f674 207 #define UART_HWCONTROL_CTS ((uint32_t)USART_CR3_CTSE)
mbed_official 489:119543c9f674 208 #define UART_HWCONTROL_RTS_CTS ((uint32_t)(USART_CR3_RTSE | USART_CR3_CTSE))
mbed_official 489:119543c9f674 209 /**
mbed_official 489:119543c9f674 210 * @}
mbed_official 489:119543c9f674 211 */
mbed_official 489:119543c9f674 212
mbed_official 489:119543c9f674 213 /** @defgroup UART_Mode UART Transfer Mode
mbed_official 489:119543c9f674 214 * @{
mbed_official 489:119543c9f674 215 */
mbed_official 489:119543c9f674 216 #define UART_MODE_RX ((uint32_t)USART_CR1_RE)
mbed_official 489:119543c9f674 217 #define UART_MODE_TX ((uint32_t)USART_CR1_TE)
mbed_official 489:119543c9f674 218 #define UART_MODE_TX_RX ((uint32_t)(USART_CR1_TE |USART_CR1_RE))
mbed_official 489:119543c9f674 219
mbed_official 489:119543c9f674 220 /**
mbed_official 489:119543c9f674 221 * @}
mbed_official 489:119543c9f674 222 */
mbed_official 489:119543c9f674 223
mbed_official 489:119543c9f674 224 /** @defgroup UART_State UART State
mbed_official 489:119543c9f674 225 * @{
mbed_official 489:119543c9f674 226 */
mbed_official 489:119543c9f674 227 #define UART_STATE_DISABLE ((uint32_t)0x00000000)
mbed_official 489:119543c9f674 228 #define UART_STATE_ENABLE ((uint32_t)USART_CR1_UE)
mbed_official 489:119543c9f674 229 /**
mbed_official 489:119543c9f674 230 * @}
mbed_official 489:119543c9f674 231 */
mbed_official 489:119543c9f674 232
mbed_official 489:119543c9f674 233 /** @defgroup UART_Over_Sampling UART Over Sampling
mbed_official 489:119543c9f674 234 * @{
mbed_official 489:119543c9f674 235 */
mbed_official 489:119543c9f674 236 #define UART_OVERSAMPLING_16 ((uint32_t)0x00000000)
mbed_official 489:119543c9f674 237 /**
mbed_official 489:119543c9f674 238 * @}
mbed_official 489:119543c9f674 239 */
mbed_official 489:119543c9f674 240
mbed_official 489:119543c9f674 241 /** @defgroup UART_LIN_Break_Detection_Length UART LIN Break Detection Length
mbed_official 489:119543c9f674 242 * @{
mbed_official 489:119543c9f674 243 */
mbed_official 489:119543c9f674 244 #define UART_LINBREAKDETECTLENGTH_10B ((uint32_t)0x00000000)
mbed_official 489:119543c9f674 245 #define UART_LINBREAKDETECTLENGTH_11B ((uint32_t)USART_CR2_LBDL)
mbed_official 489:119543c9f674 246 /**
mbed_official 489:119543c9f674 247 * @}
mbed_official 489:119543c9f674 248 */
mbed_official 489:119543c9f674 249
mbed_official 489:119543c9f674 250 /** @defgroup UART_WakeUp_functions UART Wakeup Functions
mbed_official 489:119543c9f674 251 * @{
mbed_official 489:119543c9f674 252 */
mbed_official 489:119543c9f674 253 #define UART_WAKEUPMETHOD_IDLELINE ((uint32_t)0x00000000)
mbed_official 489:119543c9f674 254 #define UART_WAKEUPMETHOD_ADDRESSMARK ((uint32_t)USART_CR1_WAKE)
mbed_official 489:119543c9f674 255 /**
mbed_official 489:119543c9f674 256 * @}
mbed_official 489:119543c9f674 257 */
mbed_official 489:119543c9f674 258
mbed_official 489:119543c9f674 259 /** @defgroup UART_Flags UART FLags
mbed_official 489:119543c9f674 260 * Elements values convention: 0xXXXX
mbed_official 489:119543c9f674 261 * - 0xXXXX : Flag mask in the SR register
mbed_official 489:119543c9f674 262 * @{
mbed_official 489:119543c9f674 263 */
mbed_official 489:119543c9f674 264 #define UART_FLAG_CTS ((uint32_t)USART_SR_CTS)
mbed_official 489:119543c9f674 265 #define UART_FLAG_LBD ((uint32_t)USART_SR_LBD)
mbed_official 489:119543c9f674 266 #define UART_FLAG_TXE ((uint32_t)USART_SR_TXE)
mbed_official 489:119543c9f674 267 #define UART_FLAG_TC ((uint32_t)USART_SR_TC)
mbed_official 489:119543c9f674 268 #define UART_FLAG_RXNE ((uint32_t)USART_SR_RXNE)
mbed_official 489:119543c9f674 269 #define UART_FLAG_IDLE ((uint32_t)USART_SR_IDLE)
mbed_official 489:119543c9f674 270 #define UART_FLAG_ORE ((uint32_t)USART_SR_ORE)
mbed_official 489:119543c9f674 271 #define UART_FLAG_NE ((uint32_t)USART_SR_NE)
mbed_official 489:119543c9f674 272 #define UART_FLAG_FE ((uint32_t)USART_SR_FE)
mbed_official 489:119543c9f674 273 #define UART_FLAG_PE ((uint32_t)USART_SR_PE)
mbed_official 489:119543c9f674 274 /**
mbed_official 489:119543c9f674 275 * @}
mbed_official 489:119543c9f674 276 */
mbed_official 489:119543c9f674 277
mbed_official 489:119543c9f674 278 /** @defgroup UART_Interrupt_definition UART Interrupt Definitions
mbed_official 489:119543c9f674 279 * Elements values convention: 0xY000XXXX
mbed_official 489:119543c9f674 280 * - XXXX : Interrupt mask (16 bits) in the Y register
mbed_official 489:119543c9f674 281 * - Y : Interrupt source register (2bits)
mbed_official 489:119543c9f674 282 * - 0001: CR1 register
mbed_official 489:119543c9f674 283 * - 0010: CR2 register
mbed_official 489:119543c9f674 284 * - 0011: CR3 register
mbed_official 489:119543c9f674 285 *
mbed_official 489:119543c9f674 286 * @{
mbed_official 489:119543c9f674 287 */
mbed_official 489:119543c9f674 288
mbed_official 489:119543c9f674 289 #define UART_IT_PE ((uint32_t)(UART_CR1_REG_INDEX << 28 | USART_CR1_PEIE))
mbed_official 489:119543c9f674 290 #define UART_IT_TXE ((uint32_t)(UART_CR1_REG_INDEX << 28 | USART_CR1_TXEIE))
mbed_official 489:119543c9f674 291 #define UART_IT_TC ((uint32_t)(UART_CR1_REG_INDEX << 28 | USART_CR1_TCIE))
mbed_official 489:119543c9f674 292 #define UART_IT_RXNE ((uint32_t)(UART_CR1_REG_INDEX << 28 | USART_CR1_RXNEIE))
mbed_official 489:119543c9f674 293 #define UART_IT_IDLE ((uint32_t)(UART_CR1_REG_INDEX << 28 | USART_CR1_IDLEIE))
mbed_official 489:119543c9f674 294
mbed_official 489:119543c9f674 295 #define UART_IT_LBD ((uint32_t)(UART_CR2_REG_INDEX << 28 | USART_CR2_LBDIE))
mbed_official 489:119543c9f674 296
mbed_official 489:119543c9f674 297 #define UART_IT_CTS ((uint32_t)(UART_CR3_REG_INDEX << 28 | USART_CR3_CTSIE))
mbed_official 489:119543c9f674 298 #define UART_IT_ERR ((uint32_t)(UART_CR3_REG_INDEX << 28 | USART_CR3_EIE))
mbed_official 489:119543c9f674 299
mbed_official 489:119543c9f674 300 /**
mbed_official 489:119543c9f674 301 * @}
mbed_official 489:119543c9f674 302 */
mbed_official 489:119543c9f674 303
mbed_official 489:119543c9f674 304 /**
mbed_official 489:119543c9f674 305 * @}
mbed_official 489:119543c9f674 306 */
mbed_official 489:119543c9f674 307
mbed_official 489:119543c9f674 308
mbed_official 489:119543c9f674 309 /* Exported macro ------------------------------------------------------------*/
mbed_official 489:119543c9f674 310 /** @defgroup UART_Exported_Macros UART Exported Macros
mbed_official 489:119543c9f674 311 * @{
mbed_official 489:119543c9f674 312 */
mbed_official 489:119543c9f674 313
mbed_official 489:119543c9f674 314
mbed_official 489:119543c9f674 315 /** @brief Reset UART handle state
mbed_official 489:119543c9f674 316 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 317 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 318 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 319 * @retval None
mbed_official 489:119543c9f674 320 */
mbed_official 489:119543c9f674 321 #define __HAL_UART_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_UART_STATE_RESET)
mbed_official 489:119543c9f674 322
mbed_official 489:119543c9f674 323 /** @brief Flush the UART DR register
mbed_official 489:119543c9f674 324 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 325 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 326 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 327 */
mbed_official 489:119543c9f674 328 #define __HAL_UART_FLUSH_DRREGISTER(__HANDLE__) ((__HANDLE__)->Instance->DR)
mbed_official 489:119543c9f674 329
mbed_official 489:119543c9f674 330 /** @brief Check whether the specified UART flag is set or not.
mbed_official 489:119543c9f674 331 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 332 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 333 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 334 * @param __FLAG__: specifies the flag to check.
mbed_official 489:119543c9f674 335 * This parameter can be one of the following values:
mbed_official 489:119543c9f674 336 * @arg UART_FLAG_CTS: CTS Change flag (not available for UART4 and UART5)
mbed_official 489:119543c9f674 337 * @arg UART_FLAG_LBD: LIN Break detection flag
mbed_official 489:119543c9f674 338 * @arg UART_FLAG_TXE: Transmit data register empty flag
mbed_official 489:119543c9f674 339 * @arg UART_FLAG_TC: Transmission Complete flag
mbed_official 489:119543c9f674 340 * @arg UART_FLAG_RXNE: Receive data register not empty flag
mbed_official 489:119543c9f674 341 * @arg UART_FLAG_IDLE: Idle Line detection flag
mbed_official 489:119543c9f674 342 * @arg UART_FLAG_ORE: OverRun Error flag
mbed_official 489:119543c9f674 343 * @arg UART_FLAG_NE: Noise Error flag
mbed_official 489:119543c9f674 344 * @arg UART_FLAG_FE: Framing Error flag
mbed_official 489:119543c9f674 345 * @arg UART_FLAG_PE: Parity Error flag
mbed_official 489:119543c9f674 346 * @retval The new state of __FLAG__ (TRUE or FALSE).
mbed_official 489:119543c9f674 347 */
mbed_official 489:119543c9f674 348 #define __HAL_UART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))
mbed_official 489:119543c9f674 349
mbed_official 489:119543c9f674 350 /** @brief Clear the specified UART pending flag.
mbed_official 489:119543c9f674 351 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 352 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 353 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 354 * @param __FLAG__: specifies the flag to check.
mbed_official 489:119543c9f674 355 * This parameter can be any combination of the following values:
mbed_official 489:119543c9f674 356 * @arg UART_FLAG_CTS: CTS Change flag (not available for UART4 and UART5).
mbed_official 489:119543c9f674 357 * @arg UART_FLAG_LBD: LIN Break detection flag.
mbed_official 489:119543c9f674 358 * @arg UART_FLAG_TC: Transmission Complete flag.
mbed_official 489:119543c9f674 359 * @arg UART_FLAG_RXNE: Receive data register not empty flag.
mbed_official 489:119543c9f674 360 *
mbed_official 489:119543c9f674 361 * @note PE (Parity error), FE (Framing error), NE (Noise error), ORE (OverRun
mbed_official 489:119543c9f674 362 * error) and IDLE (Idle line detected) flags are cleared by software
mbed_official 489:119543c9f674 363 * sequence: a read operation to USART_SR register followed by a read
mbed_official 489:119543c9f674 364 * operation to USART_DR register.
mbed_official 489:119543c9f674 365 * @note RXNE flag can be also cleared by a read to the USART_DR register.
mbed_official 489:119543c9f674 366 * @note TC flag can be also cleared by software sequence: a read operation to
mbed_official 489:119543c9f674 367 * USART_SR register followed by a write operation to USART_DR register.
mbed_official 489:119543c9f674 368 * @note TXE flag is cleared only by a write to the USART_DR register.
mbed_official 489:119543c9f674 369 *
mbed_official 489:119543c9f674 370 * @retval None
mbed_official 489:119543c9f674 371 */
mbed_official 489:119543c9f674 372 #define __HAL_UART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR = ~(__FLAG__))
mbed_official 489:119543c9f674 373
mbed_official 489:119543c9f674 374 /** @brief Clear the UART PE pending flag.
mbed_official 489:119543c9f674 375 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 376 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 377 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 378 * @retval None
mbed_official 489:119543c9f674 379 */
mbed_official 489:119543c9f674 380 #define __HAL_UART_CLEAR_PEFLAG(__HANDLE__) \
mbed_official 489:119543c9f674 381 do{ \
mbed_official 489:119543c9f674 382 __IO uint32_t tmpreg; \
mbed_official 489:119543c9f674 383 tmpreg = (__HANDLE__)->Instance->SR; \
mbed_official 489:119543c9f674 384 tmpreg = (__HANDLE__)->Instance->DR; \
mbed_official 489:119543c9f674 385 UNUSED(tmpreg); \
mbed_official 489:119543c9f674 386 }while(0)
mbed_official 489:119543c9f674 387
mbed_official 489:119543c9f674 388
mbed_official 489:119543c9f674 389
mbed_official 489:119543c9f674 390 /** @brief Clear the UART FE pending flag.
mbed_official 489:119543c9f674 391 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 392 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 393 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 394 * @retval None
mbed_official 489:119543c9f674 395 */
mbed_official 489:119543c9f674 396 #define __HAL_UART_CLEAR_FEFLAG(__HANDLE__) __HAL_UART_CLEAR_PEFLAG(__HANDLE__)
mbed_official 489:119543c9f674 397
mbed_official 489:119543c9f674 398 /** @brief Clear the UART NE pending flag.
mbed_official 489:119543c9f674 399 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 400 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 401 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 402 * @retval None
mbed_official 489:119543c9f674 403 */
mbed_official 489:119543c9f674 404 #define __HAL_UART_CLEAR_NEFLAG(__HANDLE__) __HAL_UART_CLEAR_PEFLAG(__HANDLE__)
mbed_official 489:119543c9f674 405
mbed_official 489:119543c9f674 406 /** @brief Clear the UART ORE pending flag.
mbed_official 489:119543c9f674 407 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 408 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 409 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 410 * @retval None
mbed_official 489:119543c9f674 411 */
mbed_official 489:119543c9f674 412 #define __HAL_UART_CLEAR_OREFLAG(__HANDLE__) __HAL_UART_CLEAR_PEFLAG(__HANDLE__)
mbed_official 489:119543c9f674 413
mbed_official 489:119543c9f674 414 /** @brief Clear the UART IDLE pending flag.
mbed_official 489:119543c9f674 415 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 416 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 417 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 418 * @retval None
mbed_official 489:119543c9f674 419 */
mbed_official 489:119543c9f674 420 #define __HAL_UART_CLEAR_IDLEFLAG(__HANDLE__) __HAL_UART_CLEAR_PEFLAG(__HANDLE__)
mbed_official 489:119543c9f674 421
mbed_official 489:119543c9f674 422 /** @brief Enable the specified UART interrupt.
mbed_official 489:119543c9f674 423 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 424 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 425 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 426 * @param __INTERRUPT__: specifies the UART interrupt source to enable.
mbed_official 489:119543c9f674 427 * This parameter can be one of the following values:
mbed_official 489:119543c9f674 428 * @arg UART_IT_CTS: CTS change interrupt
mbed_official 489:119543c9f674 429 * @arg UART_IT_LBD: LIN Break detection interrupt
mbed_official 489:119543c9f674 430 * @arg UART_IT_TXE: Transmit Data Register empty interrupt
mbed_official 489:119543c9f674 431 * @arg UART_IT_TC: Transmission complete interrupt
mbed_official 489:119543c9f674 432 * @arg UART_IT_RXNE: Receive Data register not empty interrupt
mbed_official 489:119543c9f674 433 * @arg UART_IT_IDLE: Idle line detection interrupt
mbed_official 489:119543c9f674 434 * @arg UART_IT_PE: Parity Error interrupt
mbed_official 489:119543c9f674 435 * @arg UART_IT_ERR: Error interrupt(Frame error, noise error, overrun error)
mbed_official 489:119543c9f674 436 * @retval None
mbed_official 489:119543c9f674 437 */
mbed_official 489:119543c9f674 438 #define __HAL_UART_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((((__INTERRUPT__) >> 28) == UART_CR1_REG_INDEX)? ((__HANDLE__)->Instance->CR1 |= ((__INTERRUPT__) & UART_IT_MASK)): \
mbed_official 489:119543c9f674 439 (((__INTERRUPT__) >> 28) == UART_CR2_REG_INDEX)? ((__HANDLE__)->Instance->CR2 |= ((__INTERRUPT__) & UART_IT_MASK)): \
mbed_official 489:119543c9f674 440 ((__HANDLE__)->Instance->CR3 |= ((__INTERRUPT__) & UART_IT_MASK)))
mbed_official 489:119543c9f674 441
mbed_official 489:119543c9f674 442
mbed_official 489:119543c9f674 443 /** @brief Disable the specified UART interrupt.
mbed_official 489:119543c9f674 444 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 445 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 446 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 447 * @param __INTERRUPT__: specifies the UART interrupt source to disable.
mbed_official 489:119543c9f674 448 * This parameter can be one of the following values:
mbed_official 489:119543c9f674 449 * @arg UART_IT_CTS: CTS change interrupt
mbed_official 489:119543c9f674 450 * @arg UART_IT_LBD: LIN Break detection interrupt
mbed_official 489:119543c9f674 451 * @arg UART_IT_TXE: Transmit Data Register empty interrupt
mbed_official 489:119543c9f674 452 * @arg UART_IT_TC: Transmission complete interrupt
mbed_official 489:119543c9f674 453 * @arg UART_IT_RXNE: Receive Data register not empty interrupt
mbed_official 489:119543c9f674 454 * @arg UART_IT_IDLE: Idle line detection interrupt
mbed_official 489:119543c9f674 455 * @arg UART_IT_PE: Parity Error interrupt
mbed_official 489:119543c9f674 456 * @arg UART_IT_ERR: Error interrupt(Frame error, noise error, overrun error)
mbed_official 489:119543c9f674 457 * @retval None
mbed_official 489:119543c9f674 458 */
mbed_official 489:119543c9f674 459 #define __HAL_UART_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((((__INTERRUPT__) >> 28) == UART_CR1_REG_INDEX)? ((__HANDLE__)->Instance->CR1 &= ~((__INTERRUPT__) & UART_IT_MASK)): \
mbed_official 489:119543c9f674 460 (((__INTERRUPT__) >> 28) == UART_CR2_REG_INDEX)? ((__HANDLE__)->Instance->CR2 &= ~((__INTERRUPT__) & UART_IT_MASK)): \
mbed_official 489:119543c9f674 461 ((__HANDLE__)->Instance->CR3 &= ~ ((__INTERRUPT__) & UART_IT_MASK)))
mbed_official 489:119543c9f674 462
mbed_official 489:119543c9f674 463 /** @brief Check whether the specified UART interrupt has occurred or not.
mbed_official 489:119543c9f674 464 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 465 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 466 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 467 * @param __IT__: specifies the UART interrupt source to check.
mbed_official 489:119543c9f674 468 * This parameter can be one of the following values:
mbed_official 489:119543c9f674 469 * @arg UART_IT_CTS: CTS change interrupt (not available for UART4 and UART5)
mbed_official 489:119543c9f674 470 * @arg UART_IT_LBD: LIN Break detection interrupt
mbed_official 489:119543c9f674 471 * @arg UART_IT_TXE: Transmit Data Register empty interrupt
mbed_official 489:119543c9f674 472 * @arg UART_IT_TC: Transmission complete interrupt
mbed_official 489:119543c9f674 473 * @arg UART_IT_RXNE: Receive Data register not empty interrupt
mbed_official 489:119543c9f674 474 * @arg UART_IT_IDLE: Idle line detection interrupt
mbed_official 489:119543c9f674 475 * @arg UART_IT_ERR: Error interrupt
mbed_official 489:119543c9f674 476 * @retval The new state of __IT__ (TRUE or FALSE).
mbed_official 489:119543c9f674 477 */
mbed_official 489:119543c9f674 478 #define __HAL_UART_GET_IT_SOURCE(__HANDLE__, __IT__) (((((__IT__) >> 28) == UART_CR1_REG_INDEX)? (__HANDLE__)->Instance->CR1:(((((uint32_t)(__IT__)) >> 28) == UART_CR2_REG_INDEX)? \
mbed_official 489:119543c9f674 479 (__HANDLE__)->Instance->CR2 : (__HANDLE__)->Instance->CR3)) & (((uint32_t)(__IT__)) & UART_IT_MASK))
mbed_official 489:119543c9f674 480
mbed_official 489:119543c9f674 481 /** @brief Enable CTS flow control
mbed_official 489:119543c9f674 482 * This macro allows to enable CTS hardware flow control for a given UART instance,
mbed_official 489:119543c9f674 483 * without need to call HAL_UART_Init() function.
mbed_official 489:119543c9f674 484 * As involving direct access to UART registers, usage of this macro should be fully endorsed by user.
mbed_official 489:119543c9f674 485 * @note As macro is expected to be used for modifying CTS Hw flow control feature activation, without need
mbed_official 489:119543c9f674 486 * for USART instance Deinit/Init, following conditions for macro call should be fulfilled :
mbed_official 489:119543c9f674 487 * - UART instance should have already been initialised (through call of HAL_UART_Init() )
mbed_official 489:119543c9f674 488 * - macro could only be called when corresponding UART instance is disabled (i.e __HAL_UART_DISABLE(__HANDLE__))
mbed_official 489:119543c9f674 489 * and should be followed by an Enable macro (i.e __HAL_UART_ENABLE(__HANDLE__)).
mbed_official 489:119543c9f674 490 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 491 * This parameter can be any USARTx (supporting the HW Flow control feature).
mbed_official 489:119543c9f674 492 * It is used to select the USART peripheral (USART availability and x value depending on device).
mbed_official 489:119543c9f674 493 * @retval None
mbed_official 489:119543c9f674 494 */
mbed_official 489:119543c9f674 495 #define __HAL_UART_HWCONTROL_CTS_ENABLE(__HANDLE__) \
mbed_official 489:119543c9f674 496 do{ \
mbed_official 489:119543c9f674 497 SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \
mbed_official 489:119543c9f674 498 (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_CTSE; \
mbed_official 489:119543c9f674 499 } while(0)
mbed_official 489:119543c9f674 500
mbed_official 489:119543c9f674 501 /** @brief Disable CTS flow control
mbed_official 489:119543c9f674 502 * This macro allows to disable CTS hardware flow control for a given UART instance,
mbed_official 489:119543c9f674 503 * without need to call HAL_UART_Init() function.
mbed_official 489:119543c9f674 504 * As involving direct access to UART registers, usage of this macro should be fully endorsed by user.
mbed_official 489:119543c9f674 505 * @note As macro is expected to be used for modifying CTS Hw flow control feature activation, without need
mbed_official 489:119543c9f674 506 * for USART instance Deinit/Init, following conditions for macro call should be fulfilled :
mbed_official 489:119543c9f674 507 * - UART instance should have already been initialised (through call of HAL_UART_Init() )
mbed_official 489:119543c9f674 508 * - macro could only be called when corresponding UART instance is disabled (i.e __HAL_UART_DISABLE(__HANDLE__))
mbed_official 489:119543c9f674 509 * and should be followed by an Enable macro (i.e __HAL_UART_ENABLE(__HANDLE__)).
mbed_official 489:119543c9f674 510 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 511 * This parameter can be any USARTx (supporting the HW Flow control feature).
mbed_official 489:119543c9f674 512 * It is used to select the USART peripheral (USART availability and x value depending on device).
mbed_official 489:119543c9f674 513 * @retval None
mbed_official 489:119543c9f674 514 */
mbed_official 489:119543c9f674 515 #define __HAL_UART_HWCONTROL_CTS_DISABLE(__HANDLE__) \
mbed_official 489:119543c9f674 516 do{ \
mbed_official 489:119543c9f674 517 CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \
mbed_official 489:119543c9f674 518 (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_CTSE); \
mbed_official 489:119543c9f674 519 } while(0)
mbed_official 489:119543c9f674 520
mbed_official 489:119543c9f674 521 /** @brief Enable RTS flow control
mbed_official 489:119543c9f674 522 * This macro allows to enable RTS hardware flow control for a given UART instance,
mbed_official 489:119543c9f674 523 * without need to call HAL_UART_Init() function.
mbed_official 489:119543c9f674 524 * As involving direct access to UART registers, usage of this macro should be fully endorsed by user.
mbed_official 489:119543c9f674 525 * @note As macro is expected to be used for modifying RTS Hw flow control feature activation, without need
mbed_official 489:119543c9f674 526 * for USART instance Deinit/Init, following conditions for macro call should be fulfilled :
mbed_official 489:119543c9f674 527 * - UART instance should have already been initialised (through call of HAL_UART_Init() )
mbed_official 489:119543c9f674 528 * - macro could only be called when corresponding UART instance is disabled (i.e __HAL_UART_DISABLE(__HANDLE__))
mbed_official 489:119543c9f674 529 * and should be followed by an Enable macro (i.e __HAL_UART_ENABLE(__HANDLE__)).
mbed_official 489:119543c9f674 530 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 531 * This parameter can be any USARTx (supporting the HW Flow control feature).
mbed_official 489:119543c9f674 532 * It is used to select the USART peripheral (USART availability and x value depending on device).
mbed_official 489:119543c9f674 533 * @retval None
mbed_official 489:119543c9f674 534 */
mbed_official 489:119543c9f674 535 #define __HAL_UART_HWCONTROL_RTS_ENABLE(__HANDLE__) \
mbed_official 489:119543c9f674 536 do{ \
mbed_official 489:119543c9f674 537 SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE); \
mbed_official 489:119543c9f674 538 (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_RTSE; \
mbed_official 489:119543c9f674 539 } while(0)
mbed_official 489:119543c9f674 540
mbed_official 489:119543c9f674 541 /** @brief Disable RTS flow control
mbed_official 489:119543c9f674 542 * This macro allows to disable RTS hardware flow control for a given UART instance,
mbed_official 489:119543c9f674 543 * without need to call HAL_UART_Init() function.
mbed_official 489:119543c9f674 544 * As involving direct access to UART registers, usage of this macro should be fully endorsed by user.
mbed_official 489:119543c9f674 545 * @note As macro is expected to be used for modifying RTS Hw flow control feature activation, without need
mbed_official 489:119543c9f674 546 * for USART instance Deinit/Init, following conditions for macro call should be fulfilled :
mbed_official 489:119543c9f674 547 * - UART instance should have already been initialised (through call of HAL_UART_Init() )
mbed_official 489:119543c9f674 548 * - macro could only be called when corresponding UART instance is disabled (i.e __HAL_UART_DISABLE(__HANDLE__))
mbed_official 489:119543c9f674 549 * and should be followed by an Enable macro (i.e __HAL_UART_ENABLE(__HANDLE__)).
mbed_official 489:119543c9f674 550 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 551 * This parameter can be any USARTx (supporting the HW Flow control feature).
mbed_official 489:119543c9f674 552 * It is used to select the USART peripheral (USART availability and x value depending on device).
mbed_official 489:119543c9f674 553 * @retval None
mbed_official 489:119543c9f674 554 */
mbed_official 489:119543c9f674 555 #define __HAL_UART_HWCONTROL_RTS_DISABLE(__HANDLE__) \
mbed_official 489:119543c9f674 556 do{ \
mbed_official 489:119543c9f674 557 CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE);\
mbed_official 489:119543c9f674 558 (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_RTSE); \
mbed_official 489:119543c9f674 559 } while(0)
mbed_official 489:119543c9f674 560
mbed_official 489:119543c9f674 561
mbed_official 489:119543c9f674 562 /** @brief Enable UART
mbed_official 489:119543c9f674 563 * @param __HANDLE__: specifies the UART Handle.
mbed_official 489:119543c9f674 564 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 565 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 566 * @retval None
mbed_official 489:119543c9f674 567 */
mbed_official 489:119543c9f674 568 #define __HAL_UART_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE)
mbed_official 489:119543c9f674 569
mbed_official 489:119543c9f674 570 /** @brief Disable UART
mbed_official 489:119543c9f674 571 * UART Handle selects the USARTx or UARTy peripheral
mbed_official 489:119543c9f674 572 * (USART,UART availability and x,y values depending on device).
mbed_official 489:119543c9f674 573 * @retval None
mbed_official 489:119543c9f674 574 */
mbed_official 489:119543c9f674 575 #define __HAL_UART_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE)
mbed_official 489:119543c9f674 576
mbed_official 489:119543c9f674 577 /**
mbed_official 489:119543c9f674 578 * @}
mbed_official 489:119543c9f674 579 */
mbed_official 489:119543c9f674 580
mbed_official 489:119543c9f674 581
mbed_official 489:119543c9f674 582 /* Private macros --------------------------------------------------------*/
mbed_official 489:119543c9f674 583 /** @defgroup UART_Private_Macros UART Private Macros
mbed_official 489:119543c9f674 584 * @{
mbed_official 489:119543c9f674 585 */
mbed_official 489:119543c9f674 586
mbed_official 489:119543c9f674 587 #define UART_CR1_REG_INDEX 1
mbed_official 489:119543c9f674 588 #define UART_CR2_REG_INDEX 2
mbed_official 489:119543c9f674 589 #define UART_CR3_REG_INDEX 3
mbed_official 489:119543c9f674 590
mbed_official 489:119543c9f674 591 #define UART_DIV_SAMPLING16(_PCLK_, _BAUD_) (((_PCLK_)*25)/(4*(_BAUD_)))
mbed_official 489:119543c9f674 592 #define UART_DIVMANT_SAMPLING16(_PCLK_, _BAUD_) (UART_DIV_SAMPLING16((_PCLK_), (_BAUD_))/100)
mbed_official 489:119543c9f674 593 #define UART_DIVFRAQ_SAMPLING16(_PCLK_, _BAUD_) (((UART_DIV_SAMPLING16((_PCLK_), (_BAUD_)) - (UART_DIVMANT_SAMPLING16((_PCLK_), (_BAUD_)) * 100)) * 16 + 50) / 100)
mbed_official 489:119543c9f674 594 #define UART_BRR_SAMPLING16(_PCLK_, _BAUD_) ((UART_DIVMANT_SAMPLING16((_PCLK_), (_BAUD_)) << 4)|(UART_DIVFRAQ_SAMPLING16((_PCLK_), (_BAUD_)) & 0x0F))
mbed_official 489:119543c9f674 595
mbed_official 489:119543c9f674 596 #define IS_UART_WORD_LENGTH(LENGTH) (((LENGTH) == UART_WORDLENGTH_8B) || \
mbed_official 489:119543c9f674 597 ((LENGTH) == UART_WORDLENGTH_9B))
mbed_official 489:119543c9f674 598 #define IS_UART_LIN_WORD_LENGTH(LENGTH) ((LENGTH) == UART_WORDLENGTH_8B)
mbed_official 489:119543c9f674 599
mbed_official 489:119543c9f674 600 #define IS_UART_STOPBITS(STOPBITS) (((STOPBITS) == UART_STOPBITS_1) || \
mbed_official 489:119543c9f674 601 ((STOPBITS) == UART_STOPBITS_2))
mbed_official 489:119543c9f674 602
mbed_official 489:119543c9f674 603 #define IS_UART_PARITY(PARITY) (((PARITY) == UART_PARITY_NONE) || \
mbed_official 489:119543c9f674 604 ((PARITY) == UART_PARITY_EVEN) || \
mbed_official 489:119543c9f674 605 ((PARITY) == UART_PARITY_ODD))
mbed_official 489:119543c9f674 606
mbed_official 489:119543c9f674 607 #define IS_UART_HARDWARE_FLOW_CONTROL(CONTROL)\
mbed_official 489:119543c9f674 608 (((CONTROL) == UART_HWCONTROL_NONE) || \
mbed_official 489:119543c9f674 609 ((CONTROL) == UART_HWCONTROL_RTS) || \
mbed_official 489:119543c9f674 610 ((CONTROL) == UART_HWCONTROL_CTS) || \
mbed_official 489:119543c9f674 611 ((CONTROL) == UART_HWCONTROL_RTS_CTS))
mbed_official 489:119543c9f674 612
mbed_official 489:119543c9f674 613 #define IS_UART_MODE(MODE) ((((MODE) & (~((uint32_t)UART_MODE_TX_RX))) == 0x00) && \
mbed_official 489:119543c9f674 614 ((MODE) != (uint32_t)0x00000000))
mbed_official 489:119543c9f674 615
mbed_official 489:119543c9f674 616 #define IS_UART_STATE(STATE) (((STATE) == UART_STATE_DISABLE) || \
mbed_official 489:119543c9f674 617 ((STATE) == UART_STATE_ENABLE))
mbed_official 489:119543c9f674 618
mbed_official 489:119543c9f674 619 #define IS_UART_OVERSAMPLING(SAMPLING) ((SAMPLING) == UART_OVERSAMPLING_16)
mbed_official 489:119543c9f674 620 #define IS_UART_LIN_OVERSAMPLING(SAMPLING) ((SAMPLING) == UART_OVERSAMPLING_16)
mbed_official 489:119543c9f674 621
mbed_official 489:119543c9f674 622 #define IS_UART_LIN_BREAK_DETECT_LENGTH(LENGTH) (((LENGTH) == UART_LINBREAKDETECTLENGTH_10B) || \
mbed_official 489:119543c9f674 623 ((LENGTH) == UART_LINBREAKDETECTLENGTH_11B))
mbed_official 489:119543c9f674 624
mbed_official 489:119543c9f674 625 #define IS_UART_WAKEUPMETHOD(WAKEUP) (((WAKEUP) == UART_WAKEUPMETHOD_IDLELINE) || \
mbed_official 489:119543c9f674 626 ((WAKEUP) == UART_WAKEUPMETHOD_ADDRESSMARK))
mbed_official 489:119543c9f674 627
mbed_official 489:119543c9f674 628
mbed_official 489:119543c9f674 629 /** Check UART Baud rate
mbed_official 489:119543c9f674 630 * __BAUDRATE__: Baudrate specified by the user
mbed_official 489:119543c9f674 631 * The maximum Baud Rate is derived from the maximum clock on APB (i.e. 72 MHz)
mbed_official 489:119543c9f674 632 * divided by the smallest oversampling used on the USART (i.e. 16)
mbed_official 489:119543c9f674 633 * Retrun : TRUE or FALSE
mbed_official 489:119543c9f674 634 */
mbed_official 489:119543c9f674 635 #define IS_UART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 4500001)
mbed_official 489:119543c9f674 636
mbed_official 489:119543c9f674 637 /** Check UART Node Address
mbed_official 489:119543c9f674 638 * __ADDRESS__: UART Node address specified by the user
mbed_official 489:119543c9f674 639 * UART Node address is used in Multi processor communication for wakeup
mbed_official 489:119543c9f674 640 * with address mark detection.
mbed_official 489:119543c9f674 641 * This parameter must be a number between Min_Data = 0 and Max_Data = 15
mbed_official 489:119543c9f674 642 * Return : TRUE or FALSE
mbed_official 489:119543c9f674 643 */
mbed_official 489:119543c9f674 644 #define IS_UART_ADDRESS(__ADDRESS__) ((__ADDRESS__) <= 0xF)
mbed_official 489:119543c9f674 645
mbed_official 489:119543c9f674 646 /** UART interruptions flag mask
mbed_official 489:119543c9f674 647 */
mbed_official 489:119543c9f674 648 #define UART_IT_MASK ((uint32_t) USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE | USART_CR1_RXNEIE | \
mbed_official 489:119543c9f674 649 USART_CR1_IDLEIE | USART_CR2_LBDIE | USART_CR3_CTSIE | USART_CR3_EIE )
mbed_official 489:119543c9f674 650
mbed_official 489:119543c9f674 651 /**
mbed_official 489:119543c9f674 652 * @}
mbed_official 489:119543c9f674 653 */
mbed_official 489:119543c9f674 654
mbed_official 489:119543c9f674 655 /* Exported functions --------------------------------------------------------*/
mbed_official 489:119543c9f674 656
mbed_official 489:119543c9f674 657 /** @addtogroup UART_Exported_Functions UART Exported Functions
mbed_official 489:119543c9f674 658 * @{
mbed_official 489:119543c9f674 659 */
mbed_official 489:119543c9f674 660
mbed_official 489:119543c9f674 661 /** @addtogroup UART_Exported_Functions_Group1 Initialization and de-initialization functions
mbed_official 489:119543c9f674 662 * @{
mbed_official 489:119543c9f674 663 */
mbed_official 489:119543c9f674 664
mbed_official 489:119543c9f674 665 /* Initialization and de-initialization functions ****************************/
mbed_official 489:119543c9f674 666 HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 667 HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 668 HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength);
mbed_official 489:119543c9f674 669 HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t WakeUpMethod);
mbed_official 489:119543c9f674 670 HAL_StatusTypeDef HAL_UART_DeInit (UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 671 void HAL_UART_MspInit(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 672 void HAL_UART_MspDeInit(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 673
mbed_official 489:119543c9f674 674 /**
mbed_official 489:119543c9f674 675 * @}
mbed_official 489:119543c9f674 676 */
mbed_official 489:119543c9f674 677
mbed_official 489:119543c9f674 678 /** @addtogroup UART_Exported_Functions_Group2 IO operation functions
mbed_official 489:119543c9f674 679 * @{
mbed_official 489:119543c9f674 680 */
mbed_official 489:119543c9f674 681
mbed_official 489:119543c9f674 682 /* IO operation functions *****************************************************/
mbed_official 489:119543c9f674 683 HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 489:119543c9f674 684 HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
mbed_official 489:119543c9f674 685 HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
mbed_official 489:119543c9f674 686 HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
mbed_official 489:119543c9f674 687 HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
mbed_official 489:119543c9f674 688 HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
mbed_official 489:119543c9f674 689 HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 690 HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 691 HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 692 void HAL_UART_IRQHandler(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 693 void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 694 void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 695 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 696 void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 697 void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 698
mbed_official 489:119543c9f674 699 /**
mbed_official 489:119543c9f674 700 * @}
mbed_official 489:119543c9f674 701 */
mbed_official 489:119543c9f674 702
mbed_official 489:119543c9f674 703 /** @addtogroup UART_Exported_Functions_Group3 Peripheral Control functions
mbed_official 489:119543c9f674 704 * @{
mbed_official 489:119543c9f674 705 */
mbed_official 489:119543c9f674 706
mbed_official 489:119543c9f674 707 /* Peripheral Control functions ************************************************/
mbed_official 489:119543c9f674 708 HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 709 HAL_StatusTypeDef HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 710 HAL_StatusTypeDef HAL_MultiProcessor_ExitMuteMode(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 711 HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 712 HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 713
mbed_official 489:119543c9f674 714 /**
mbed_official 489:119543c9f674 715 * @}
mbed_official 489:119543c9f674 716 */
mbed_official 489:119543c9f674 717
mbed_official 489:119543c9f674 718 /** @addtogroup UART_Exported_Functions_Group4 Peripheral State and Errors functions
mbed_official 489:119543c9f674 719 * @{
mbed_official 489:119543c9f674 720 */
mbed_official 489:119543c9f674 721
mbed_official 489:119543c9f674 722 /* Peripheral State and Errors functions **************************************************/
mbed_official 489:119543c9f674 723 HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 724 uint32_t HAL_UART_GetError(UART_HandleTypeDef *huart);
mbed_official 489:119543c9f674 725
mbed_official 489:119543c9f674 726 /**
mbed_official 489:119543c9f674 727 * @}
mbed_official 489:119543c9f674 728 */
mbed_official 489:119543c9f674 729
mbed_official 489:119543c9f674 730 /**
mbed_official 489:119543c9f674 731 * @}
mbed_official 489:119543c9f674 732 */
mbed_official 489:119543c9f674 733
mbed_official 489:119543c9f674 734 /**
mbed_official 489:119543c9f674 735 * @}
mbed_official 489:119543c9f674 736 */
mbed_official 489:119543c9f674 737
mbed_official 489:119543c9f674 738 /**
mbed_official 489:119543c9f674 739 * @}
mbed_official 489:119543c9f674 740 */
mbed_official 489:119543c9f674 741
mbed_official 489:119543c9f674 742 #ifdef __cplusplus
mbed_official 489:119543c9f674 743 }
mbed_official 489:119543c9f674 744 #endif
mbed_official 489:119543c9f674 745
mbed_official 489:119543c9f674 746 #endif /* __STM32F1xx_HAL_UART_H */
mbed_official 489:119543c9f674 747
mbed_official 489:119543c9f674 748 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/