STM32L4xx_HAL_Driver  1.14.0
stm32l4xx_hal_usart.h
Go to the documentation of this file.
1 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32L4xx_HAL_USART_H
22 #define STM32L4xx_HAL_USART_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l4xx_hal_def.h"
30 
39 /* Exported types ------------------------------------------------------------*/
47 typedef struct
48 {
49  uint32_t BaudRate;
57  uint32_t WordLength;
60  uint32_t StopBits;
63  uint32_t Parity;
70  uint32_t Mode;
73  uint32_t CLKPolarity;
76  uint32_t CLKPhase;
79  uint32_t CLKLastBit;
83 #if defined(USART_PRESC_PRESCALER)
84  uint32_t ClockPrescaler;
86 #endif /* USART_PRESC_PRESCALER */
88 
92 typedef enum
93 {
103 
107 typedef enum
108 {
116 
120 typedef struct __USART_HandleTypeDef
121 {
122  USART_TypeDef *Instance;
126  uint8_t *pTxBuffPtr;
128  uint16_t TxXferSize;
130  __IO uint16_t TxXferCount;
132  uint8_t *pRxBuffPtr;
134  uint16_t RxXferSize;
136  __IO uint16_t RxXferCount;
138  uint16_t Mask;
140 #if defined(USART_CR1_FIFOEN)
141  uint16_t NbRxDataToProcess;
143  uint16_t NbTxDataToProcess;
145 #endif /* USART_CR1_FIFOEN */
146 #if defined(USART_CR2_SLVEN)
147  uint32_t SlaveMode;
150 #endif /* USART_CR2_SLVEN */
151 #if defined(USART_CR1_FIFOEN)
152  uint32_t FifoMode;
155 #endif /* USART_CR1_FIFOEN */
156  void (*RxISR)(struct __USART_HandleTypeDef *husart);
158  void (*TxISR)(struct __USART_HandleTypeDef *husart);
166  __IO HAL_USART_StateTypeDef State;
168  __IO uint32_t ErrorCode;
170 #if (USE_HAL_USART_REGISTER_CALLBACKS == 1)
171  void (* TxHalfCpltCallback)(struct __USART_HandleTypeDef *husart);
172  void (* TxCpltCallback)(struct __USART_HandleTypeDef *husart);
173  void (* RxHalfCpltCallback)(struct __USART_HandleTypeDef *husart);
174  void (* RxCpltCallback)(struct __USART_HandleTypeDef *husart);
175  void (* TxRxCpltCallback)(struct __USART_HandleTypeDef *husart);
176  void (* ErrorCallback)(struct __USART_HandleTypeDef *husart);
177  void (* AbortCpltCallback)(struct __USART_HandleTypeDef *husart);
178 #if defined(USART_CR1_FIFOEN)
179  void (* RxFifoFullCallback)(struct __USART_HandleTypeDef *husart);
180  void (* TxFifoEmptyCallback)(struct __USART_HandleTypeDef *husart);
181 #endif /* USART_CR1_FIFOEN */
182 
183  void (* MspInitCallback)(struct __USART_HandleTypeDef *husart);
184  void (* MspDeInitCallback)(struct __USART_HandleTypeDef *husart);
185 #endif /* USE_HAL_USART_REGISTER_CALLBACKS */
186 
188 
189 #if (USE_HAL_USART_REGISTER_CALLBACKS == 1)
190 
193 typedef enum
194 {
202 #if defined(USART_CR1_FIFOEN)
205 #endif /* USART_CR1_FIFOEN */
206 
211 
215 typedef void (*pUSART_CallbackTypeDef)(USART_HandleTypeDef *husart);
217 #endif /* USE_HAL_USART_REGISTER_CALLBACKS */
218 
223 /* Exported constants --------------------------------------------------------*/
231 #define HAL_USART_ERROR_NONE ((uint32_t)0x00000000U)
232 #define HAL_USART_ERROR_PE ((uint32_t)0x00000001U)
233 #define HAL_USART_ERROR_NE ((uint32_t)0x00000002U)
234 #define HAL_USART_ERROR_FE ((uint32_t)0x00000004U)
235 #define HAL_USART_ERROR_ORE ((uint32_t)0x00000008U)
236 #define HAL_USART_ERROR_DMA ((uint32_t)0x00000010U)
237 #if defined(USART_CR2_SLVEN)
238 #define HAL_USART_ERROR_UDR ((uint32_t)0x00000020U)
239 #endif /* USART_CR2_SLVEN */
240 #if (USE_HAL_USART_REGISTER_CALLBACKS == 1)
241 #define HAL_USART_ERROR_INVALID_CALLBACK ((uint32_t)0x00000040U)
242 #endif /* USE_HAL_USART_REGISTER_CALLBACKS */
243 
250 #define USART_STOPBITS_0_5 USART_CR2_STOP_0
251 #define USART_STOPBITS_1 0x00000000U
252 #define USART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1)
253 #define USART_STOPBITS_2 USART_CR2_STOP_1
261 #define USART_PARITY_NONE 0x00000000U
262 #define USART_PARITY_EVEN USART_CR1_PCE
263 #define USART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS)
271 #define USART_MODE_RX USART_CR1_RE
272 #define USART_MODE_TX USART_CR1_TE
273 #define USART_MODE_TX_RX (USART_CR1_TE |USART_CR1_RE)
281 #define USART_OVERSAMPLING_16 0x00000000U
282 #define USART_OVERSAMPLING_8 USART_CR1_OVER8
290 #define USART_CLOCK_DISABLE 0x00000000U
291 #define USART_CLOCK_ENABLE USART_CR2_CLKEN
299 #define USART_POLARITY_LOW 0x00000000U
300 #define USART_POLARITY_HIGH USART_CR2_CPOL
308 #define USART_PHASE_1EDGE 0x00000000U
309 #define USART_PHASE_2EDGE USART_CR2_CPHA
317 #define USART_LASTBIT_DISABLE 0x00000000U
318 #define USART_LASTBIT_ENABLE USART_CR2_LBCL
323 #if defined(USART_PRESC_PRESCALER)
324 
327 #define USART_PRESCALER_DIV1 0x00000000U
328 #define USART_PRESCALER_DIV2 0x00000001U
329 #define USART_PRESCALER_DIV4 0x00000002U
330 #define USART_PRESCALER_DIV6 0x00000003U
331 #define USART_PRESCALER_DIV8 0x00000004U
332 #define USART_PRESCALER_DIV10 0x00000005U
333 #define USART_PRESCALER_DIV12 0x00000006U
334 #define USART_PRESCALER_DIV16 0x00000007U
335 #define USART_PRESCALER_DIV32 0x00000008U
336 #define USART_PRESCALER_DIV64 0x00000009U
337 #define USART_PRESCALER_DIV128 0x0000000AU
338 #define USART_PRESCALER_DIV256 0x0000000BU
343 #endif /* USART_PRESC_PRESCALER */
344 
348 #define USART_RXDATA_FLUSH_REQUEST USART_RQR_RXFRQ
349 #define USART_TXDATA_FLUSH_REQUEST USART_RQR_TXFRQ
359 #if defined(USART_CR1_FIFOEN)
360 #define USART_FLAG_TXFT USART_ISR_TXFT
361 #define USART_FLAG_RXFT USART_ISR_RXFT
362 #define USART_FLAG_RXFF USART_ISR_RXFF
363 #define USART_FLAG_TXFE USART_ISR_TXFE
364 #endif /* USART_CR1_FIFOEN */
365 #define USART_FLAG_REACK USART_ISR_REACK
366 #define USART_FLAG_TEACK USART_ISR_TEACK
367 #define USART_FLAG_BUSY USART_ISR_BUSY
368 #if defined(USART_CR2_SLVEN)
369 #define USART_FLAG_UDR USART_ISR_UDR
370 #endif /* USART_CR2_SLVEN */
371 #if defined(USART_CR1_FIFOEN)
372 #define USART_FLAG_TXE USART_ISR_TXE_TXFNF
373 #define USART_FLAG_TXFNF USART_ISR_TXE_TXFNF
374 #else
375 #define USART_FLAG_TXE USART_ISR_TXE
376 #endif /* USART_CR1_FIFOEN */
377 #define USART_FLAG_TC USART_ISR_TC
378 #if defined(USART_CR1_FIFOEN)
379 #define USART_FLAG_RXNE USART_ISR_RXNE_RXFNE
380 #define USART_FLAG_RXFNE USART_ISR_RXNE_RXFNE
381 #else
382 #define USART_FLAG_RXNE USART_ISR_RXNE
383 #endif /* USART_CR1_FIFOEN */
384 #define USART_FLAG_IDLE USART_ISR_IDLE
385 #define USART_FLAG_ORE USART_ISR_ORE
386 #define USART_FLAG_NE USART_ISR_NE
387 #define USART_FLAG_FE USART_ISR_FE
388 #define USART_FLAG_PE USART_ISR_PE
404 #define USART_IT_PE 0x0028U
405 #define USART_IT_TXE 0x0727U
406 #if defined(USART_CR1_FIFOEN)
407 #define USART_IT_TXFNF 0x0727U
408 #endif /* USART_CR1_FIFOEN */
409 #define USART_IT_TC 0x0626U
410 #define USART_IT_RXNE 0x0525U
411 #if defined(USART_CR1_FIFOEN)
412 #define USART_IT_RXFNE 0x0525U
413 #endif /* USART_CR1_FIFOEN */
414 #define USART_IT_IDLE 0x0424U
415 #define USART_IT_ERR 0x0060U
416 #define USART_IT_ORE 0x0300U
417 #define USART_IT_NE 0x0200U
418 #define USART_IT_FE 0x0100U
419 #if defined(USART_CR1_FIFOEN)
420 #define USART_IT_RXFF 0x183FU
421 #define USART_IT_TXFE 0x173EU
422 #define USART_IT_RXFT 0x1A7CU
423 #define USART_IT_TXFT 0x1B77U
424 #endif /* USART_CR1_FIFOEN */
425 
433 #define USART_CLEAR_PEF USART_ICR_PECF
434 #define USART_CLEAR_FEF USART_ICR_FECF
435 #define USART_CLEAR_NEF USART_ICR_NECF
436 #define USART_CLEAR_OREF USART_ICR_ORECF
437 #define USART_CLEAR_IDLEF USART_ICR_IDLECF
438 #define USART_CLEAR_TCF USART_ICR_TCCF
439 #if defined(USART_CR2_SLVEN)
440 #define USART_CLEAR_UDRF USART_ICR_UDRCF
441 #endif /* USART_CR2_SLVEN */
442 #if defined(USART_CR1_FIFOEN)
443 #define USART_CLEAR_TXFECF USART_ICR_TXFECF
444 #endif /* USART_CR1_FIFOEN */
445 
452 #define USART_IT_MASK 0x001FU
453 #define USART_CR_MASK 0x00E0U
454 #define USART_CR_POS 5U
455 #define USART_ISR_MASK 0x1F00U
456 #define USART_ISR_POS 8U
465 /* Exported macros -----------------------------------------------------------*/
466 
474 #if (USE_HAL_USART_REGISTER_CALLBACKS == 1)
475 #define __HAL_USART_RESET_HANDLE_STATE(__HANDLE__) do{ \
476  (__HANDLE__)->State = HAL_USART_STATE_RESET; \
477  (__HANDLE__)->MspInitCallback = NULL; \
478  (__HANDLE__)->MspDeInitCallback = NULL; \
479  } while(0U)
480 #else
481 #define __HAL_USART_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_USART_STATE_RESET)
482 #endif /* USE_HAL_USART_REGISTER_CALLBACKS */
483 
508 #define __HAL_USART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__))
509 
524 #define __HAL_USART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
525 
530 #define __HAL_USART_CLEAR_PEFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_PEF)
531 
536 #define __HAL_USART_CLEAR_FEFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_FEF)
537 
542 #define __HAL_USART_CLEAR_NEFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_NEF)
543 
548 #define __HAL_USART_CLEAR_OREFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_OREF)
549 
554 #define __HAL_USART_CLEAR_IDLEFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_IDLEF)
555 
556 #if defined(USART_CR1_FIFOEN)
557 
561 #define __HAL_USART_CLEAR_TXFECF(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_TXFECF)
562 #endif /* USART_CR1_FIFOEN */
563 
564 #if defined(USART_CR2_SLVEN)
565 
569 #define __HAL_USART_CLEAR_UDRFLAG(__HANDLE__) __HAL_USART_CLEAR_FLAG((__HANDLE__), USART_CLEAR_UDRF)
570 #endif /* USART_CR2_SLVEN */
571 
590 #define __HAL_USART_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((((__INTERRUPT__) & USART_CR_MASK) >> USART_CR_POS) == 1U)? ((__HANDLE__)->Instance->CR1 |= ((uint32_t)1U << ((__INTERRUPT__) & USART_IT_MASK))): \
591  ((((__INTERRUPT__) & USART_CR_MASK) >> USART_CR_POS) == 2U)? ((__HANDLE__)->Instance->CR2 |= ((uint32_t)1U << ((__INTERRUPT__) & USART_IT_MASK))): \
592  ((__HANDLE__)->Instance->CR3 |= ((uint32_t)1U << ((__INTERRUPT__) & USART_IT_MASK))))
593 
612 #define __HAL_USART_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((((__INTERRUPT__) & USART_CR_MASK) >> USART_CR_POS) == 1U)? ((__HANDLE__)->Instance->CR1 &= ~ ((uint32_t)1U << ((__INTERRUPT__) & USART_IT_MASK))): \
613  ((((__INTERRUPT__) & USART_CR_MASK) >> USART_CR_POS) == 2U)? ((__HANDLE__)->Instance->CR2 &= ~ ((uint32_t)1U << ((__INTERRUPT__) & USART_IT_MASK))): \
614  ((__HANDLE__)->Instance->CR3 &= ~ ((uint32_t)1U << ((__INTERRUPT__) & USART_IT_MASK))))
615 
616 
637 #define __HAL_USART_GET_IT(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISR\
638  & ((uint32_t)0x01U << (((__INTERRUPT__) & USART_ISR_MASK)>> USART_ISR_POS))) != 0U) ? SET : RESET)
639 
660 #define __HAL_USART_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((((uint8_t)(__INTERRUPT__)) >> 0x05U) == 0x01U) ? (__HANDLE__)->Instance->CR1 : \
661  (((((uint8_t)(__INTERRUPT__)) >> 0x05U) == 0x02U) ? (__HANDLE__)->Instance->CR2 : \
662  (__HANDLE__)->Instance->CR3)) & (0x01U << (((uint16_t)(__INTERRUPT__)) & USART_IT_MASK))) != 0U) ? SET : RESET)
663 
664 
679 #define __HAL_USART_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR = (uint32_t)(__IT_CLEAR__))
680 
690 #define __HAL_USART_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__))
691 
696 #define __HAL_USART_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT)
697 
702 #define __HAL_USART_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= ~USART_CR3_ONEBIT)
703 
708 #define __HAL_USART_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE)
709 
714 #define __HAL_USART_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE)
715 
720 /* Private macros --------------------------------------------------------*/
725 #if defined(USART_PRESC_PRESCALER)
726 
730 #define USART_GET_DIV_FACTOR(__CLOCKPRESCALER__) \
731  (((__CLOCKPRESCALER__) == USART_PRESCALER_DIV1) ? 1U : \
732  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV2) ? 2U : \
733  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV4) ? 4U : \
734  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV6) ? 6U : \
735  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV8) ? 8U : \
736  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV10) ? 10U : \
737  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV12) ? 12U : \
738  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV16) ? 16U : \
739  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV32) ? 32U : \
740  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV64) ? 64U : \
741  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV128) ? 128U : \
742  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV256) ? 256U : 1U)
743 
750 #define USART_DIV_SAMPLING8(__PCLK__, __BAUD__, __CLOCKPRESCALER__) (((((__PCLK__)/USART_GET_DIV_FACTOR(__CLOCKPRESCALER__))*2U)\
751  + ((__BAUD__)/2U)) / (__BAUD__))
752 #else
753 
758 #define USART_DIV_SAMPLING8(__PCLK__, __BAUD__) ((((__PCLK__)*2U) + ((__BAUD__)/2U)) / (__BAUD__))
759 #endif /* USART_PRESC_PRESCALER */
760 
768 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx)
769 #define IS_USART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) <= 15000000U)
770 #else
771 #define IS_USART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) <= 10000000U)
772 #endif /* STM32L4R5xx || STM32L4R7xx || STM32L4R9xx || STM32L4S5xx || STM32L4S7xx || STM32L4S9xx */
773 
779 #define IS_USART_STOPBITS(__STOPBITS__) (((__STOPBITS__) == USART_STOPBITS_0_5) || \
780  ((__STOPBITS__) == USART_STOPBITS_1) || \
781  ((__STOPBITS__) == USART_STOPBITS_1_5) || \
782  ((__STOPBITS__) == USART_STOPBITS_2))
783 
789 #define IS_USART_PARITY(__PARITY__) (((__PARITY__) == USART_PARITY_NONE) || \
790  ((__PARITY__) == USART_PARITY_EVEN) || \
791  ((__PARITY__) == USART_PARITY_ODD))
792 
798 #define IS_USART_MODE(__MODE__) ((((__MODE__) & 0xFFFFFFF3U) == 0x00U) && ((__MODE__) != 0x00U))
799 
805 #define IS_USART_OVERSAMPLING(__SAMPLING__) (((__SAMPLING__) == USART_OVERSAMPLING_16) || \
806  ((__SAMPLING__) == USART_OVERSAMPLING_8))
807 
813 #define IS_USART_CLOCK(__CLOCK__) (((__CLOCK__) == USART_CLOCK_DISABLE) || \
814  ((__CLOCK__) == USART_CLOCK_ENABLE))
815 
821 #define IS_USART_POLARITY(__CPOL__) (((__CPOL__) == USART_POLARITY_LOW) || ((__CPOL__) == USART_POLARITY_HIGH))
822 
828 #define IS_USART_PHASE(__CPHA__) (((__CPHA__) == USART_PHASE_1EDGE) || ((__CPHA__) == USART_PHASE_2EDGE))
829 
835 #define IS_USART_LASTBIT(__LASTBIT__) (((__LASTBIT__) == USART_LASTBIT_DISABLE) || \
836  ((__LASTBIT__) == USART_LASTBIT_ENABLE))
837 
843 #define IS_USART_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == USART_RXDATA_FLUSH_REQUEST) || \
844  ((__PARAM__) == USART_TXDATA_FLUSH_REQUEST))
845 
846 #if defined(USART_PRESC_PRESCALER)
847 
852 #define IS_USART_PRESCALER(__CLOCKPRESCALER__) (((__CLOCKPRESCALER__) == USART_PRESCALER_DIV1) || \
853  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV2) || \
854  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV4) || \
855  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV6) || \
856  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV8) || \
857  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV10) || \
858  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV12) || \
859  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV16) || \
860  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV32) || \
861  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV64) || \
862  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV128) || \
863  ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV256))
864 
865 #endif /* USART_PRESC_PRESCALER */
866 
870 /* Include USART HAL Extended module */
871 #include "stm32l4xx_hal_usart_ex.h"
872 
873 /* Exported functions --------------------------------------------------------*/
882 /* Initialization and de-initialization functions ****************************/
883 HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart);
884 HAL_StatusTypeDef HAL_USART_DeInit(USART_HandleTypeDef *husart);
887 
888 /* Callbacks Register/UnRegister functions ***********************************/
889 #if (USE_HAL_USART_REGISTER_CALLBACKS == 1)
890 HAL_StatusTypeDef HAL_USART_RegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTypeDef CallbackID,
891  pUSART_CallbackTypeDef pCallback);
892 HAL_StatusTypeDef HAL_USART_UnRegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTypeDef CallbackID);
893 #endif /* USE_HAL_USART_REGISTER_CALLBACKS */
894 
903 /* IO operation functions *****************************************************/
904 HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size, uint32_t Timeout);
905 HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
906 HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData,
907  uint16_t Size, uint32_t Timeout);
908 HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size);
909 HAL_StatusTypeDef HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size);
910 HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData,
911  uint16_t Size);
912 HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size);
913 HAL_StatusTypeDef HAL_USART_Receive_DMA(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size);
914 HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData,
915  uint16_t Size);
916 HAL_StatusTypeDef HAL_USART_DMAPause(USART_HandleTypeDef *husart);
917 HAL_StatusTypeDef HAL_USART_DMAResume(USART_HandleTypeDef *husart);
918 HAL_StatusTypeDef HAL_USART_DMAStop(USART_HandleTypeDef *husart);
919 /* Transfer Abort functions */
920 HAL_StatusTypeDef HAL_USART_Abort(USART_HandleTypeDef *husart);
921 HAL_StatusTypeDef HAL_USART_Abort_IT(USART_HandleTypeDef *husart);
922 
931 
940 /* Peripheral State and Error functions ***************************************/
941 HAL_USART_StateTypeDef HAL_USART_GetState(USART_HandleTypeDef *husart);
942 uint32_t HAL_USART_GetError(USART_HandleTypeDef *husart);
943 
960 #ifdef __cplusplus
961 }
962 #endif
963 
964 #endif /* STM32L4xx_HAL_USART_H */
965 
966 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)
Receive an amount of data in blocking mode.
__IO HAL_USART_StateTypeDef State
void HAL_USART_IRQHandler(USART_HandleTypeDef *husart)
Handle USART interrupt request.
USART_ClockSourceTypeDef
USART clock sources definitions.
struct __USART_HandleTypeDef USART_HandleTypeDef
USART handle Structure definition.
void(* MspDeInitCallback)(struct __USART_HandleTypeDef *husart)
DMA handle Structure definition.
HAL_USART_CallbackIDTypeDef
HAL USART Callback ID enumeration definition.
void(* TxFifoEmptyCallback)(struct __USART_HandleTypeDef *husart)
HAL_USART_StateTypeDef HAL_USART_GetState(USART_HandleTypeDef *husart)
Return the USART handle state.
void HAL_USART_MspInit(USART_HandleTypeDef *husart)
Initialize the USART MSP.
void(* TxHalfCpltCallback)(struct __USART_HandleTypeDef *husart)
void HAL_USART_TxHalfCpltCallback(USART_HandleTypeDef *husart)
Tx Half Transfer completed callback.
HAL_StatusTypeDef HAL_USART_Abort_IT(USART_HandleTypeDef *husart)
Abort ongoing transfers (Interrupt mode).
HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart)
Initialize the USART mode according to the specified parameters in the USART_InitTypeDef and initiali...
HAL_StatusTypeDef HAL_USART_DMAStop(USART_HandleTypeDef *husart)
Stop the DMA Transfer.
HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size)
Send an amount of data in DMA mode.
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size)
Receive an amount of data in interrupt mode.
HAL_StatusTypeDef HAL_USART_Abort(USART_HandleTypeDef *husart)
Abort ongoing transfers (blocking mode).
uint32_t HAL_USART_GetError(USART_HandleTypeDef *husart)
Return the USART error code.
HAL_USART_StateTypeDef
HAL USART State structures definition.
void(* TxISR)(struct __USART_HandleTypeDef *husart)
HAL_StatusTypeDef HAL_USART_UnRegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTypeDef CallbackID)
Unregister an UART Callback UART callaback is redirected to the weak predefined callback.
void HAL_USART_RxCpltCallback(USART_HandleTypeDef *husart)
Rx Transfer completed callback.
Header file of USART HAL Extended module.
void HAL_USART_TxCpltCallback(USART_HandleTypeDef *husart)
Tx Transfer completed callback.
HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)
Full-Duplex Send and Receive an amount of data in blocking mode.
void(* ErrorCallback)(struct __USART_HandleTypeDef *husart)
void(* RxHalfCpltCallback)(struct __USART_HandleTypeDef *husart)
void(* pUSART_CallbackTypeDef)(USART_HandleTypeDef *husart)
HAL USART Callback pointer definition.
HAL_StatusTypeDef HAL_USART_DeInit(USART_HandleTypeDef *husart)
DeInitialize the USART peripheral.
HAL_StatusTypeDef HAL_USART_Receive_DMA(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size)
Receive an amount of data in DMA mode.
HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
Full-Duplex Transmit Receive an amount of data in non-blocking mode.
DMA_HandleTypeDef * hdmatx
USART handle Structure definition.
void HAL_USART_RxHalfCpltCallback(USART_HandleTypeDef *husart)
Rx Half Transfer completed callback.
HAL_StatusTypeDef HAL_USART_DMAResume(USART_HandleTypeDef *husart)
Resume the DMA Transfer.
void(* RxCpltCallback)(struct __USART_HandleTypeDef *husart)
USART Init Structure definition.
HAL_LockTypeDef
HAL Lock structures definition.
HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size, uint32_t Timeout)
Simplex send an amount of data in blocking mode.
void(* MspInitCallback)(struct __USART_HandleTypeDef *husart)
void(* RxISR)(struct __USART_HandleTypeDef *husart)
HAL_StatusTypeDef HAL_USART_DMAPause(USART_HandleTypeDef *husart)
Pause the DMA Transfer.
void(* RxFifoFullCallback)(struct __USART_HandleTypeDef *husart)
HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
Full-Duplex Send and Receive an amount of data in interrupt mode.
void HAL_USART_AbortCpltCallback(USART_HandleTypeDef *husart)
USART Abort Complete callback.
void HAL_USART_ErrorCallback(USART_HandleTypeDef *husart)
USART error callback.
void HAL_USART_TxRxCpltCallback(USART_HandleTypeDef *husart)
Tx/Rx Transfers completed callback for the non-blocking process.
DMA_HandleTypeDef * hdmarx
void(* TxRxCpltCallback)(struct __USART_HandleTypeDef *husart)
void(* AbortCpltCallback)(struct __USART_HandleTypeDef *husart)
HAL_StatusTypeDef HAL_USART_RegisterCallback(USART_HandleTypeDef *husart, HAL_USART_CallbackIDTypeDef CallbackID, pUSART_CallbackTypeDef pCallback)
Register a User USART Callback To be used instead of the weak predefined callback.
HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size)
Send an amount of data in interrupt mode.
void(* TxCpltCallback)(struct __USART_HandleTypeDef *husart)
void HAL_USART_MspDeInit(USART_HandleTypeDef *husart)
DeInitialize the USART MSP.