mbed official / mbed

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

Committer:
AnnaBridge
Date:
Wed Nov 08 17:18:06 2017 +0000
Revision:
156:ff21514d8981
Child:
167:84c0a372a020
Reverting back to release 154 of the mbed library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 156:ff21514d8981 1 /**
AnnaBridge 156:ff21514d8981 2 ******************************************************************************
AnnaBridge 156:ff21514d8981 3 * @file stm32l0xx_hal_usart.h
AnnaBridge 156:ff21514d8981 4 * @author MCD Application Team
AnnaBridge 156:ff21514d8981 5 * @version V1.7.0
AnnaBridge 156:ff21514d8981 6 * @date 31-May-2016
AnnaBridge 156:ff21514d8981 7 * @brief Header file of USART HAL module.
AnnaBridge 156:ff21514d8981 8 ******************************************************************************
AnnaBridge 156:ff21514d8981 9 * @attention
AnnaBridge 156:ff21514d8981 10 *
AnnaBridge 156:ff21514d8981 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
AnnaBridge 156:ff21514d8981 12 *
AnnaBridge 156:ff21514d8981 13 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 156:ff21514d8981 14 * are permitted provided that the following conditions are met:
AnnaBridge 156:ff21514d8981 15 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 156:ff21514d8981 16 * this list of conditions and the following disclaimer.
AnnaBridge 156:ff21514d8981 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 156:ff21514d8981 18 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 156:ff21514d8981 19 * and/or other materials provided with the distribution.
AnnaBridge 156:ff21514d8981 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 156:ff21514d8981 21 * may be used to endorse or promote products derived from this software
AnnaBridge 156:ff21514d8981 22 * without specific prior written permission.
AnnaBridge 156:ff21514d8981 23 *
AnnaBridge 156:ff21514d8981 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 156:ff21514d8981 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 156:ff21514d8981 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 156:ff21514d8981 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 156:ff21514d8981 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 156:ff21514d8981 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 156:ff21514d8981 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 156:ff21514d8981 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 156:ff21514d8981 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 156:ff21514d8981 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 156:ff21514d8981 34 *
AnnaBridge 156:ff21514d8981 35 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 156:ff21514d8981 36 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 156:ff21514d8981 37 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 156:ff21514d8981 38 * See the License for the specific language governing permissions and
AnnaBridge 156:ff21514d8981 39 * limitations under the License.
AnnaBridge 156:ff21514d8981 40 *
AnnaBridge 156:ff21514d8981 41 ******************************************************************************
AnnaBridge 156:ff21514d8981 42 */
AnnaBridge 156:ff21514d8981 43
AnnaBridge 156:ff21514d8981 44 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 156:ff21514d8981 45 #ifndef __STM32L0xx_HAL_USART_H
AnnaBridge 156:ff21514d8981 46 #define __STM32L0xx_HAL_USART_H
AnnaBridge 156:ff21514d8981 47
AnnaBridge 156:ff21514d8981 48 #ifdef __cplusplus
AnnaBridge 156:ff21514d8981 49 extern "C" {
AnnaBridge 156:ff21514d8981 50 #endif
AnnaBridge 156:ff21514d8981 51
AnnaBridge 156:ff21514d8981 52 /* Includes ------------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 53 #include "stm32l0xx_hal_def.h"
AnnaBridge 156:ff21514d8981 54
AnnaBridge 156:ff21514d8981 55 /** @addtogroup STM32L0xx_HAL_Driver
AnnaBridge 156:ff21514d8981 56 * @{
AnnaBridge 156:ff21514d8981 57 */
AnnaBridge 156:ff21514d8981 58
AnnaBridge 156:ff21514d8981 59 /** @defgroup USART USART (Synchronous UART)
AnnaBridge 156:ff21514d8981 60 * @{
AnnaBridge 156:ff21514d8981 61 */
AnnaBridge 156:ff21514d8981 62
AnnaBridge 156:ff21514d8981 63 /******************************************************************************/
AnnaBridge 156:ff21514d8981 64 /* Exported types ------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 65 /******************************************************************************/
AnnaBridge 156:ff21514d8981 66
AnnaBridge 156:ff21514d8981 67 /** @defgroup USART_Exported_Types USART Exported Types
AnnaBridge 156:ff21514d8981 68 * @{
AnnaBridge 156:ff21514d8981 69 */
AnnaBridge 156:ff21514d8981 70
AnnaBridge 156:ff21514d8981 71 /** @defgroup USART_Init_Configuration USART initialization configuration structure
AnnaBridge 156:ff21514d8981 72 * @{
AnnaBridge 156:ff21514d8981 73 */
AnnaBridge 156:ff21514d8981 74 /**
AnnaBridge 156:ff21514d8981 75 * @brief USART Init Structure definition
AnnaBridge 156:ff21514d8981 76 */
AnnaBridge 156:ff21514d8981 77 typedef struct
AnnaBridge 156:ff21514d8981 78 {
AnnaBridge 156:ff21514d8981 79 uint32_t BaudRate; /*!< This member configures the Usart communication baud rate.
AnnaBridge 156:ff21514d8981 80 The baud rate is computed using the following formula:
AnnaBridge 156:ff21514d8981 81 Baud Rate Register = ((PCLKx) / ((huart->Init.BaudRate))) */
AnnaBridge 156:ff21514d8981 82
AnnaBridge 156:ff21514d8981 83 uint32_t WordLength; /*!< Specifies the number of data bits transmitted or received in a frame.
AnnaBridge 156:ff21514d8981 84 This parameter can be a value of @ref USARTEx_Word_Length */
AnnaBridge 156:ff21514d8981 85
AnnaBridge 156:ff21514d8981 86 uint32_t StopBits; /*!< Specifies the number of stop bits transmitted.
AnnaBridge 156:ff21514d8981 87 This parameter can be a value of @ref USART_Stop_Bits */
AnnaBridge 156:ff21514d8981 88
AnnaBridge 156:ff21514d8981 89 uint32_t Parity; /*!< Specifies the parity mode.
AnnaBridge 156:ff21514d8981 90 This parameter can be a value of @ref USART_Parity
AnnaBridge 156:ff21514d8981 91 @note When parity is enabled, the computed parity is inserted
AnnaBridge 156:ff21514d8981 92 at the MSB position of the transmitted data (9th bit when
AnnaBridge 156:ff21514d8981 93 the word length is set to 9 data bits; 8th bit when the
AnnaBridge 156:ff21514d8981 94 word length is set to 8 data bits). */
AnnaBridge 156:ff21514d8981 95
AnnaBridge 156:ff21514d8981 96 uint32_t Mode; /*!< Specifies wether the Receive or Transmit mode is enabled or disabled.
AnnaBridge 156:ff21514d8981 97 This parameter can be a value of @ref USART_Mode */
AnnaBridge 156:ff21514d8981 98
AnnaBridge 156:ff21514d8981 99 uint32_t CLKPolarity; /*!< Specifies the steady state of the serial clock.
AnnaBridge 156:ff21514d8981 100 This parameter can be a value of @ref USART_Clock_Polarity */
AnnaBridge 156:ff21514d8981 101
AnnaBridge 156:ff21514d8981 102 uint32_t CLKPhase; /*!< Specifies the clock transition on which the bit capture is made.
AnnaBridge 156:ff21514d8981 103 This parameter can be a value of @ref USART_Clock_Phase */
AnnaBridge 156:ff21514d8981 104
AnnaBridge 156:ff21514d8981 105 uint32_t CLKLastBit; /*!< Specifies whether the clock pulse corresponding to the last transmitted
AnnaBridge 156:ff21514d8981 106 data bit (MSB) has to be output on the SCLK pin in synchronous mode.
AnnaBridge 156:ff21514d8981 107 This parameter can be a value of @ref USART_Last_Bit */
AnnaBridge 156:ff21514d8981 108 }USART_InitTypeDef;
AnnaBridge 156:ff21514d8981 109
AnnaBridge 156:ff21514d8981 110 /**
AnnaBridge 156:ff21514d8981 111 * @}
AnnaBridge 156:ff21514d8981 112 */
AnnaBridge 156:ff21514d8981 113
AnnaBridge 156:ff21514d8981 114 /** @defgroup USART_State_Definition USART state definition
AnnaBridge 156:ff21514d8981 115 * @{
AnnaBridge 156:ff21514d8981 116 */
AnnaBridge 156:ff21514d8981 117 /**
AnnaBridge 156:ff21514d8981 118 * @brief HAL State structures definition
AnnaBridge 156:ff21514d8981 119 */
AnnaBridge 156:ff21514d8981 120 typedef enum
AnnaBridge 156:ff21514d8981 121 {
AnnaBridge 156:ff21514d8981 122 HAL_USART_STATE_RESET = 0x00U, /*!< Peripheral Reset state */
AnnaBridge 156:ff21514d8981 123 HAL_USART_STATE_READY = 0x01U, /*!< Peripheral Initialized and ready for use */
AnnaBridge 156:ff21514d8981 124 HAL_USART_STATE_BUSY = 0x02U, /*!< an internal process is ongoing */
AnnaBridge 156:ff21514d8981 125 HAL_USART_STATE_BUSY_TX = 0x12U, /*!< Data Transmission process is ongoing */
AnnaBridge 156:ff21514d8981 126 HAL_USART_STATE_BUSY_RX = 0x22U, /*!< Data Reception process is ongoing */
AnnaBridge 156:ff21514d8981 127 HAL_USART_STATE_BUSY_TX_RX = 0x32U, /*!< Data Transmission Reception process is ongoing */
AnnaBridge 156:ff21514d8981 128 HAL_USART_STATE_TIMEOUT = 0x03U, /*!< Timeout state */
AnnaBridge 156:ff21514d8981 129 HAL_USART_STATE_ERROR = 0x04U /*!< Error */
AnnaBridge 156:ff21514d8981 130 }HAL_USART_StateTypeDef;
AnnaBridge 156:ff21514d8981 131 /**
AnnaBridge 156:ff21514d8981 132 * @}
AnnaBridge 156:ff21514d8981 133 */
AnnaBridge 156:ff21514d8981 134 /** @defgroup USART_Error_Definition USART error definition
AnnaBridge 156:ff21514d8981 135 * @{
AnnaBridge 156:ff21514d8981 136 */
AnnaBridge 156:ff21514d8981 137 /**
AnnaBridge 156:ff21514d8981 138 * @brief HAL USART Error Code definition
AnnaBridge 156:ff21514d8981 139 */
AnnaBridge 156:ff21514d8981 140
AnnaBridge 156:ff21514d8981 141 #define HAL_USART_ERROR_NONE ((uint32_t)0x00U) /*!< No error */
AnnaBridge 156:ff21514d8981 142 #define HAL_USART_ERROR_PE ((uint32_t)0x01U) /*!< Parity error */
AnnaBridge 156:ff21514d8981 143 #define HAL_USART_ERROR_NE ((uint32_t)0x02U) /*!< Noise error */
AnnaBridge 156:ff21514d8981 144 #define HAL_USART_ERROR_FE ((uint32_t)0x04U) /*!< frame error */
AnnaBridge 156:ff21514d8981 145 #define HAL_USART_ERROR_ORE ((uint32_t)0x08U) /*!< Overrun error */
AnnaBridge 156:ff21514d8981 146 #define HAL_USART_ERROR_DMA ((uint32_t)0x10U) /*!< DMA transfer error */
AnnaBridge 156:ff21514d8981 147
AnnaBridge 156:ff21514d8981 148 /**
AnnaBridge 156:ff21514d8981 149 * @}
AnnaBridge 156:ff21514d8981 150 */
AnnaBridge 156:ff21514d8981 151 /** @defgroup USART_Clock_SourceDefinition USART clock source definition
AnnaBridge 156:ff21514d8981 152 * @{
AnnaBridge 156:ff21514d8981 153 */
AnnaBridge 156:ff21514d8981 154 /**
AnnaBridge 156:ff21514d8981 155 * @brief USART clock sources definitions
AnnaBridge 156:ff21514d8981 156 */
AnnaBridge 156:ff21514d8981 157 typedef enum
AnnaBridge 156:ff21514d8981 158 {
AnnaBridge 156:ff21514d8981 159 USART_CLOCKSOURCE_PCLK1 = 0x00U, /*!< PCLK1 clock source */
AnnaBridge 156:ff21514d8981 160 USART_CLOCKSOURCE_PCLK2 = 0x01U, /*!< PCLK2 clock source */
AnnaBridge 156:ff21514d8981 161 USART_CLOCKSOURCE_HSI = 0x02U, /*!< HSI clock source */
AnnaBridge 156:ff21514d8981 162 USART_CLOCKSOURCE_SYSCLK = 0x04U, /*!< SYSCLK clock source */
AnnaBridge 156:ff21514d8981 163 USART_CLOCKSOURCE_LSE = 0x08U, /*!< LSE clock source */
AnnaBridge 156:ff21514d8981 164 USART_CLOCKSOURCE_UNDEFINED = 0x10U /*!< Undefined clock source */
AnnaBridge 156:ff21514d8981 165 }USART_ClockSourceTypeDef;
AnnaBridge 156:ff21514d8981 166 /**
AnnaBridge 156:ff21514d8981 167 * @}
AnnaBridge 156:ff21514d8981 168 */
AnnaBridge 156:ff21514d8981 169 /** @defgroup USART_handle_Definition Handle structure definition
AnnaBridge 156:ff21514d8981 170 * @{
AnnaBridge 156:ff21514d8981 171 */
AnnaBridge 156:ff21514d8981 172 /**
AnnaBridge 156:ff21514d8981 173 * @brief USART handle Structure definition
AnnaBridge 156:ff21514d8981 174 */
AnnaBridge 156:ff21514d8981 175
AnnaBridge 156:ff21514d8981 176 typedef struct
AnnaBridge 156:ff21514d8981 177 {
AnnaBridge 156:ff21514d8981 178 USART_TypeDef *Instance; /*!< USART registers base address */
AnnaBridge 156:ff21514d8981 179
AnnaBridge 156:ff21514d8981 180 USART_InitTypeDef Init; /*!< Usart communication parameters */
AnnaBridge 156:ff21514d8981 181
AnnaBridge 156:ff21514d8981 182 uint8_t *pTxBuffPtr; /*!< Pointer to Usart Tx transfer Buffer */
AnnaBridge 156:ff21514d8981 183
AnnaBridge 156:ff21514d8981 184 uint16_t TxXferSize; /*!< Usart Tx Transfer size */
AnnaBridge 156:ff21514d8981 185
AnnaBridge 156:ff21514d8981 186 __IO uint16_t TxXferCount; /*!< Usart Tx Transfer Counter */
AnnaBridge 156:ff21514d8981 187
AnnaBridge 156:ff21514d8981 188 uint8_t *pRxBuffPtr; /*!< Pointer to Usart Rx transfer Buffer */
AnnaBridge 156:ff21514d8981 189
AnnaBridge 156:ff21514d8981 190 uint16_t RxXferSize; /*!< Usart Rx Transfer size */
AnnaBridge 156:ff21514d8981 191
AnnaBridge 156:ff21514d8981 192 __IO uint16_t RxXferCount; /*!< Usart Rx Transfer Counter */
AnnaBridge 156:ff21514d8981 193
AnnaBridge 156:ff21514d8981 194 uint16_t Mask; /* USART Rx RDR register mask */
AnnaBridge 156:ff21514d8981 195
AnnaBridge 156:ff21514d8981 196 DMA_HandleTypeDef *hdmatx; /*!< Usart Tx DMA Handle parameters */
AnnaBridge 156:ff21514d8981 197
AnnaBridge 156:ff21514d8981 198 DMA_HandleTypeDef *hdmarx; /*!< Usart Rx DMA Handle parameters */
AnnaBridge 156:ff21514d8981 199
AnnaBridge 156:ff21514d8981 200 HAL_LockTypeDef Lock; /*!< Locking object */
AnnaBridge 156:ff21514d8981 201
AnnaBridge 156:ff21514d8981 202 __IO HAL_USART_StateTypeDef State; /*!< Usart communication state */
AnnaBridge 156:ff21514d8981 203
AnnaBridge 156:ff21514d8981 204 __IO uint32_t ErrorCode; /*!< USART Error code */
AnnaBridge 156:ff21514d8981 205
AnnaBridge 156:ff21514d8981 206 }USART_HandleTypeDef;
AnnaBridge 156:ff21514d8981 207 /**
AnnaBridge 156:ff21514d8981 208 * @}
AnnaBridge 156:ff21514d8981 209 */
AnnaBridge 156:ff21514d8981 210 /**
AnnaBridge 156:ff21514d8981 211 * @}
AnnaBridge 156:ff21514d8981 212 */
AnnaBridge 156:ff21514d8981 213
AnnaBridge 156:ff21514d8981 214 /* Exported constants --------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 215 /** @defgroup USART_Exported_Constants USART Exported Constants
AnnaBridge 156:ff21514d8981 216 * @{
AnnaBridge 156:ff21514d8981 217 */
AnnaBridge 156:ff21514d8981 218
AnnaBridge 156:ff21514d8981 219 /** @defgroup USART_Stop_Bits USART stop bit definition
AnnaBridge 156:ff21514d8981 220 * @{
AnnaBridge 156:ff21514d8981 221 */
AnnaBridge 156:ff21514d8981 222 #define USART_STOPBITS_1 ((uint32_t)0x0000U)
AnnaBridge 156:ff21514d8981 223 #define USART_STOPBITS_2 ((uint32_t)USART_CR2_STOP_1)
AnnaBridge 156:ff21514d8981 224 #define USART_STOPBITS_1_5 ((uint32_t)(USART_CR2_STOP_0 | USART_CR2_STOP_1))
AnnaBridge 156:ff21514d8981 225 #define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == USART_STOPBITS_1) || \
AnnaBridge 156:ff21514d8981 226 ((STOPBITS) == USART_STOPBITS_1_5) || \
AnnaBridge 156:ff21514d8981 227 ((STOPBITS) == USART_STOPBITS_2))
AnnaBridge 156:ff21514d8981 228 /**
AnnaBridge 156:ff21514d8981 229 * @}
AnnaBridge 156:ff21514d8981 230 */
AnnaBridge 156:ff21514d8981 231
AnnaBridge 156:ff21514d8981 232 /** @defgroup USART_Parity USART parity definition
AnnaBridge 156:ff21514d8981 233 * @{
AnnaBridge 156:ff21514d8981 234 */
AnnaBridge 156:ff21514d8981 235 #define USART_PARITY_NONE ((uint32_t)0x0000U)
AnnaBridge 156:ff21514d8981 236 #define USART_PARITY_EVEN ((uint32_t)USART_CR1_PCE)
AnnaBridge 156:ff21514d8981 237 #define USART_PARITY_ODD ((uint32_t)(USART_CR1_PCE | USART_CR1_PS))
AnnaBridge 156:ff21514d8981 238 #define IS_USART_PARITY(PARITY) (((PARITY) == USART_PARITY_NONE) || \
AnnaBridge 156:ff21514d8981 239 ((PARITY) == USART_PARITY_EVEN) || \
AnnaBridge 156:ff21514d8981 240 ((PARITY) == USART_PARITY_ODD))
AnnaBridge 156:ff21514d8981 241 /**
AnnaBridge 156:ff21514d8981 242 * @}
AnnaBridge 156:ff21514d8981 243 */
AnnaBridge 156:ff21514d8981 244
AnnaBridge 156:ff21514d8981 245 /** @defgroup USART_Mode USART mode definition
AnnaBridge 156:ff21514d8981 246 * @{
AnnaBridge 156:ff21514d8981 247 */
AnnaBridge 156:ff21514d8981 248 #define USART_MODE_RX ((uint32_t)USART_CR1_RE)
AnnaBridge 156:ff21514d8981 249 #define USART_MODE_TX ((uint32_t)USART_CR1_TE)
AnnaBridge 156:ff21514d8981 250 #define USART_MODE_TX_RX ((uint32_t)(USART_CR1_TE |USART_CR1_RE))
AnnaBridge 156:ff21514d8981 251 #define IS_USART_MODE(MODE) (((MODE) == USART_MODE_RX) || \
AnnaBridge 156:ff21514d8981 252 ((MODE) == USART_MODE_TX) || \
AnnaBridge 156:ff21514d8981 253 ((MODE) == USART_MODE_TX_RX))
AnnaBridge 156:ff21514d8981 254 /**
AnnaBridge 156:ff21514d8981 255 * @}
AnnaBridge 156:ff21514d8981 256 */
AnnaBridge 156:ff21514d8981 257
AnnaBridge 156:ff21514d8981 258 /** @defgroup USART_Clock USART clock activation definition
AnnaBridge 156:ff21514d8981 259 * @{
AnnaBridge 156:ff21514d8981 260 */
AnnaBridge 156:ff21514d8981 261 #define USART_CLOCK_DISABLE ((uint32_t)0x0000U)
AnnaBridge 156:ff21514d8981 262 #define USART_CLOCK_ENABLE ((uint32_t)USART_CR2_CLKEN)
AnnaBridge 156:ff21514d8981 263 #define IS_USART_CLOCK(CLOCK) (((CLOCK) == USART_CLOCK_DISABLE) || \
AnnaBridge 156:ff21514d8981 264 ((CLOCK) == USART_CLOCK_ENABLE))
AnnaBridge 156:ff21514d8981 265 /**
AnnaBridge 156:ff21514d8981 266 * @}
AnnaBridge 156:ff21514d8981 267 */
AnnaBridge 156:ff21514d8981 268
AnnaBridge 156:ff21514d8981 269 /** @defgroup USART_Clock_Polarity USART polarity level definition
AnnaBridge 156:ff21514d8981 270 * @{
AnnaBridge 156:ff21514d8981 271 */
AnnaBridge 156:ff21514d8981 272 #define USART_POLARITY_LOW ((uint32_t)0x0000U)
AnnaBridge 156:ff21514d8981 273 #define USART_POLARITY_HIGH ((uint32_t)USART_CR2_CPOL)
AnnaBridge 156:ff21514d8981 274 #define IS_USART_POLARITY(CPOL) (((CPOL) == USART_POLARITY_LOW) || ((CPOL) == USART_POLARITY_HIGH))
AnnaBridge 156:ff21514d8981 275 /**
AnnaBridge 156:ff21514d8981 276 * @}
AnnaBridge 156:ff21514d8981 277 */
AnnaBridge 156:ff21514d8981 278
AnnaBridge 156:ff21514d8981 279 /** @defgroup USART_Clock_Phase USART clock phase definition
AnnaBridge 156:ff21514d8981 280 * @{
AnnaBridge 156:ff21514d8981 281 */
AnnaBridge 156:ff21514d8981 282 #define USART_PHASE_1EDGE ((uint32_t)0x0000U)
AnnaBridge 156:ff21514d8981 283 #define USART_PHASE_2EDGE ((uint32_t)USART_CR2_CPHA)
AnnaBridge 156:ff21514d8981 284 #define IS_USART_PHASE(CPHA) (((CPHA) == USART_PHASE_1EDGE) || ((CPHA) == USART_PHASE_2EDGE))
AnnaBridge 156:ff21514d8981 285 /**
AnnaBridge 156:ff21514d8981 286 * @}
AnnaBridge 156:ff21514d8981 287 */
AnnaBridge 156:ff21514d8981 288
AnnaBridge 156:ff21514d8981 289 /** @defgroup USART_Last_Bit USART last bit activation definition
AnnaBridge 156:ff21514d8981 290 * @{
AnnaBridge 156:ff21514d8981 291 */
AnnaBridge 156:ff21514d8981 292 #define USART_LASTBIT_DISABLE ((uint32_t)0x0000U)
AnnaBridge 156:ff21514d8981 293 #define USART_LASTBIT_ENABLE ((uint32_t)USART_CR2_LBCL)
AnnaBridge 156:ff21514d8981 294 #define IS_USART_LASTBIT(LASTBIT) (((LASTBIT) == USART_LASTBIT_DISABLE) || \
AnnaBridge 156:ff21514d8981 295 ((LASTBIT) == USART_LASTBIT_ENABLE))
AnnaBridge 156:ff21514d8981 296 /**
AnnaBridge 156:ff21514d8981 297 * @}
AnnaBridge 156:ff21514d8981 298 */
AnnaBridge 156:ff21514d8981 299
AnnaBridge 156:ff21514d8981 300
AnnaBridge 156:ff21514d8981 301 /** @defgroup USART_Flags USART flag definitions
AnnaBridge 156:ff21514d8981 302 * Elements values convention: 0xXXXX
AnnaBridge 156:ff21514d8981 303 * - 0xXXXX : Flag mask in the ISR register
AnnaBridge 156:ff21514d8981 304 * @{
AnnaBridge 156:ff21514d8981 305 */
AnnaBridge 156:ff21514d8981 306 #define USART_FLAG_REACK USART_ISR_REACK /*!< Receive Enable Acknowledge Flag */
AnnaBridge 156:ff21514d8981 307 #define USART_FLAG_TEACK USART_ISR_TEACK /*!< Transmit Enable Acknowledge Flag */
AnnaBridge 156:ff21514d8981 308 #define USART_FLAG_BUSY USART_ISR_BUSY /*!< Busy Flag */
AnnaBridge 156:ff21514d8981 309 #define USART_FLAG_CTS USART_ISR_CTS /*!< CTS flag */
AnnaBridge 156:ff21514d8981 310 #define USART_FLAG_CTSIF USART_ISR_CTSIF /*!< CTS interrupt flag */
AnnaBridge 156:ff21514d8981 311 #define USART_FLAG_LBDF USART_ISR_LBDF /*!< LIN Break Detection Flag */
AnnaBridge 156:ff21514d8981 312 #define USART_FLAG_TXE USART_ISR_TXE /*!< Transmit Data Register Empty */
AnnaBridge 156:ff21514d8981 313 #define USART_FLAG_TC USART_ISR_TC /*!< Transmission Complete */
AnnaBridge 156:ff21514d8981 314 #define USART_FLAG_RXNE USART_ISR_RXNE /*!< Read Data Register Not Empty */
AnnaBridge 156:ff21514d8981 315 #define USART_FLAG_IDLE USART_ISR_IDLE /*!< IDLE line detected */
AnnaBridge 156:ff21514d8981 316 #define USART_FLAG_ORE USART_ISR_ORE /*!< OverRun Error */
AnnaBridge 156:ff21514d8981 317 #define USART_FLAG_NE USART_ISR_NE /*!< Noise detected Flag */
AnnaBridge 156:ff21514d8981 318 #define USART_FLAG_FE USART_ISR_FE /*!< Framing Error */
AnnaBridge 156:ff21514d8981 319 #define USART_FLAG_PE USART_ISR_PE /*!< Parity Error */
AnnaBridge 156:ff21514d8981 320 /**
AnnaBridge 156:ff21514d8981 321 * @}
AnnaBridge 156:ff21514d8981 322 */
AnnaBridge 156:ff21514d8981 323
AnnaBridge 156:ff21514d8981 324 /** @defgroup USART_Interrupt_definition USART interrupt definition
AnnaBridge 156:ff21514d8981 325 * Elements values convention: 0000ZZZZ0XXYYYYYb
AnnaBridge 156:ff21514d8981 326 * - YYYYY : Interrupt source position in the XX register (5bits)
AnnaBridge 156:ff21514d8981 327 * - XX : Interrupt source register (2bits)
AnnaBridge 156:ff21514d8981 328 * - 01: CR1 register
AnnaBridge 156:ff21514d8981 329 * - 10: CR2 register
AnnaBridge 156:ff21514d8981 330 * - 11: CR3 register
AnnaBridge 156:ff21514d8981 331 * - ZZZZ : Flag position in the ISR register(4bits)
AnnaBridge 156:ff21514d8981 332 * @{
AnnaBridge 156:ff21514d8981 333 */
AnnaBridge 156:ff21514d8981 334
AnnaBridge 156:ff21514d8981 335 #define USART_IT_PE ((uint16_t)0x0028U)
AnnaBridge 156:ff21514d8981 336 #define USART_IT_TXE ((uint16_t)0x0727U)
AnnaBridge 156:ff21514d8981 337 #define USART_IT_TC ((uint16_t)0x0626U)
AnnaBridge 156:ff21514d8981 338 #define USART_IT_RXNE ((uint16_t)0x0525U)
AnnaBridge 156:ff21514d8981 339 #define USART_IT_IDLE ((uint16_t)0x0424U)
AnnaBridge 156:ff21514d8981 340 #define USART_IT_ERR ((uint16_t)0x0060U)
AnnaBridge 156:ff21514d8981 341
AnnaBridge 156:ff21514d8981 342 #define USART_IT_ORE ((uint16_t)0x0300U)
AnnaBridge 156:ff21514d8981 343 #define USART_IT_NE ((uint16_t)0x0200U)
AnnaBridge 156:ff21514d8981 344 #define USART_IT_FE ((uint16_t)0x0100U)
AnnaBridge 156:ff21514d8981 345 /**
AnnaBridge 156:ff21514d8981 346 * @}
AnnaBridge 156:ff21514d8981 347 */
AnnaBridge 156:ff21514d8981 348
AnnaBridge 156:ff21514d8981 349 /** @defgroup USART_IT_CLEAR_Flags USART interrupt clear flags definition
AnnaBridge 156:ff21514d8981 350 * @{
AnnaBridge 156:ff21514d8981 351 */
AnnaBridge 156:ff21514d8981 352 #define USART_CLEAR_PEF USART_ICR_PECF /*!< Parity Error Clear Flag */
AnnaBridge 156:ff21514d8981 353 #define USART_CLEAR_FEF USART_ICR_FECF /*!< Framing Error Clear Flag */
AnnaBridge 156:ff21514d8981 354 #define USART_CLEAR_NEF USART_ICR_NCF /*!< Noise detected Clear Flag */
AnnaBridge 156:ff21514d8981 355 #define USART_CLEAR_OREF USART_ICR_ORECF /*!< OverRun Error Clear Flag */
AnnaBridge 156:ff21514d8981 356 #define USART_CLEAR_IDLEF USART_ICR_IDLECF /*!< IDLE line detected Clear Flag */
AnnaBridge 156:ff21514d8981 357 #define USART_CLEAR_TCF USART_ICR_TCCF /*!< Transmission Complete Clear Flag */
AnnaBridge 156:ff21514d8981 358 #define USART_CLEAR_CTSF USART_ICR_CTSCF /*!< CTS Interrupt Clear Flag */
AnnaBridge 156:ff21514d8981 359 /**
AnnaBridge 156:ff21514d8981 360 * @}
AnnaBridge 156:ff21514d8981 361 */
AnnaBridge 156:ff21514d8981 362
AnnaBridge 156:ff21514d8981 363 /** @defgroup USART_Request_Parameters USART request parameter definition
AnnaBridge 156:ff21514d8981 364 * @{
AnnaBridge 156:ff21514d8981 365 */
AnnaBridge 156:ff21514d8981 366 #define USART_RXDATA_FLUSH_REQUEST ((uint32_t)USART_RQR_RXFRQ) /*!< Receive Data flush Request */
AnnaBridge 156:ff21514d8981 367 #define USART_TXDATA_FLUSH_REQUEST ((uint32_t)USART_RQR_TXFRQ) /*!< Transmit data flush Request */
AnnaBridge 156:ff21514d8981 368 #define IS_USART_REQUEST_PARAMETER(PARAM) (((PARAM) == USART_RXDATA_FLUSH_REQUEST) || \
AnnaBridge 156:ff21514d8981 369 ((PARAM) == USART_TXDATA_FLUSH_REQUEST))
AnnaBridge 156:ff21514d8981 370 /**
AnnaBridge 156:ff21514d8981 371 * @}
AnnaBridge 156:ff21514d8981 372 */
AnnaBridge 156:ff21514d8981 373
AnnaBridge 156:ff21514d8981 374 /** @defgroup USART_Interruption_Mask USART interruption mask definition
AnnaBridge 156:ff21514d8981 375 * @{
AnnaBridge 156:ff21514d8981 376 */
AnnaBridge 156:ff21514d8981 377 #define USART_IT_MASK ((uint16_t)0x001FU)
AnnaBridge 156:ff21514d8981 378 /**
AnnaBridge 156:ff21514d8981 379 * @}
AnnaBridge 156:ff21514d8981 380 */
AnnaBridge 156:ff21514d8981 381
AnnaBridge 156:ff21514d8981 382 /**
AnnaBridge 156:ff21514d8981 383 * @}
AnnaBridge 156:ff21514d8981 384 */
AnnaBridge 156:ff21514d8981 385
AnnaBridge 156:ff21514d8981 386
AnnaBridge 156:ff21514d8981 387 /* Exported macro ------------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 388
AnnaBridge 156:ff21514d8981 389 /** @defgroup USART_Exported_Macros USART Exported Macros
AnnaBridge 156:ff21514d8981 390 * @{
AnnaBridge 156:ff21514d8981 391 */
AnnaBridge 156:ff21514d8981 392 /** @brief Reset USART handle state
AnnaBridge 156:ff21514d8981 393 * @param __HANDLE__: specifies the USART Handle.
AnnaBridge 156:ff21514d8981 394 * The Handle Instance which can be USART1 or USART2.
AnnaBridge 156:ff21514d8981 395 * @retval None
AnnaBridge 156:ff21514d8981 396 */
AnnaBridge 156:ff21514d8981 397 #define __HAL_USART_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_USART_STATE_RESET)
AnnaBridge 156:ff21514d8981 398
AnnaBridge 156:ff21514d8981 399 /** @brief Flush the USART Data registers
AnnaBridge 156:ff21514d8981 400 * @param __HANDLE__: specifies the USART Handle.
AnnaBridge 156:ff21514d8981 401 */
AnnaBridge 156:ff21514d8981 402 #define __HAL_USART_FLUSH_DRREGISTER(__HANDLE__) \
AnnaBridge 156:ff21514d8981 403 do{ \
AnnaBridge 156:ff21514d8981 404 SET_BIT((__HANDLE__)->Instance->RQR, USART_RXDATA_FLUSH_REQUEST); \
AnnaBridge 156:ff21514d8981 405 SET_BIT((__HANDLE__)->Instance->RQR, USART_TXDATA_FLUSH_REQUEST); \
AnnaBridge 156:ff21514d8981 406 } while(0)
AnnaBridge 156:ff21514d8981 407
AnnaBridge 156:ff21514d8981 408
AnnaBridge 156:ff21514d8981 409
AnnaBridge 156:ff21514d8981 410 /** @brief Checks whether the specified USART flag is set or not.
AnnaBridge 156:ff21514d8981 411 * @param __HANDLE__: specifies the USART Handle which can be USART1 or USART2.
AnnaBridge 156:ff21514d8981 412 * @param __FLAG__: specifies the flag to check.
AnnaBridge 156:ff21514d8981 413 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 414 * @arg USART_FLAG_REACK: Receive enable ackowledge flag
AnnaBridge 156:ff21514d8981 415 * @arg USART_FLAG_TEACK: Transmit enable ackowledge flag
AnnaBridge 156:ff21514d8981 416 * @arg USART_FLAG_BUSY: Busy flag
AnnaBridge 156:ff21514d8981 417 * @arg USART_FLAG_CTS: CTS Change flag
AnnaBridge 156:ff21514d8981 418 * @arg USART_FLAG_TXE: Transmit data register empty flag
AnnaBridge 156:ff21514d8981 419 * @arg USART_FLAG_TC: Transmission Complete flag
AnnaBridge 156:ff21514d8981 420 * @arg USART_FLAG_RXNE: Receive data register not empty flag
AnnaBridge 156:ff21514d8981 421 * @arg USART_FLAG_IDLE: Idle Line detection flag
AnnaBridge 156:ff21514d8981 422 * @arg USART_FLAG_ORE: OverRun Error flag
AnnaBridge 156:ff21514d8981 423 * @arg USART_FLAG_NE: Noise Error flag
AnnaBridge 156:ff21514d8981 424 * @arg USART_FLAG_FE: Framing Error flag
AnnaBridge 156:ff21514d8981 425 * @arg USART_FLAG_PE: Parity Error flag
AnnaBridge 156:ff21514d8981 426 * @retval The new state of __FLAG__ (TRUE or FALSE).
AnnaBridge 156:ff21514d8981 427 */
AnnaBridge 156:ff21514d8981 428 #define __HAL_USART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__))
AnnaBridge 156:ff21514d8981 429
AnnaBridge 156:ff21514d8981 430 /** @brief Clears the specified USART pending flag.
AnnaBridge 156:ff21514d8981 431 * @param __HANDLE__: specifies the USART Handle.
AnnaBridge 156:ff21514d8981 432 * @param __FLAG__: specifies the flag to check.
AnnaBridge 156:ff21514d8981 433 * This parameter can be any combination of the following values:
AnnaBridge 156:ff21514d8981 434 * @arg USART_CLEAR_PEF
AnnaBridge 156:ff21514d8981 435 * @arg USART_CLEAR_FEF
AnnaBridge 156:ff21514d8981 436 * @arg USART_CLEAR_NEF
AnnaBridge 156:ff21514d8981 437 * @arg USART_CLEAR_OREF
AnnaBridge 156:ff21514d8981 438 * @arg USART_CLEAR_IDLEF
AnnaBridge 156:ff21514d8981 439 * @arg USART_CLEAR_TCF
AnnaBridge 156:ff21514d8981 440 * @arg USART_CLEAR_LBDF
AnnaBridge 156:ff21514d8981 441 * @arg USART_CLEAR_CTSF
AnnaBridge 156:ff21514d8981 442 * @arg USART_CLEAR_RTOF
AnnaBridge 156:ff21514d8981 443 * @arg USART_CLEAR_EOBF
AnnaBridge 156:ff21514d8981 444 * @arg USART_CLEAR_CMF
AnnaBridge 156:ff21514d8981 445 * @arg USART_CLEAR_WUF
AnnaBridge 156:ff21514d8981 446 * @retval None
AnnaBridge 156:ff21514d8981 447 */
AnnaBridge 156:ff21514d8981 448 #define __HAL_USART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
AnnaBridge 156:ff21514d8981 449
AnnaBridge 156:ff21514d8981 450 /** @brief Clear the USART PE pending flag.
AnnaBridge 156:ff21514d8981 451 * @param __HANDLE__: specifies the UART Handle.
AnnaBridge 156:ff21514d8981 452 * @retval None
AnnaBridge 156:ff21514d8981 453 */
AnnaBridge 156:ff21514d8981 454 #define __HAL_USART_CLEAR_PEFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG(__HANDLE__,USART_CLEAR_PEF)
AnnaBridge 156:ff21514d8981 455
AnnaBridge 156:ff21514d8981 456 /** @brief Clear the USART FE pending flag.
AnnaBridge 156:ff21514d8981 457 * @param __HANDLE__: specifies the UART Handle.
AnnaBridge 156:ff21514d8981 458 * @retval None
AnnaBridge 156:ff21514d8981 459 */
AnnaBridge 156:ff21514d8981 460 #define __HAL_USART_CLEAR_FEFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG(__HANDLE__,USART_CLEAR_FEF)
AnnaBridge 156:ff21514d8981 461
AnnaBridge 156:ff21514d8981 462 /** @brief Clear the UART NE pending flag.
AnnaBridge 156:ff21514d8981 463 * @param __HANDLE__: specifies the UART Handle.
AnnaBridge 156:ff21514d8981 464 * @retval None
AnnaBridge 156:ff21514d8981 465 */
AnnaBridge 156:ff21514d8981 466 #define __HAL_USART_CLEAR_NEFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG(__HANDLE__,USART_CLEAR_NEF)
AnnaBridge 156:ff21514d8981 467
AnnaBridge 156:ff21514d8981 468 /** @brief Clear the UART ORE pending flag.
AnnaBridge 156:ff21514d8981 469 * @param __HANDLE__: specifies the UART Handle.
AnnaBridge 156:ff21514d8981 470 * @retval None
AnnaBridge 156:ff21514d8981 471 */
AnnaBridge 156:ff21514d8981 472 #define __HAL_USART_CLEAR_OREFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG(__HANDLE__,USART_CLEAR_OREF)
AnnaBridge 156:ff21514d8981 473
AnnaBridge 156:ff21514d8981 474 /** @brief Clear the UART IDLE pending flag.
AnnaBridge 156:ff21514d8981 475 * @param __HANDLE__: specifies the UART Handle.
AnnaBridge 156:ff21514d8981 476 * @retval None
AnnaBridge 156:ff21514d8981 477 */
AnnaBridge 156:ff21514d8981 478 #define __HAL_USART_CLEAR_IDLEFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG(__HANDLE__,USART_CLEAR_IDLEF)
AnnaBridge 156:ff21514d8981 479
AnnaBridge 156:ff21514d8981 480 /** @brief Enables the specified USART interrupt.
AnnaBridge 156:ff21514d8981 481 * @param __HANDLE__: specifies the USART Handle which can be USART1 or USART2.
AnnaBridge 156:ff21514d8981 482 * @param __INTERRUPT__: specifies the USART interrupt source to enable.
AnnaBridge 156:ff21514d8981 483 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 484 * @arg USART_IT_TXE: Transmit Data Register empty interrupt
AnnaBridge 156:ff21514d8981 485 * @arg USART_IT_TC: Transmission complete interrupt
AnnaBridge 156:ff21514d8981 486 * @arg USART_IT_RXNE: Receive Data register not empty interrupt
AnnaBridge 156:ff21514d8981 487 * @arg USART_IT_IDLE: Idle line detection interrupt
AnnaBridge 156:ff21514d8981 488 * @arg USART_IT_PE: Parity Error interrupt
AnnaBridge 156:ff21514d8981 489 * @arg USART_IT_ERR: Error interrupt(Frame error, noise error, overrun error)
AnnaBridge 156:ff21514d8981 490 * @retval None
AnnaBridge 156:ff21514d8981 491 */
AnnaBridge 156:ff21514d8981 492 #define __HAL_USART_ENABLE_IT(__HANDLE__, __INTERRUPT__)(((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U)? ((__HANDLE__)->Instance->CR1 |= (1U << ((__INTERRUPT__) & USART_IT_MASK))): \
AnnaBridge 156:ff21514d8981 493 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U)? ((__HANDLE__)->Instance->CR2 |= (1U << ((__INTERRUPT__) & USART_IT_MASK))): \
AnnaBridge 156:ff21514d8981 494 ((__HANDLE__)->Instance->CR3 |= (1U << ((__INTERRUPT__) & USART_IT_MASK))))
AnnaBridge 156:ff21514d8981 495
AnnaBridge 156:ff21514d8981 496 /** @brief Disables the specified USART interrupt.
AnnaBridge 156:ff21514d8981 497 * @param __HANDLE__: specifies the USART Handle which can be USART1 or USART2.
AnnaBridge 156:ff21514d8981 498 * @param __INTERRUPT__: specifies the USART interrupt source to disable.
AnnaBridge 156:ff21514d8981 499 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 500 * @arg USART_IT_TXE: Transmit Data Register empty interrupt
AnnaBridge 156:ff21514d8981 501 * @arg USART_IT_TC: Transmission complete interrupt
AnnaBridge 156:ff21514d8981 502 * @arg USART_IT_RXNE: Receive Data register not empty interrupt
AnnaBridge 156:ff21514d8981 503 * @arg USART_IT_IDLE: Idle line detection interrupt
AnnaBridge 156:ff21514d8981 504 * @arg USART_IT_PE: Parity Error interrupt
AnnaBridge 156:ff21514d8981 505 * @arg USART_IT_ERR: Error interrupt(Frame error, noise error, overrun error)
AnnaBridge 156:ff21514d8981 506 * @retval None
AnnaBridge 156:ff21514d8981 507 */
AnnaBridge 156:ff21514d8981 508 #define __HAL_USART_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U)? ((__HANDLE__)->Instance->CR1 &= ~ ((uint32_t)1U << ((__INTERRUPT__) & USART_IT_MASK))): \
AnnaBridge 156:ff21514d8981 509 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U)? ((__HANDLE__)->Instance->CR2 &= ~ ((uint32_t)1U << ((__INTERRUPT__) & USART_IT_MASK))): \
AnnaBridge 156:ff21514d8981 510 ((__HANDLE__)->Instance->CR3 &= ~ ((uint32_t)1U << ((__INTERRUPT__) & USART_IT_MASK))))
AnnaBridge 156:ff21514d8981 511
AnnaBridge 156:ff21514d8981 512 /** @brief Checks whether the specified USART interrupt has occurred or not.
AnnaBridge 156:ff21514d8981 513 * @param __HANDLE__: specifies the USART Handle which can be USART1 or USART2.
AnnaBridge 156:ff21514d8981 514 * @param __IT__: specifies the USART interrupt source to check.
AnnaBridge 156:ff21514d8981 515 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 516 * @arg USART_IT_TXE: Transmit Data Register empty interrupt
AnnaBridge 156:ff21514d8981 517 * @arg USART_IT_TC: Transmission complete interrupt
AnnaBridge 156:ff21514d8981 518 * @arg USART_IT_RXNE: Receive Data register not empty interrupt
AnnaBridge 156:ff21514d8981 519 * @arg USART_IT_IDLE: Idle line detection interrupt
AnnaBridge 156:ff21514d8981 520 * @arg USART_IT_ORE: OverRun Error interrupt
AnnaBridge 156:ff21514d8981 521 * @arg USART_IT_NE: Noise Error interrupt
AnnaBridge 156:ff21514d8981 522 * @arg USART_IT_FE: Framing Error interrupt
AnnaBridge 156:ff21514d8981 523 * @arg USART_IT_PE: Parity Error interrupt
AnnaBridge 156:ff21514d8981 524 * @retval The new state of __IT__ (TRUE or FALSE).
AnnaBridge 156:ff21514d8981 525 */
AnnaBridge 156:ff21514d8981 526 #define __HAL_USART_GET_IT(__HANDLE__, __IT__) ((__HANDLE__)->Instance->ISR & ((uint32_t)1U << ((__IT__)>> 0x08U)))
AnnaBridge 156:ff21514d8981 527
AnnaBridge 156:ff21514d8981 528 /** @brief Checks whether the specified USART interrupt source is enabled.
AnnaBridge 156:ff21514d8981 529 * @param __HANDLE__: specifies the USART Handle which can be USART1 or USART2.
AnnaBridge 156:ff21514d8981 530 * @param __IT__: specifies the USART interrupt source to check.
AnnaBridge 156:ff21514d8981 531 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 532 * @arg USART_IT_TXE: Transmit Data Register empty interrupt
AnnaBridge 156:ff21514d8981 533 * @arg USART_IT_TC: Transmission complete interrupt
AnnaBridge 156:ff21514d8981 534 * @arg USART_IT_RXNE: Receive Data register not empty interrupt
AnnaBridge 156:ff21514d8981 535 * @arg USART_IT_IDLE: Idle line detection interrupt
AnnaBridge 156:ff21514d8981 536 * @arg USART_IT_ORE: OverRun Error interrupt
AnnaBridge 156:ff21514d8981 537 * @arg USART_IT_NE: Noise Error interrupt
AnnaBridge 156:ff21514d8981 538 * @arg USART_IT_FE: Framing Error interrupt
AnnaBridge 156:ff21514d8981 539 * @arg USART_IT_PE: Parity Error interrupt
AnnaBridge 156:ff21514d8981 540 * @retval The new state of __IT__ (TRUE or FALSE).
AnnaBridge 156:ff21514d8981 541 */
AnnaBridge 156:ff21514d8981 542 #define __HAL_USART_GET_IT_SOURCE(__HANDLE__, __IT__) ((((((uint8_t)(__IT__)) >> 5U) == 1U)? (__HANDLE__)->Instance->CR1:(((((uint8_t)(__IT__)) >> 5U) == 2U)? \
AnnaBridge 156:ff21514d8981 543 (__HANDLE__)->Instance->CR2 : (__HANDLE__)->Instance->CR3)) & ((uint32_t)1U << \
AnnaBridge 156:ff21514d8981 544 (((uint16_t)(__IT__)) & USART_IT_MASK)))
AnnaBridge 156:ff21514d8981 545
AnnaBridge 156:ff21514d8981 546
AnnaBridge 156:ff21514d8981 547 /** @brief Clears the specified USART ISR flag, in setting the proper ICR register flag.
AnnaBridge 156:ff21514d8981 548 * @param __HANDLE__: specifies the USART Handle which can be USART1 or USART2.
AnnaBridge 156:ff21514d8981 549 * @param __IT_CLEAR__: specifies the interrupt clear register flag that needs to be set
AnnaBridge 156:ff21514d8981 550 * to clear the corresponding interrupt
AnnaBridge 156:ff21514d8981 551 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 552 * @arg USART_CLEAR_PEF: Parity Error Clear Flag
AnnaBridge 156:ff21514d8981 553 * @arg USART_CLEAR_FEF: Framing Error Clear Flag
AnnaBridge 156:ff21514d8981 554 * @arg USART_CLEAR_NEF: Noise detected Clear Flag
AnnaBridge 156:ff21514d8981 555 * @arg USART_CLEAR_OREF: OverRun Error Clear Flag
AnnaBridge 156:ff21514d8981 556 * @arg USART_CLEAR_IDLEF: IDLE line detected Clear Flag
AnnaBridge 156:ff21514d8981 557 * @arg USART_CLEAR_TCF: Transmission Complete Clear Flag
AnnaBridge 156:ff21514d8981 558 * @arg USART_CLEAR_CTSF: CTS Interrupt Clear Flag
AnnaBridge 156:ff21514d8981 559 * @retval None
AnnaBridge 156:ff21514d8981 560 */
AnnaBridge 156:ff21514d8981 561 #define __HAL_USART_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR = (uint32_t)(__IT_CLEAR__))
AnnaBridge 156:ff21514d8981 562
AnnaBridge 156:ff21514d8981 563 /** @brief Set a specific USART request flag.
AnnaBridge 156:ff21514d8981 564 * @param __HANDLE__: specifies the USART Handle which can be USART1 or USART2.
AnnaBridge 156:ff21514d8981 565 * @param __REQ__: specifies the request flag to set
AnnaBridge 156:ff21514d8981 566 * This parameter can be one of the following values:
AnnaBridge 156:ff21514d8981 567 * @arg USART_RXDATA_FLUSH_REQUEST: Receive Data flush Request
AnnaBridge 156:ff21514d8981 568 * @arg USART_TXDATA_FLUSH_REQUEST: Transmit data flush Request
AnnaBridge 156:ff21514d8981 569 *
AnnaBridge 156:ff21514d8981 570 * @retval None
AnnaBridge 156:ff21514d8981 571 */
AnnaBridge 156:ff21514d8981 572 #define __HAL_USART_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint32_t)(__REQ__))
AnnaBridge 156:ff21514d8981 573
AnnaBridge 156:ff21514d8981 574 /** @brief Enables the USART one bit sample method
AnnaBridge 156:ff21514d8981 575 * @param __HANDLE__: specifies the USART Handle.
AnnaBridge 156:ff21514d8981 576 * @retval None
AnnaBridge 156:ff21514d8981 577 */
AnnaBridge 156:ff21514d8981 578 #define __HAL_USART_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT)
AnnaBridge 156:ff21514d8981 579
AnnaBridge 156:ff21514d8981 580 /** @brief Disables the UART one bit sample method
AnnaBridge 156:ff21514d8981 581 * @param __HANDLE__: specifies the UART Handle.
AnnaBridge 156:ff21514d8981 582 * @retval None
AnnaBridge 156:ff21514d8981 583 */
AnnaBridge 156:ff21514d8981 584 #define __HAL_USART_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= (uint32_t)~((uint32_t)USART_CR3_ONEBIT))
AnnaBridge 156:ff21514d8981 585
AnnaBridge 156:ff21514d8981 586 /** @brief Enable USART
AnnaBridge 156:ff21514d8981 587 * @param __HANDLE__: specifies the USART Handle.
AnnaBridge 156:ff21514d8981 588 * The Handle Instance which can be USART1 or USART2.
AnnaBridge 156:ff21514d8981 589 * @retval None
AnnaBridge 156:ff21514d8981 590 */
AnnaBridge 156:ff21514d8981 591 #define __HAL_USART_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE)
AnnaBridge 156:ff21514d8981 592
AnnaBridge 156:ff21514d8981 593 /** @brief Disable USART
AnnaBridge 156:ff21514d8981 594 * @param __HANDLE__: specifies the USART Handle.
AnnaBridge 156:ff21514d8981 595 * The Handle Instance which can be USART1 or USART2.
AnnaBridge 156:ff21514d8981 596 * @retval None
AnnaBridge 156:ff21514d8981 597 */
AnnaBridge 156:ff21514d8981 598 #define __HAL_USART_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE)
AnnaBridge 156:ff21514d8981 599
AnnaBridge 156:ff21514d8981 600
AnnaBridge 156:ff21514d8981 601 /** @brief Check USART Baud rate
AnnaBridge 156:ff21514d8981 602 * @param BAUDRATE: Baudrate specified by the user
AnnaBridge 156:ff21514d8981 603 * The maximum Baud Rate is derived from the maximum clock on L0 (i.e. 32 MHz)
AnnaBridge 156:ff21514d8981 604 * divided by the smallest oversampling used on the USART (i.e. 8)
AnnaBridge 156:ff21514d8981 605 * @retval Test result (TRUE or FALSE).
AnnaBridge 156:ff21514d8981 606 */
AnnaBridge 156:ff21514d8981 607 #define IS_USART_BAUDRATE(BAUDRATE) ((BAUDRATE) < 4000001U)
AnnaBridge 156:ff21514d8981 608
AnnaBridge 156:ff21514d8981 609 /**
AnnaBridge 156:ff21514d8981 610 * @}
AnnaBridge 156:ff21514d8981 611 */
AnnaBridge 156:ff21514d8981 612
AnnaBridge 156:ff21514d8981 613 /* Include USART HAL Extension module */
AnnaBridge 156:ff21514d8981 614 #include "stm32l0xx_hal_usart_ex.h"
AnnaBridge 156:ff21514d8981 615 /* Exported functions --------------------------------------------------------*/
AnnaBridge 156:ff21514d8981 616 /** @defgroup USART_Exported_Functions USART Exported Functions
AnnaBridge 156:ff21514d8981 617 * @{
AnnaBridge 156:ff21514d8981 618 */
AnnaBridge 156:ff21514d8981 619 /* Initialization/de-initialization functions ********************************/
AnnaBridge 156:ff21514d8981 620 /** @defgroup USART_Exported_Functions_Group1 Initialization/de-initialization functions
AnnaBridge 156:ff21514d8981 621 * @{
AnnaBridge 156:ff21514d8981 622 */
AnnaBridge 156:ff21514d8981 623 HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 624 HAL_StatusTypeDef HAL_USART_DeInit(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 625 void HAL_USART_MspInit(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 626 void HAL_USART_MspDeInit(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 627 /**
AnnaBridge 156:ff21514d8981 628 * @}
AnnaBridge 156:ff21514d8981 629 */
AnnaBridge 156:ff21514d8981 630 /* IO operation functions *****************************************************/
AnnaBridge 156:ff21514d8981 631 /** @defgroup USART_Exported_Functions_Group2 IO operation functions
AnnaBridge 156:ff21514d8981 632 * @{
AnnaBridge 156:ff21514d8981 633 */
AnnaBridge 156:ff21514d8981 634 HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 635 HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 636 HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
AnnaBridge 156:ff21514d8981 637 HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size);
AnnaBridge 156:ff21514d8981 638 HAL_StatusTypeDef HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size);
AnnaBridge 156:ff21514d8981 639 HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
AnnaBridge 156:ff21514d8981 640 HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size);
AnnaBridge 156:ff21514d8981 641 HAL_StatusTypeDef HAL_USART_Receive_DMA(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size);
AnnaBridge 156:ff21514d8981 642 HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
AnnaBridge 156:ff21514d8981 643 HAL_StatusTypeDef HAL_USART_DMAPause(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 644 HAL_StatusTypeDef HAL_USART_DMAResume(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 645 HAL_StatusTypeDef HAL_USART_DMAStop(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 646 void HAL_USART_IRQHandler(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 647 void HAL_USART_TxCpltCallback(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 648 void HAL_USART_TxHalfCpltCallback(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 649 void HAL_USART_RxCpltCallback(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 650 void HAL_USART_RxHalfCpltCallback(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 651 void HAL_USART_TxRxCpltCallback(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 652 void HAL_USART_ErrorCallback(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 653 /**
AnnaBridge 156:ff21514d8981 654 * @}
AnnaBridge 156:ff21514d8981 655 */
AnnaBridge 156:ff21514d8981 656 /* IO operation functions *****************************************************/
AnnaBridge 156:ff21514d8981 657 /** @defgroup USART_Exported_Functions_Group3 Peripheral State functions
AnnaBridge 156:ff21514d8981 658 * @{
AnnaBridge 156:ff21514d8981 659 */
AnnaBridge 156:ff21514d8981 660 /* Peripheral State functions ************************************************/
AnnaBridge 156:ff21514d8981 661 HAL_USART_StateTypeDef HAL_USART_GetState(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 662 uint32_t HAL_USART_GetError(USART_HandleTypeDef *husart);
AnnaBridge 156:ff21514d8981 663 /**
AnnaBridge 156:ff21514d8981 664 * @}
AnnaBridge 156:ff21514d8981 665 */
AnnaBridge 156:ff21514d8981 666
AnnaBridge 156:ff21514d8981 667 /**
AnnaBridge 156:ff21514d8981 668 * @}
AnnaBridge 156:ff21514d8981 669 */
AnnaBridge 156:ff21514d8981 670
AnnaBridge 156:ff21514d8981 671 /* Define the private group ***********************************/
AnnaBridge 156:ff21514d8981 672 /**************************************************************/
AnnaBridge 156:ff21514d8981 673 /** @defgroup USART_Private USART Private
AnnaBridge 156:ff21514d8981 674 * @{
AnnaBridge 156:ff21514d8981 675 */
AnnaBridge 156:ff21514d8981 676 /**
AnnaBridge 156:ff21514d8981 677 * @}
AnnaBridge 156:ff21514d8981 678 */
AnnaBridge 156:ff21514d8981 679 /**************************************************************/
AnnaBridge 156:ff21514d8981 680
AnnaBridge 156:ff21514d8981 681 /**
AnnaBridge 156:ff21514d8981 682 * @}
AnnaBridge 156:ff21514d8981 683 */
AnnaBridge 156:ff21514d8981 684
AnnaBridge 156:ff21514d8981 685 /**
AnnaBridge 156:ff21514d8981 686 * @}
AnnaBridge 156:ff21514d8981 687 */
AnnaBridge 156:ff21514d8981 688
AnnaBridge 156:ff21514d8981 689 #ifdef __cplusplus
AnnaBridge 156:ff21514d8981 690 }
AnnaBridge 156:ff21514d8981 691 #endif
AnnaBridge 156:ff21514d8981 692
AnnaBridge 156:ff21514d8981 693 #endif /* __STM32L0xx_HAL_USART_H */
AnnaBridge 156:ff21514d8981 694
AnnaBridge 156:ff21514d8981 695 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
AnnaBridge 156:ff21514d8981 696