1 /** 2 ****************************************************************************** 3 * @file stm32u0xx_hal_usart.h 4 * @author MCD Application Team 5 * @brief Header file of USART HAL module. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2023 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ****************************************************************************** 17 */ 18 19 /* Define to prevent recursive inclusion -------------------------------------*/ 20 #ifndef STM32U0xx_HAL_USART_H 21 #define STM32U0xx_HAL_USART_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Includes ------------------------------------------------------------------*/ 28 #include "stm32u0xx_hal_def.h" 29 30 /** @addtogroup STM32U0xx_HAL_Driver 31 * @{ 32 */ 33 34 /** @addtogroup USART 35 * @{ 36 */ 37 38 /* Exported types ------------------------------------------------------------*/ 39 /** @defgroup USART_Exported_Types USART Exported Types 40 * @{ 41 */ 42 43 /** 44 * @brief USART Init Structure definition 45 */ 46 typedef struct 47 { 48 uint32_t BaudRate; /*!< This member configures the Usart communication baud rate. 49 The baud rate is computed using the following formula: 50 Baud Rate Register[15:4] = ((2 * fclk_pres) / 51 ((huart->Init.BaudRate)))[15:4] 52 Baud Rate Register[3] = 0 53 Baud Rate Register[2:0] = (((2 * fclk_pres) / 54 ((huart->Init.BaudRate)))[3:0]) >> 1 55 where fclk_pres is the USART input clock frequency (fclk) 56 divided by a prescaler. 57 @note Oversampling by 8 is systematically applied to 58 achieve high baud rates. */ 59 60 uint32_t WordLength; /*!< Specifies the number of data bits transmitted or received in a frame. 61 This parameter can be a value of @ref USARTEx_Word_Length. */ 62 63 uint32_t StopBits; /*!< Specifies the number of stop bits transmitted. 64 This parameter can be a value of @ref USART_Stop_Bits. */ 65 66 uint32_t Parity; /*!< Specifies the parity mode. 67 This parameter can be a value of @ref USART_Parity 68 @note When parity is enabled, the computed parity is inserted 69 at the MSB position of the transmitted data (9th bit when 70 the word length is set to 9 data bits; 8th bit when the 71 word length is set to 8 data bits). */ 72 73 uint32_t Mode; /*!< Specifies whether the Receive or Transmit mode is enabled or disabled. 74 This parameter can be a value of @ref USART_Mode. */ 75 76 uint32_t CLKPolarity; /*!< Specifies the steady state of the serial clock. 77 This parameter can be a value of @ref USART_Clock_Polarity. */ 78 79 uint32_t CLKPhase; /*!< Specifies the clock transition on which the bit capture is made. 80 This parameter can be a value of @ref USART_Clock_Phase. */ 81 82 uint32_t CLKLastBit; /*!< Specifies whether the clock pulse corresponding to the last transmitted 83 data bit (MSB) has to be output on the SCLK pin in synchronous mode. 84 This parameter can be a value of @ref USART_Last_Bit. */ 85 86 uint32_t ClockPrescaler; /*!< Specifies the prescaler value used to divide the USART clock source. 87 This parameter can be a value of @ref USART_ClockPrescaler. */ 88 } USART_InitTypeDef; 89 90 /** 91 * @brief HAL USART State structures definition 92 */ 93 typedef enum 94 { 95 HAL_USART_STATE_RESET = 0x00U, /*!< Peripheral is not initialized */ 96 HAL_USART_STATE_READY = 0x01U, /*!< Peripheral Initialized and ready for use */ 97 HAL_USART_STATE_BUSY = 0x02U, /*!< an internal process is ongoing */ 98 HAL_USART_STATE_BUSY_TX = 0x12U, /*!< Data Transmission process is ongoing */ 99 HAL_USART_STATE_BUSY_RX = 0x22U, /*!< Data Reception process is ongoing */ 100 HAL_USART_STATE_BUSY_TX_RX = 0x32U, /*!< Data Transmission Reception process is ongoing */ 101 HAL_USART_STATE_TIMEOUT = 0x03U, /*!< Timeout state */ 102 HAL_USART_STATE_ERROR = 0x04U /*!< Error */ 103 } HAL_USART_StateTypeDef; 104 105 /** 106 * @brief USART handle Structure definition 107 */ 108 typedef struct __USART_HandleTypeDef 109 { 110 USART_TypeDef *Instance; /*!< USART registers base address */ 111 112 USART_InitTypeDef Init; /*!< USART communication parameters */ 113 114 const uint8_t *pTxBuffPtr; /*!< Pointer to USART Tx transfer Buffer */ 115 116 uint16_t TxXferSize; /*!< USART Tx Transfer size */ 117 118 __IO uint16_t TxXferCount; /*!< USART Tx Transfer Counter */ 119 120 uint8_t *pRxBuffPtr; /*!< Pointer to USART Rx transfer Buffer */ 121 122 uint16_t RxXferSize; /*!< USART Rx Transfer size */ 123 124 __IO uint16_t RxXferCount; /*!< USART Rx Transfer Counter */ 125 126 uint16_t Mask; /*!< USART Rx RDR register mask */ 127 128 uint16_t NbRxDataToProcess; /*!< Number of data to process during RX ISR execution */ 129 130 uint16_t NbTxDataToProcess; /*!< Number of data to process during TX ISR execution */ 131 132 uint32_t SlaveMode; /*!< Enable/Disable USART SPI Slave Mode. This parameter can be a value 133 of @ref USARTEx_Slave_Mode */ 134 135 uint32_t FifoMode; /*!< Specifies if the FIFO mode will be used. This parameter can be a value 136 of @ref USARTEx_FIFO_mode. */ 137 138 void (*RxISR)(struct __USART_HandleTypeDef *husart); /*!< Function pointer on Rx IRQ handler */ 139 140 void (*TxISR)(struct __USART_HandleTypeDef *husart); /*!< Function pointer on Tx IRQ handler */ 141 142 #if defined(HAL_DMA_MODULE_ENABLED) 143 DMA_HandleTypeDef *hdmatx; /*!< USART Tx DMA Handle parameters */ 144 145 DMA_HandleTypeDef *hdmarx; /*!< USART Rx DMA Handle parameters */ 146 147 #endif /* HAL_DMA_MODULE_ENABLED */ 148 HAL_LockTypeDef Lock; /*!< Locking object */ 149 150 __IO HAL_USART_StateTypeDef State; /*!< USART communication state */ 151 152 __IO uint32_t ErrorCode; /*!< USART Error code */ 153 154 #if (USE_HAL_USART_REGISTER_CALLBACKS == 1) 155 void (* TxHalfCpltCallback)(struct __USART_HandleTypeDef *husart); /*!< USART Tx Half Complete Callback */ 156 void (* TxCpltCallback)(struct __USART_HandleTypeDef *husart); /*!< USART Tx Complete Callback */ 157 void (* RxHalfCpltCallback)(struct __USART_HandleTypeDef *husart); /*!< USART Rx Half Complete Callback */ 158 void (* RxCpltCallback)(struct __USART_HandleTypeDef *husart); /*!< USART Rx Complete Callback */ 159 void (* TxRxCpltCallback)(struct __USART_HandleTypeDef *husart); /*!< USART Tx Rx Complete Callback */ 160 void (* ErrorCallback)(struct __USART_HandleTypeDef *husart); /*!< USART Error Callback */ 161 void (* AbortCpltCallback)(struct __USART_HandleTypeDef *husart); /*!< USART Abort Complete Callback */ 162 void (* RxFifoFullCallback)(struct __USART_HandleTypeDef *husart); /*!< USART Rx Fifo Full Callback */ 163 void (* TxFifoEmptyCallback)(struct __USART_HandleTypeDef *husart); /*!< USART Tx Fifo Empty Callback */ 164 165 void (* MspInitCallback)(struct __USART_HandleTypeDef *husart); /*!< USART Msp Init callback */ 166 void (* MspDeInitCallback)(struct __USART_HandleTypeDef *husart); /*!< USART Msp DeInit callback */ 167 #endif /* USE_HAL_USART_REGISTER_CALLBACKS */ 168 169 } USART_HandleTypeDef; 170 171 #if (USE_HAL_USART_REGISTER_CALLBACKS == 1) 172 /** 173 * @brief HAL USART Callback ID enumeration definition 174 */ 175 typedef enum 176 { 177 HAL_USART_TX_HALFCOMPLETE_CB_ID = 0x00U, /*!< USART Tx Half Complete Callback ID */ 178 HAL_USART_TX_COMPLETE_CB_ID = 0x01U, /*!< USART Tx Complete Callback ID */ 179 HAL_USART_RX_HALFCOMPLETE_CB_ID = 0x02U, /*!< USART Rx Half Complete Callback ID */ 180 HAL_USART_RX_COMPLETE_CB_ID = 0x03U, /*!< USART Rx Complete Callback ID */ 181 HAL_USART_TX_RX_COMPLETE_CB_ID = 0x04U, /*!< USART Tx Rx Complete Callback ID */ 182 HAL_USART_ERROR_CB_ID = 0x05U, /*!< USART Error Callback ID */ 183 HAL_USART_ABORT_COMPLETE_CB_ID = 0x06U, /*!< USART Abort Complete Callback ID */ 184 HAL_USART_RX_FIFO_FULL_CB_ID = 0x07U, /*!< USART Rx Fifo Full Callback ID */ 185 HAL_USART_TX_FIFO_EMPTY_CB_ID = 0x08U, /*!< USART Tx Fifo Empty Callback ID */ 186 187 HAL_USART_MSPINIT_CB_ID = 0x09U, /*!< USART MspInit callback ID */ 188 HAL_USART_MSPDEINIT_CB_ID = 0x0AU /*!< USART MspDeInit callback ID */ 189 190 } HAL_USART_CallbackIDTypeDef; 191 192 /** 193 * @brief HAL USART Callback pointer definition 194 */ 195 typedef void (*pUSART_CallbackTypeDef)(USART_HandleTypeDef *husart); /*!< pointer to an USART callback function */ 196 197 #endif /* USE_HAL_USART_REGISTER_CALLBACKS */ 198 199 /** 200 * @} 201 */ 202 203 /* Exported constants --------------------------------------------------------*/ 204 /** @defgroup USART_Exported_Constants USART Exported Constants 205 * @{ 206 */ 207 208 /** @defgroup USART_Error_Definition USART Error Definition 209 * @{ 210 */ 211 #define HAL_USART_ERROR_NONE (0x00000000U) /*!< No error */ 212 #define HAL_USART_ERROR_PE (0x00000001U) /*!< Parity error */ 213 #define HAL_USART_ERROR_NE (0x00000002U) /*!< Noise error */ 214 #define HAL_USART_ERROR_FE (0x00000004U) /*!< Frame error */ 215 #define HAL_USART_ERROR_ORE (0x00000008U) /*!< Overrun error */ 216 #if defined(HAL_DMA_MODULE_ENABLED) 217 #define HAL_USART_ERROR_DMA (0x00000010U) /*!< DMA transfer error */ 218 #endif /* HAL_DMA_MODULE_ENABLED */ 219 #define HAL_USART_ERROR_UDR (0x00000020U) /*!< SPI slave underrun error */ 220 #if (USE_HAL_USART_REGISTER_CALLBACKS == 1) 221 #define HAL_USART_ERROR_INVALID_CALLBACK (0x00000040U) /*!< Invalid Callback error */ 222 #endif /* USE_HAL_USART_REGISTER_CALLBACKS */ 223 #define HAL_USART_ERROR_RTO (0x00000080U) /*!< Receiver Timeout error */ 224 /** 225 * @} 226 */ 227 228 /** @defgroup USART_Stop_Bits USART Number of Stop Bits 229 * @{ 230 */ 231 #define USART_STOPBITS_0_5 USART_CR2_STOP_0 /*!< USART frame with 0.5 stop bit */ 232 #define USART_STOPBITS_1 0x00000000U /*!< USART frame with 1 stop bit */ 233 #define USART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1) /*!< USART frame with 1.5 stop bits */ 234 #define USART_STOPBITS_2 USART_CR2_STOP_1 /*!< USART frame with 2 stop bits */ 235 /** 236 * @} 237 */ 238 239 /** @defgroup USART_Parity USART Parity 240 * @{ 241 */ 242 #define USART_PARITY_NONE 0x00000000U /*!< No parity */ 243 #define USART_PARITY_EVEN USART_CR1_PCE /*!< Even parity */ 244 #define USART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS) /*!< Odd parity */ 245 /** 246 * @} 247 */ 248 249 /** @defgroup USART_Mode USART Mode 250 * @{ 251 */ 252 #define USART_MODE_RX USART_CR1_RE /*!< RX mode */ 253 #define USART_MODE_TX USART_CR1_TE /*!< TX mode */ 254 #define USART_MODE_TX_RX (USART_CR1_TE |USART_CR1_RE) /*!< RX and TX mode */ 255 /** 256 * @} 257 */ 258 259 /** @defgroup USART_Clock USART Clock 260 * @{ 261 */ 262 #define USART_CLOCK_DISABLE 0x00000000U /*!< USART clock disable */ 263 #define USART_CLOCK_ENABLE USART_CR2_CLKEN /*!< USART clock enable */ 264 /** 265 * @} 266 */ 267 268 /** @defgroup USART_Clock_Polarity USART Clock Polarity 269 * @{ 270 */ 271 #define USART_POLARITY_LOW 0x00000000U /*!< Driver enable signal is active high */ 272 #define USART_POLARITY_HIGH USART_CR2_CPOL /*!< Driver enable signal is active low */ 273 /** 274 * @} 275 */ 276 277 /** @defgroup USART_Clock_Phase USART Clock Phase 278 * @{ 279 */ 280 #define USART_PHASE_1EDGE 0x00000000U /*!< USART frame phase on first clock transition */ 281 #define USART_PHASE_2EDGE USART_CR2_CPHA /*!< USART frame phase on second clock transition */ 282 /** 283 * @} 284 */ 285 286 /** @defgroup USART_Last_Bit USART Last Bit 287 * @{ 288 */ 289 #define USART_LASTBIT_DISABLE 0x00000000U /*!< USART frame last data bit clock pulse not output to SCLK pin */ 290 #define USART_LASTBIT_ENABLE USART_CR2_LBCL /*!< USART frame last data bit clock pulse output to SCLK pin */ 291 /** 292 * @} 293 */ 294 295 /** @defgroup USART_ClockPrescaler USART Clock Prescaler 296 * @{ 297 */ 298 #define USART_PRESCALER_DIV1 0x00000000U /*!< fclk_pres = fclk */ 299 #define USART_PRESCALER_DIV2 0x00000001U /*!< fclk_pres = fclk/2 */ 300 #define USART_PRESCALER_DIV4 0x00000002U /*!< fclk_pres = fclk/4 */ 301 #define USART_PRESCALER_DIV6 0x00000003U /*!< fclk_pres = fclk/6 */ 302 #define USART_PRESCALER_DIV8 0x00000004U /*!< fclk_pres = fclk/8 */ 303 #define USART_PRESCALER_DIV10 0x00000005U /*!< fclk_pres = fclk/10 */ 304 #define USART_PRESCALER_DIV12 0x00000006U /*!< fclk_pres = fclk/12 */ 305 #define USART_PRESCALER_DIV16 0x00000007U /*!< fclk_pres = fclk/16 */ 306 #define USART_PRESCALER_DIV32 0x00000008U /*!< fclk_pres = fclk/32 */ 307 #define USART_PRESCALER_DIV64 0x00000009U /*!< fclk_pres = fclk/64 */ 308 #define USART_PRESCALER_DIV128 0x0000000AU /*!< fclk_pres = fclk/128 */ 309 #define USART_PRESCALER_DIV256 0x0000000BU /*!< fclk_pres = fclk/256 */ 310 311 /** 312 * @} 313 */ 314 315 /** @defgroup USART_Request_Parameters USART Request Parameters 316 * @{ 317 */ 318 #define USART_RXDATA_FLUSH_REQUEST USART_RQR_RXFRQ /*!< Receive Data flush Request */ 319 #define USART_TXDATA_FLUSH_REQUEST USART_RQR_TXFRQ /*!< Transmit data flush Request */ 320 /** 321 * @} 322 */ 323 324 /** @defgroup USART_Flags USART Flags 325 * Elements values convention: 0xXXXX 326 * - 0xXXXX : Flag mask in the ISR register 327 * @{ 328 */ 329 #define USART_FLAG_TXFT USART_ISR_TXFT /*!< USART TXFIFO threshold flag */ 330 #define USART_FLAG_RXFT USART_ISR_RXFT /*!< USART RXFIFO threshold flag */ 331 #define USART_FLAG_RXFF USART_ISR_RXFF /*!< USART RXFIFO Full flag */ 332 #define USART_FLAG_TXFE USART_ISR_TXFE /*!< USART TXFIFO Empty flag */ 333 #define USART_FLAG_REACK USART_ISR_REACK /*!< USART receive enable acknowledge flag */ 334 #define USART_FLAG_TEACK USART_ISR_TEACK /*!< USART transmit enable acknowledge flag */ 335 #define USART_FLAG_BUSY USART_ISR_BUSY /*!< USART busy flag */ 336 #define USART_FLAG_UDR USART_ISR_UDR /*!< SPI slave underrun error flag */ 337 #define USART_FLAG_TXE USART_ISR_TXE_TXFNF /*!< USART transmit data register empty */ 338 #define USART_FLAG_TXFNF USART_ISR_TXE_TXFNF /*!< USART TXFIFO not full */ 339 #define USART_FLAG_RTOF USART_ISR_RTOF /*!< USART receiver timeout flag */ 340 #define USART_FLAG_TC USART_ISR_TC /*!< USART transmission complete */ 341 #define USART_FLAG_RXNE USART_ISR_RXNE_RXFNE /*!< USART read data register not empty */ 342 #define USART_FLAG_RXFNE USART_ISR_RXNE_RXFNE /*!< USART RXFIFO not empty */ 343 #define USART_FLAG_IDLE USART_ISR_IDLE /*!< USART idle flag */ 344 #define USART_FLAG_ORE USART_ISR_ORE /*!< USART overrun error */ 345 #define USART_FLAG_NE USART_ISR_NE /*!< USART noise error */ 346 #define USART_FLAG_FE USART_ISR_FE /*!< USART frame error */ 347 #define USART_FLAG_PE USART_ISR_PE /*!< USART parity error */ 348 /** 349 * @} 350 */ 351 352 /** @defgroup USART_Interrupt_definition USART Interrupts Definition 353 * Elements values convention: 0000ZZZZ0XXYYYYYb 354 * - YYYYY : Interrupt source position in the XX register (5bits) 355 * - XX : Interrupt source register (2bits) 356 * - 01: CR1 register 357 * - 10: CR2 register 358 * - 11: CR3 register 359 * - ZZZZ : Flag position in the ISR register(4bits) 360 * @{ 361 */ 362 363 #define USART_IT_PE 0x0028U /*!< USART parity error interruption */ 364 #define USART_IT_TXE 0x0727U /*!< USART transmit data register empty interruption */ 365 #define USART_IT_TXFNF 0x0727U /*!< USART TX FIFO not full interruption */ 366 #define USART_IT_TC 0x0626U /*!< USART transmission complete interruption */ 367 #define USART_IT_RXNE 0x0525U /*!< USART read data register not empty interruption */ 368 #define USART_IT_RXFNE 0x0525U /*!< USART RXFIFO not empty interruption */ 369 #define USART_IT_IDLE 0x0424U /*!< USART idle interruption */ 370 #define USART_IT_ERR 0x0060U /*!< USART error interruption */ 371 #define USART_IT_ORE 0x0300U /*!< USART overrun error interruption */ 372 #define USART_IT_NE 0x0200U /*!< USART noise error interruption */ 373 #define USART_IT_FE 0x0100U /*!< USART frame error interruption */ 374 #define USART_IT_RXFF 0x183FU /*!< USART RXFIFO full interruption */ 375 #define USART_IT_TXFE 0x173EU /*!< USART TXFIFO empty interruption */ 376 #define USART_IT_RXFT 0x1A7CU /*!< USART RXFIFO threshold reached interruption */ 377 #define USART_IT_TXFT 0x1B77U /*!< USART TXFIFO threshold reached interruption */ 378 379 /** 380 * @} 381 */ 382 383 /** @defgroup USART_IT_CLEAR_Flags USART Interruption Clear Flags 384 * @{ 385 */ 386 #define USART_CLEAR_PEF USART_ICR_PECF /*!< Parity Error Clear Flag */ 387 #define USART_CLEAR_FEF USART_ICR_FECF /*!< Framing Error Clear Flag */ 388 #define USART_CLEAR_NEF USART_ICR_NECF /*!< Noise Error detected Clear Flag */ 389 #define USART_CLEAR_OREF USART_ICR_ORECF /*!< OverRun Error Clear Flag */ 390 #define USART_CLEAR_IDLEF USART_ICR_IDLECF /*!< IDLE line detected Clear Flag */ 391 #define USART_CLEAR_TCF USART_ICR_TCCF /*!< Transmission Complete Clear Flag */ 392 #define USART_CLEAR_UDRF USART_ICR_UDRCF /*!< SPI slave underrun error Clear Flag */ 393 #define USART_CLEAR_TXFECF USART_ICR_TXFECF /*!< TXFIFO Empty Clear Flag */ 394 #define USART_CLEAR_RTOF USART_ICR_RTOCF /*!< USART receiver timeout clear flag */ 395 /** 396 * @} 397 */ 398 399 /** @defgroup USART_Interruption_Mask USART Interruption Flags Mask 400 * @{ 401 */ 402 #define USART_IT_MASK 0x001FU /*!< USART interruptions flags mask */ 403 #define USART_CR_MASK 0x00E0U /*!< USART control register mask */ 404 #define USART_CR_POS 5U /*!< USART control register position */ 405 #define USART_ISR_MASK 0x1F00U /*!< USART ISR register mask */ 406 #define USART_ISR_POS 8U /*!< USART ISR register position */ 407 /** 408 * @} 409 */ 410 411 /** 412 * @} 413 */ 414 415 /* Exported macros -----------------------------------------------------------*/ 416 /** @defgroup USART_Exported_Macros USART Exported Macros 417 * @{ 418 */ 419 420 /** @brief Reset USART handle state. 421 * @param __HANDLE__ USART handle. 422 * @retval None 423 */ 424 #if (USE_HAL_USART_REGISTER_CALLBACKS == 1) 425 #define __HAL_USART_RESET_HANDLE_STATE(__HANDLE__) do{ \ 426 (__HANDLE__)->State = HAL_USART_STATE_RESET; \ 427 (__HANDLE__)->MspInitCallback = NULL; \ 428 (__HANDLE__)->MspDeInitCallback = NULL; \ 429 } while(0U) 430 #else 431 #define __HAL_USART_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_USART_STATE_RESET) 432 #endif /* USE_HAL_USART_REGISTER_CALLBACKS */ 433 434 /** @brief Check whether the specified USART flag is set or not. 435 * @param __HANDLE__ specifies the USART Handle 436 * @param __FLAG__ specifies the flag to check. 437 * This parameter can be one of the following values: 438 * @arg @ref USART_FLAG_TXFT TXFIFO threshold flag 439 * @arg @ref USART_FLAG_RXFT RXFIFO threshold flag 440 * @arg @ref USART_FLAG_RXFF RXFIFO Full flag 441 * @arg @ref USART_FLAG_TXFE TXFIFO Empty flag 442 * @arg @ref USART_FLAG_REACK Receive enable acknowledge flag 443 * @arg @ref USART_FLAG_TEACK Transmit enable acknowledge flag 444 * @arg @ref USART_FLAG_BUSY Busy flag 445 * @arg @ref USART_FLAG_UDR SPI slave underrun error flag 446 * @arg @ref USART_FLAG_TXE Transmit data register empty flag 447 * @arg @ref USART_FLAG_TXFNF TXFIFO not full flag 448 * @arg @ref USART_FLAG_TC Transmission Complete flag 449 * @arg @ref USART_FLAG_RXNE Receive data register not empty flag 450 * @arg @ref USART_FLAG_RXFNE RXFIFO not empty flag 451 * @arg @ref USART_FLAG_RTOF Receiver Timeout flag 452 * @arg @ref USART_FLAG_IDLE Idle Line detection flag 453 * @arg @ref USART_FLAG_ORE OverRun Error flag 454 * @arg @ref USART_FLAG_NE Noise Error flag 455 * @arg @ref USART_FLAG_FE Framing Error flag 456 * @arg @ref USART_FLAG_PE Parity Error flag 457 * @retval The new state of __FLAG__ (TRUE or FALSE). 458 */ 459 #define __HAL_USART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__)) 460 461 /** @brief Clear the specified USART pending flag. 462 * @param __HANDLE__ specifies the USART Handle. 463 * @param __FLAG__ specifies the flag to check. 464 * This parameter can be any combination of the following values: 465 * @arg @ref USART_CLEAR_PEF Parity Error Clear Flag 466 * @arg @ref USART_CLEAR_FEF Framing Error Clear Flag 467 * @arg @ref USART_CLEAR_NEF Noise detected Clear Flag 468 * @arg @ref USART_CLEAR_OREF Overrun Error Clear Flag 469 * @arg @ref USART_CLEAR_IDLEF IDLE line detected Clear Flag 470 * @arg @ref USART_CLEAR_TXFECF TXFIFO empty clear Flag 471 * @arg @ref USART_CLEAR_TCF Transmission Complete Clear Flag 472 * @arg @ref USART_CLEAR_RTOF Receiver Timeout clear flag 473 * @arg @ref USART_CLEAR_UDRF SPI slave underrun error Clear Flag 474 * @retval None 475 */ 476 #define __HAL_USART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__)) 477 478 /** @brief Clear the USART PE pending flag. 479 * @param __HANDLE__ specifies the USART Handle. 480 * @retval None 481 */ 482 #define __HAL_USART_CLEAR_PEFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_PEF) 483 484 /** @brief Clear the USART FE pending flag. 485 * @param __HANDLE__ specifies the USART Handle. 486 * @retval None 487 */ 488 #define __HAL_USART_CLEAR_FEFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_FEF) 489 490 /** @brief Clear the USART NE pending flag. 491 * @param __HANDLE__ specifies the USART Handle. 492 * @retval None 493 */ 494 #define __HAL_USART_CLEAR_NEFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_NEF) 495 496 /** @brief Clear the USART ORE pending flag. 497 * @param __HANDLE__ specifies the USART Handle. 498 * @retval None 499 */ 500 #define __HAL_USART_CLEAR_OREFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_OREF) 501 502 /** @brief Clear the USART IDLE pending flag. 503 * @param __HANDLE__ specifies the USART Handle. 504 * @retval None 505 */ 506 #define __HAL_USART_CLEAR_IDLEFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_IDLEF) 507 508 /** @brief Clear the USART TX FIFO empty clear flag. 509 * @param __HANDLE__ specifies the USART Handle. 510 * @retval None 511 */ 512 #define __HAL_USART_CLEAR_TXFECF(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_TXFECF) 513 514 /** @brief Clear SPI slave underrun error flag. 515 * @param __HANDLE__ specifies the USART Handle. 516 * @retval None 517 */ 518 #define __HAL_USART_CLEAR_UDRFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_UDRF) 519 520 /** @brief Enable the specified USART interrupt. 521 * @param __HANDLE__ specifies the USART Handle. 522 * @param __INTERRUPT__ specifies the USART interrupt source to enable. 523 * This parameter can be one of the following values: 524 * @arg @ref USART_IT_RXFF RXFIFO Full interrupt 525 * @arg @ref USART_IT_TXFE TXFIFO Empty interrupt 526 * @arg @ref USART_IT_RXFT RXFIFO threshold interrupt 527 * @arg @ref USART_IT_TXFT TXFIFO threshold interrupt 528 * @arg @ref USART_IT_TXE Transmit Data Register empty interrupt 529 * @arg @ref USART_IT_TXFNF TX FIFO not full interrupt 530 * @arg @ref USART_IT_TC Transmission complete interrupt 531 * @arg @ref USART_IT_RXNE Receive Data register not empty interrupt 532 * @arg @ref USART_IT_RXFNE RXFIFO not empty interrupt 533 * @arg @ref USART_IT_IDLE Idle line detection interrupt 534 * @arg @ref USART_IT_PE Parity Error interrupt 535 * @arg @ref USART_IT_ERR Error interrupt(Frame error, noise error, overrun error) 536 * @retval None 537 */ 538 #define __HAL_USART_ENABLE_IT(__HANDLE__, __INTERRUPT__)\ 539 (((((__INTERRUPT__) & USART_CR_MASK) >> USART_CR_POS) == 1U)?\ 540 ((__HANDLE__)->Instance->CR1 |= (1U << ((__INTERRUPT__) & USART_IT_MASK))): \ 541 ((((__INTERRUPT__) & USART_CR_MASK) >> USART_CR_POS) == 2U)?\ 542 ((__HANDLE__)->Instance->CR2 |= (1U << ((__INTERRUPT__) & USART_IT_MASK))): \ 543 ((__HANDLE__)->Instance->CR3 |= (1U << ((__INTERRUPT__) & USART_IT_MASK)))) 544 545 /** @brief Disable the specified USART interrupt. 546 * @param __HANDLE__ specifies the USART Handle. 547 * @param __INTERRUPT__ specifies the USART interrupt source to disable. 548 * This parameter can be one of the following values: 549 * @arg @ref USART_IT_RXFF RXFIFO Full interrupt 550 * @arg @ref USART_IT_TXFE TXFIFO Empty interrupt 551 * @arg @ref USART_IT_RXFT RXFIFO threshold interrupt 552 * @arg @ref USART_IT_TXFT TXFIFO threshold interrupt 553 * @arg @ref USART_IT_TXE Transmit Data Register empty interrupt 554 * @arg @ref USART_IT_TXFNF TX FIFO not full interrupt 555 * @arg @ref USART_IT_TC Transmission complete interrupt 556 * @arg @ref USART_IT_RXNE Receive Data register not empty interrupt 557 * @arg @ref USART_IT_RXFNE RXFIFO not empty interrupt 558 * @arg @ref USART_IT_IDLE Idle line detection interrupt 559 * @arg @ref USART_IT_PE Parity Error interrupt 560 * @arg @ref USART_IT_ERR Error interrupt(Frame error, noise error, overrun error) 561 * @retval None 562 */ 563 #define __HAL_USART_DISABLE_IT(__HANDLE__, __INTERRUPT__)\ 564 (((((__INTERRUPT__) & USART_CR_MASK) >> USART_CR_POS) == 1U)?\ 565 ((__HANDLE__)->Instance->CR1 &= ~ (1U << ((__INTERRUPT__) & USART_IT_MASK))): \ 566 ((((__INTERRUPT__) & USART_CR_MASK) >> USART_CR_POS) == 2U)?\ 567 ((__HANDLE__)->Instance->CR2 &= ~ (1U << ((__INTERRUPT__) & USART_IT_MASK))): \ 568 ((__HANDLE__)->Instance->CR3 &= ~ (1U << ((__INTERRUPT__) & USART_IT_MASK)))) 569 570 /** @brief Check whether the specified USART interrupt has occurred or not. 571 * @param __HANDLE__ specifies the USART Handle. 572 * @param __INTERRUPT__ specifies the USART interrupt source to check. 573 * This parameter can be one of the following values: 574 * @arg @ref USART_IT_RXFF RXFIFO Full interrupt 575 * @arg @ref USART_IT_TXFE TXFIFO Empty interrupt 576 * @arg @ref USART_IT_RXFT RXFIFO threshold interrupt 577 * @arg @ref USART_IT_TXFT TXFIFO threshold interrupt 578 * @arg @ref USART_IT_TXE Transmit Data Register empty interrupt 579 * @arg @ref USART_IT_TXFNF TX FIFO not full interrupt 580 * @arg @ref USART_IT_TC Transmission complete interrupt 581 * @arg @ref USART_IT_RXNE Receive Data register not empty interrupt 582 * @arg @ref USART_IT_RXFNE RXFIFO not empty interrupt 583 * @arg @ref USART_IT_IDLE Idle line detection interrupt 584 * @arg @ref USART_IT_ORE OverRun Error interrupt 585 * @arg @ref USART_IT_NE Noise Error interrupt 586 * @arg @ref USART_IT_FE Framing Error interrupt 587 * @arg @ref USART_IT_PE Parity Error interrupt 588 * @retval The new state of __INTERRUPT__ (SET or RESET). 589 */ 590 #define __HAL_USART_GET_IT(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISR\ 591 & (0x01U << (((__INTERRUPT__) & USART_ISR_MASK)>>\ 592 USART_ISR_POS))) != 0U) ? SET : RESET) 593 594 /** @brief Check whether the specified USART interrupt source is enabled or not. 595 * @param __HANDLE__ specifies the USART Handle. 596 * @param __INTERRUPT__ specifies the USART interrupt source to check. 597 * This parameter can be one of the following values: 598 * @arg @ref USART_IT_RXFF RXFIFO Full interrupt 599 * @arg @ref USART_IT_TXFE TXFIFO Empty interrupt 600 * @arg @ref USART_IT_RXFT RXFIFO threshold interrupt 601 * @arg @ref USART_IT_TXFT TXFIFO threshold interrupt 602 * @arg @ref USART_IT_TXE Transmit Data Register empty interrupt 603 * @arg @ref USART_IT_TXFNF TX FIFO not full interrupt 604 * @arg @ref USART_IT_TC Transmission complete interrupt 605 * @arg @ref USART_IT_RXNE Receive Data register not empty interrupt 606 * @arg @ref USART_IT_RXFNE RXFIFO not empty interrupt 607 * @arg @ref USART_IT_IDLE Idle line detection interrupt 608 * @arg @ref USART_IT_ORE OverRun Error interrupt 609 * @arg @ref USART_IT_NE Noise Error interrupt 610 * @arg @ref USART_IT_FE Framing Error interrupt 611 * @arg @ref USART_IT_PE Parity Error interrupt 612 * @retval The new state of __INTERRUPT__ (SET or RESET). 613 */ 614 #define __HAL_USART_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((((uint8_t)(__INTERRUPT__)) >> 0x05U) == 0x01U) ?\ 615 (__HANDLE__)->Instance->CR1 : \ 616 (((((uint8_t)(__INTERRUPT__)) >> 0x05U) == 0x02U) ?\ 617 (__HANDLE__)->Instance->CR2 : \ 618 (__HANDLE__)->Instance->CR3)) & (0x01U <<\ 619 (((uint16_t)(__INTERRUPT__)) &\ 620 USART_IT_MASK))) != 0U) ? SET : RESET) 621 622 /** @brief Clear the specified USART ISR flag, in setting the proper ICR register flag. 623 * @param __HANDLE__ specifies the USART Handle. 624 * @param __IT_CLEAR__ specifies the interrupt clear register flag that needs to be set 625 * to clear the corresponding interrupt. 626 * This parameter can be one of the following values: 627 * @arg @ref USART_CLEAR_PEF Parity Error Clear Flag 628 * @arg @ref USART_CLEAR_FEF Framing Error Clear Flag 629 * @arg @ref USART_CLEAR_NEF Noise detected Clear Flag 630 * @arg @ref USART_CLEAR_OREF Overrun Error Clear Flag 631 * @arg @ref USART_CLEAR_IDLEF IDLE line detected Clear Flag 632 * @arg @ref USART_CLEAR_RTOF Receiver timeout clear flag 633 * @arg @ref USART_CLEAR_TXFECF TXFIFO empty clear Flag 634 * @arg @ref USART_CLEAR_TCF Transmission Complete Clear Flag 635 * @retval None 636 */ 637 #define __HAL_USART_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR = (uint32_t)(__IT_CLEAR__)) 638 639 /** @brief Set a specific USART request flag. 640 * @param __HANDLE__ specifies the USART Handle. 641 * @param __REQ__ specifies the request flag to set. 642 * This parameter can be one of the following values: 643 * @arg @ref USART_RXDATA_FLUSH_REQUEST Receive Data flush Request 644 * @arg @ref USART_TXDATA_FLUSH_REQUEST Transmit data flush Request 645 * 646 * @retval None 647 */ 648 #define __HAL_USART_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__)) 649 650 /** @brief Enable the USART one bit sample method. 651 * @param __HANDLE__ specifies the USART Handle. 652 * @retval None 653 */ 654 #define __HAL_USART_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT) 655 656 /** @brief Disable the USART one bit sample method. 657 * @param __HANDLE__ specifies the USART Handle. 658 * @retval None 659 */ 660 #define __HAL_USART_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= ~USART_CR3_ONEBIT) 661 662 /** @brief Enable USART. 663 * @param __HANDLE__ specifies the USART Handle. 664 * @retval None 665 */ 666 #define __HAL_USART_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE) 667 668 /** @brief Disable USART. 669 * @param __HANDLE__ specifies the USART Handle. 670 * @retval None 671 */ 672 #define __HAL_USART_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE) 673 674 /** 675 * @} 676 */ 677 678 /* Private macros --------------------------------------------------------*/ 679 /** @defgroup USART_Private_Macros USART Private Macros 680 * @{ 681 */ 682 683 /** @brief Get USART clock division factor from clock prescaler value. 684 * @param __CLOCKPRESCALER__ USART prescaler value. 685 * @retval USART clock division factor 686 */ 687 #define USART_GET_DIV_FACTOR(__CLOCKPRESCALER__) \ 688 (((__CLOCKPRESCALER__) == USART_PRESCALER_DIV1) ? 1U : \ 689 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV2) ? 2U : \ 690 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV4) ? 4U : \ 691 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV6) ? 6U : \ 692 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV8) ? 8U : \ 693 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV10) ? 10U : \ 694 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV12) ? 12U : \ 695 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV16) ? 16U : \ 696 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV32) ? 32U : \ 697 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV64) ? 64U : \ 698 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV128) ? 128U : 256U) 699 700 /** @brief BRR division operation to set BRR register in 8-bit oversampling mode. 701 * @param __PCLK__ USART clock. 702 * @param __BAUD__ Baud rate set by the user. 703 * @param __CLOCKPRESCALER__ USART prescaler value. 704 * @retval Division result 705 */ 706 #define USART_DIV_SAMPLING8(__PCLK__, __BAUD__, __CLOCKPRESCALER__)\ 707 (((((__PCLK__)/USART_GET_DIV_FACTOR(__CLOCKPRESCALER__))*2U)\ 708 + ((__BAUD__)/2U)) / (__BAUD__)) 709 710 /** @brief Report the USART clock source. 711 * @param __HANDLE__ specifies the USART Handle. 712 * @param __CLOCKSOURCE__ output variable. 713 * @retval the USART clocking source, written in __CLOCKSOURCE__. 714 */ 715 #define USART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ 716 do { \ 717 if((__HANDLE__)->Instance == USART1) \ 718 { \ 719 (__CLOCKSOURCE__) = (uint32_t)RCC_PERIPHCLK_USART1; \ 720 } \ 721 else if((__HANDLE__)->Instance == USART2) \ 722 { \ 723 (__CLOCKSOURCE__) = (uint32_t)RCC_PERIPHCLK_USART2; \ 724 } \ 725 else if((__HANDLE__)->Instance == USART3) \ 726 { \ 727 (__CLOCKSOURCE__) = (uint32_t)RCC_PERIPHCLK_USART3; \ 728 } \ 729 else if((__HANDLE__)->Instance == USART4) \ 730 { \ 731 (__CLOCKSOURCE__) = (uint32_t)RCC_PERIPHCLK_USART4; \ 732 } \ 733 else \ 734 { \ 735 (__CLOCKSOURCE__) = 0U; \ 736 } \ 737 } while(0U) 738 739 740 /** @brief Check USART Baud rate. 741 * @param __BAUDRATE__ Baudrate specified by the user. 742 * The maximum Baud Rate is derived from the maximum clock on U0 (i.e. 48 MHz) 743 * divided by the smallest oversampling used on the USART (i.e. 8) 744 * @retval SET (__BAUDRATE__ is valid) or RESET (__BAUDRATE__ is invalid) */ 745 #define IS_USART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) <= 6000000U) 746 747 /** 748 * @brief Ensure that USART frame number of stop bits is valid. 749 * @param __STOPBITS__ USART frame number of stop bits. 750 * @retval SET (__STOPBITS__ is valid) or RESET (__STOPBITS__ is invalid) 751 */ 752 #define IS_USART_STOPBITS(__STOPBITS__) (((__STOPBITS__) == USART_STOPBITS_0_5) || \ 753 ((__STOPBITS__) == USART_STOPBITS_1) || \ 754 ((__STOPBITS__) == USART_STOPBITS_1_5) || \ 755 ((__STOPBITS__) == USART_STOPBITS_2)) 756 757 /** 758 * @brief Ensure that USART frame parity is valid. 759 * @param __PARITY__ USART frame parity. 760 * @retval SET (__PARITY__ is valid) or RESET (__PARITY__ is invalid) 761 */ 762 #define IS_USART_PARITY(__PARITY__) (((__PARITY__) == USART_PARITY_NONE) || \ 763 ((__PARITY__) == USART_PARITY_EVEN) || \ 764 ((__PARITY__) == USART_PARITY_ODD)) 765 766 /** 767 * @brief Ensure that USART communication mode is valid. 768 * @param __MODE__ USART communication mode. 769 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid) 770 */ 771 #define IS_USART_MODE(__MODE__) ((((__MODE__) & 0xFFFFFFF3U) == 0x00U) && ((__MODE__) != 0x00U)) 772 773 /** 774 * @brief Ensure that USART clock state is valid. 775 * @param __CLOCK__ USART clock state. 776 * @retval SET (__CLOCK__ is valid) or RESET (__CLOCK__ is invalid) 777 */ 778 #define IS_USART_CLOCK(__CLOCK__) (((__CLOCK__) == USART_CLOCK_DISABLE) || \ 779 ((__CLOCK__) == USART_CLOCK_ENABLE)) 780 781 /** 782 * @brief Ensure that USART frame polarity is valid. 783 * @param __CPOL__ USART frame polarity. 784 * @retval SET (__CPOL__ is valid) or RESET (__CPOL__ is invalid) 785 */ 786 #define IS_USART_POLARITY(__CPOL__) (((__CPOL__) == USART_POLARITY_LOW) || ((__CPOL__) == USART_POLARITY_HIGH)) 787 788 /** 789 * @brief Ensure that USART frame phase is valid. 790 * @param __CPHA__ USART frame phase. 791 * @retval SET (__CPHA__ is valid) or RESET (__CPHA__ is invalid) 792 */ 793 #define IS_USART_PHASE(__CPHA__) (((__CPHA__) == USART_PHASE_1EDGE) || ((__CPHA__) == USART_PHASE_2EDGE)) 794 795 /** 796 * @brief Ensure that USART frame last bit clock pulse setting is valid. 797 * @param __LASTBIT__ USART frame last bit clock pulse setting. 798 * @retval SET (__LASTBIT__ is valid) or RESET (__LASTBIT__ is invalid) 799 */ 800 #define IS_USART_LASTBIT(__LASTBIT__) (((__LASTBIT__) == USART_LASTBIT_DISABLE) || \ 801 ((__LASTBIT__) == USART_LASTBIT_ENABLE)) 802 803 /** 804 * @brief Ensure that USART request parameter is valid. 805 * @param __PARAM__ USART request parameter. 806 * @retval SET (__PARAM__ is valid) or RESET (__PARAM__ is invalid) 807 */ 808 #define IS_USART_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == USART_RXDATA_FLUSH_REQUEST) || \ 809 ((__PARAM__) == USART_TXDATA_FLUSH_REQUEST)) 810 811 /** 812 * @brief Ensure that USART Prescaler is valid. 813 * @param __CLOCKPRESCALER__ USART Prescaler value. 814 * @retval SET (__CLOCKPRESCALER__ is valid) or RESET (__CLOCKPRESCALER__ is invalid) 815 */ 816 #define IS_USART_PRESCALER(__CLOCKPRESCALER__) (((__CLOCKPRESCALER__) == USART_PRESCALER_DIV1) || \ 817 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV2) || \ 818 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV4) || \ 819 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV6) || \ 820 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV8) || \ 821 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV10) || \ 822 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV12) || \ 823 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV16) || \ 824 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV32) || \ 825 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV64) || \ 826 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV128) || \ 827 ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV256)) 828 829 /** 830 * @} 831 */ 832 833 /* Include USART HAL Extended module */ 834 #include "stm32u0xx_hal_usart_ex.h" 835 836 /* Exported functions --------------------------------------------------------*/ 837 /** @addtogroup USART_Exported_Functions USART Exported Functions 838 * @{ 839 */ 840 841 /** @addtogroup USART_Exported_Functions_Group1 Initialization and de-initialization functions 842 * @{ 843 */ 844 845 /* Initialization and de-initialization functions ****************************/ 846 HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart); 847 HAL_StatusTypeDef HAL_USART_DeInit(USART_HandleTypeDef *husart); 848 void HAL_USART_MspInit(USART_HandleTypeDef *husart); 849 void HAL_USART_MspDeInit(USART_HandleTypeDef *husart); 850 851 /* Callbacks Register/UnRegister functions ***********************************/ 852 #if (USE_HAL_USART_REGISTER_CALLBACKS == 1) 853 HAL_StatusTypeDef HAL_USART_RegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTypeDef CallbackID, 854 pUSART_CallbackTypeDef pCallback); 855 HAL_StatusTypeDef HAL_USART_UnRegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTypeDef CallbackID); 856 #endif /* USE_HAL_USART_REGISTER_CALLBACKS */ 857 858 /** 859 * @} 860 */ 861 862 /** @addtogroup USART_Exported_Functions_Group2 IO operation functions 863 * @{ 864 */ 865 866 /* IO operation functions *****************************************************/ 867 HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t Size, 868 uint32_t Timeout); 869 HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, uint32_t Timeout); 870 HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint8_t *pRxData, 871 uint16_t Size, uint32_t Timeout); 872 HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t Size); 873 HAL_StatusTypeDef HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size); 874 HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint8_t *pRxData, 875 uint16_t Size); 876 #if defined(HAL_DMA_MODULE_ENABLED) 877 HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t Size); 878 HAL_StatusTypeDef HAL_USART_Receive_DMA(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size); 879 HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, const uint8_t *pTxData, uint8_t *pRxData, 880 uint16_t Size); 881 HAL_StatusTypeDef HAL_USART_DMAPause(USART_HandleTypeDef *husart); 882 HAL_StatusTypeDef HAL_USART_DMAResume(USART_HandleTypeDef *husart); 883 HAL_StatusTypeDef HAL_USART_DMAStop(USART_HandleTypeDef *husart); 884 #endif /* HAL_DMA_MODULE_ENABLED */ 885 /* Transfer Abort functions */ 886 HAL_StatusTypeDef HAL_USART_Abort(USART_HandleTypeDef *husart); 887 HAL_StatusTypeDef HAL_USART_Abort_IT(USART_HandleTypeDef *husart); 888 889 void HAL_USART_IRQHandler(USART_HandleTypeDef *husart); 890 void HAL_USART_TxHalfCpltCallback(USART_HandleTypeDef *husart); 891 void HAL_USART_TxCpltCallback(USART_HandleTypeDef *husart); 892 void HAL_USART_RxCpltCallback(USART_HandleTypeDef *husart); 893 void HAL_USART_RxHalfCpltCallback(USART_HandleTypeDef *husart); 894 void HAL_USART_TxRxCpltCallback(USART_HandleTypeDef *husart); 895 void HAL_USART_ErrorCallback(USART_HandleTypeDef *husart); 896 void HAL_USART_AbortCpltCallback(USART_HandleTypeDef *husart); 897 898 /** 899 * @} 900 */ 901 902 /** @addtogroup USART_Exported_Functions_Group4 Peripheral State and Error functions 903 * @{ 904 */ 905 906 /* Peripheral State and Error functions ***************************************/ 907 HAL_USART_StateTypeDef HAL_USART_GetState(const USART_HandleTypeDef *husart); 908 uint32_t HAL_USART_GetError(const USART_HandleTypeDef *husart); 909 910 /** 911 * @} 912 */ 913 914 /** 915 * @} 916 */ 917 918 /** 919 * @} 920 */ 921 922 /** 923 * @} 924 */ 925 926 #ifdef __cplusplus 927 } 928 #endif 929 930 #endif /* STM32U0xx_HAL_USART_H */ 931 932