Go to the documentation of this file.
21 #ifndef STM32H7xx_HAL_UART_H
22 #define STM32H7xx_HAL_UART_H
85 uint32_t OverSampling;
88 uint32_t OneBitSampling;
92 uint32_t ClockPrescaler;
102 uint32_t AdvFeatureInit;
106 uint32_t TxPinLevelInvert;
109 uint32_t RxPinLevelInvert;
119 uint32_t OverrunDisable;
122 uint32_t DMADisableonRxError;
125 uint32_t AutoBaudRateEnable;
128 uint32_t AutoBaudRateMode;
244 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
263 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
269 HAL_UART_TX_HALFCOMPLETE_CB_ID = 0x00U,
270 HAL_UART_TX_COMPLETE_CB_ID = 0x01U,
271 HAL_UART_RX_HALFCOMPLETE_CB_ID = 0x02U,
272 HAL_UART_RX_COMPLETE_CB_ID = 0x03U,
273 HAL_UART_ERROR_CB_ID = 0x04U,
274 HAL_UART_ABORT_COMPLETE_CB_ID = 0x05U,
275 HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID = 0x06U,
276 HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID = 0x07U,
277 HAL_UART_WAKEUP_CB_ID = 0x08U,
278 HAL_UART_RX_FIFO_FULL_CB_ID = 0x09U,
279 HAL_UART_TX_FIFO_EMPTY_CB_ID = 0x0AU,
281 HAL_UART_MSPINIT_CB_ID = 0x0BU,
282 HAL_UART_MSPDEINIT_CB_ID = 0x0CU
284 } HAL_UART_CallbackIDTypeDef;
305 #define HAL_UART_STATE_RESET 0x00000000U
307 #define HAL_UART_STATE_READY 0x00000020U
309 #define HAL_UART_STATE_BUSY 0x00000024U
311 #define HAL_UART_STATE_BUSY_TX 0x00000021U
313 #define HAL_UART_STATE_BUSY_RX 0x00000022U
315 #define HAL_UART_STATE_BUSY_TX_RX 0x00000023U
318 #define HAL_UART_STATE_TIMEOUT 0x000000A0U
320 #define HAL_UART_STATE_ERROR 0x000000E0U
329 #define HAL_UART_ERROR_NONE ((uint32_t)0x00000000U)
330 #define HAL_UART_ERROR_PE ((uint32_t)0x00000001U)
331 #define HAL_UART_ERROR_NE ((uint32_t)0x00000002U)
332 #define HAL_UART_ERROR_FE ((uint32_t)0x00000004U)
333 #define HAL_UART_ERROR_ORE ((uint32_t)0x00000008U)
334 #define HAL_UART_ERROR_DMA ((uint32_t)0x00000010U)
335 #define HAL_UART_ERROR_RTO ((uint32_t)0x00000020U)
337 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
338 #define HAL_UART_ERROR_INVALID_CALLBACK ((uint32_t)0x00000040U)
347 #define UART_STOPBITS_0_5 USART_CR2_STOP_0
348 #define UART_STOPBITS_1 0x00000000U
349 #define UART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1)
350 #define UART_STOPBITS_2 USART_CR2_STOP_1
358 #define UART_PARITY_NONE 0x00000000U
359 #define UART_PARITY_EVEN USART_CR1_PCE
360 #define UART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS)
368 #define UART_HWCONTROL_NONE 0x00000000U
369 #define UART_HWCONTROL_RTS USART_CR3_RTSE
370 #define UART_HWCONTROL_CTS USART_CR3_CTSE
371 #define UART_HWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE)
379 #define UART_MODE_RX USART_CR1_RE
380 #define UART_MODE_TX USART_CR1_TE
381 #define UART_MODE_TX_RX (USART_CR1_TE |USART_CR1_RE)
389 #define UART_STATE_DISABLE 0x00000000U
390 #define UART_STATE_ENABLE USART_CR1_UE
398 #define UART_OVERSAMPLING_16 0x00000000U
399 #define UART_OVERSAMPLING_8 USART_CR1_OVER8
407 #define UART_ONE_BIT_SAMPLE_DISABLE 0x00000000U
408 #define UART_ONE_BIT_SAMPLE_ENABLE USART_CR3_ONEBIT
416 #define UART_PRESCALER_DIV1 0x00000000U
417 #define UART_PRESCALER_DIV2 0x00000001U
418 #define UART_PRESCALER_DIV4 0x00000002U
419 #define UART_PRESCALER_DIV6 0x00000003U
420 #define UART_PRESCALER_DIV8 0x00000004U
421 #define UART_PRESCALER_DIV10 0x00000005U
422 #define UART_PRESCALER_DIV12 0x00000006U
423 #define UART_PRESCALER_DIV16 0x00000007U
424 #define UART_PRESCALER_DIV32 0x00000008U
425 #define UART_PRESCALER_DIV64 0x00000009U
426 #define UART_PRESCALER_DIV128 0x0000000AU
427 #define UART_PRESCALER_DIV256 0x0000000BU
435 #define UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT 0x00000000U
436 #define UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE USART_CR2_ABRMODE_0
437 #define UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME USART_CR2_ABRMODE_1
438 #define UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME USART_CR2_ABRMODE
446 #define UART_RECEIVER_TIMEOUT_DISABLE 0x00000000U
447 #define UART_RECEIVER_TIMEOUT_ENABLE USART_CR2_RTOEN
455 #define UART_LIN_DISABLE 0x00000000U
456 #define UART_LIN_ENABLE USART_CR2_LINEN
464 #define UART_LINBREAKDETECTLENGTH_10B 0x00000000U
465 #define UART_LINBREAKDETECTLENGTH_11B USART_CR2_LBDL
473 #define UART_DMA_TX_DISABLE 0x00000000U
474 #define UART_DMA_TX_ENABLE USART_CR3_DMAT
482 #define UART_DMA_RX_DISABLE 0x00000000U
483 #define UART_DMA_RX_ENABLE USART_CR3_DMAR
491 #define UART_HALF_DUPLEX_DISABLE 0x00000000U
492 #define UART_HALF_DUPLEX_ENABLE USART_CR3_HDSEL
500 #define UART_WAKEUPMETHOD_IDLELINE 0x00000000U
501 #define UART_WAKEUPMETHOD_ADDRESSMARK USART_CR1_WAKE
509 #define UART_AUTOBAUD_REQUEST USART_RQR_ABRRQ
510 #define UART_SENDBREAK_REQUEST USART_RQR_SBKRQ
511 #define UART_MUTE_MODE_REQUEST USART_RQR_MMRQ
512 #define UART_RXDATA_FLUSH_REQUEST USART_RQR_RXFRQ
513 #define UART_TXDATA_FLUSH_REQUEST USART_RQR_TXFRQ
521 #define UART_ADVFEATURE_NO_INIT 0x00000000U
522 #define UART_ADVFEATURE_TXINVERT_INIT 0x00000001U
523 #define UART_ADVFEATURE_RXINVERT_INIT 0x00000002U
524 #define UART_ADVFEATURE_DATAINVERT_INIT 0x00000004U
525 #define UART_ADVFEATURE_SWAP_INIT 0x00000008U
526 #define UART_ADVFEATURE_RXOVERRUNDISABLE_INIT 0x00000010U
527 #define UART_ADVFEATURE_DMADISABLEONERROR_INIT 0x00000020U
528 #define UART_ADVFEATURE_AUTOBAUDRATE_INIT 0x00000040U
529 #define UART_ADVFEATURE_MSBFIRST_INIT 0x00000080U
537 #define UART_ADVFEATURE_TXINV_DISABLE 0x00000000U
538 #define UART_ADVFEATURE_TXINV_ENABLE USART_CR2_TXINV
546 #define UART_ADVFEATURE_RXINV_DISABLE 0x00000000U
547 #define UART_ADVFEATURE_RXINV_ENABLE USART_CR2_RXINV
555 #define UART_ADVFEATURE_DATAINV_DISABLE 0x00000000U
556 #define UART_ADVFEATURE_DATAINV_ENABLE USART_CR2_DATAINV
564 #define UART_ADVFEATURE_SWAP_DISABLE 0x00000000U
565 #define UART_ADVFEATURE_SWAP_ENABLE USART_CR2_SWAP
573 #define UART_ADVFEATURE_OVERRUN_ENABLE 0x00000000U
574 #define UART_ADVFEATURE_OVERRUN_DISABLE USART_CR3_OVRDIS
582 #define UART_ADVFEATURE_AUTOBAUDRATE_DISABLE 0x00000000U
583 #define UART_ADVFEATURE_AUTOBAUDRATE_ENABLE USART_CR2_ABREN
591 #define UART_ADVFEATURE_DMA_ENABLEONRXERROR 0x00000000U
592 #define UART_ADVFEATURE_DMA_DISABLEONRXERROR USART_CR3_DDRE
600 #define UART_ADVFEATURE_MSBFIRST_DISABLE 0x00000000U
601 #define UART_ADVFEATURE_MSBFIRST_ENABLE USART_CR2_MSBFIRST
609 #define UART_ADVFEATURE_STOPMODE_DISABLE 0x00000000U
610 #define UART_ADVFEATURE_STOPMODE_ENABLE USART_CR1_UESM
618 #define UART_ADVFEATURE_MUTEMODE_DISABLE 0x00000000U
619 #define UART_ADVFEATURE_MUTEMODE_ENABLE USART_CR1_MME
627 #define UART_CR2_ADDRESS_LSB_POS 24U
635 #define UART_WAKEUP_ON_ADDRESS 0x00000000U
636 #define UART_WAKEUP_ON_STARTBIT USART_CR3_WUS_1
637 #define UART_WAKEUP_ON_READDATA_NONEMPTY USART_CR3_WUS
645 #define UART_DE_POLARITY_HIGH 0x00000000U
646 #define UART_DE_POLARITY_LOW USART_CR3_DEP
654 #define UART_CR1_DEAT_ADDRESS_LSB_POS 21U
662 #define UART_CR1_DEDT_ADDRESS_LSB_POS 16U
670 #define UART_IT_MASK 0x001FU
678 #define HAL_UART_TIMEOUT_VALUE 0x1FFFFFFU
688 #define UART_FLAG_TXFT USART_ISR_TXFT
689 #define UART_FLAG_RXFT USART_ISR_RXFT
690 #define UART_FLAG_RXFF USART_ISR_RXFF
691 #define UART_FLAG_TXFE USART_ISR_TXFE
692 #define UART_FLAG_REACK USART_ISR_REACK
693 #define UART_FLAG_TEACK USART_ISR_TEACK
694 #define UART_FLAG_WUF USART_ISR_WUF
695 #define UART_FLAG_RWU USART_ISR_RWU
696 #define UART_FLAG_SBKF USART_ISR_SBKF
697 #define UART_FLAG_CMF USART_ISR_CMF
698 #define UART_FLAG_BUSY USART_ISR_BUSY
699 #define UART_FLAG_ABRF USART_ISR_ABRF
700 #define UART_FLAG_ABRE USART_ISR_ABRE
701 #define UART_FLAG_RTOF USART_ISR_RTOF
702 #define UART_FLAG_CTS USART_ISR_CTS
703 #define UART_FLAG_CTSIF USART_ISR_CTSIF
704 #define UART_FLAG_LBDF USART_ISR_LBDF
705 #define UART_FLAG_TXE USART_ISR_TXE_TXFNF
706 #define UART_FLAG_TXFNF USART_ISR_TXE_TXFNF
707 #define UART_FLAG_TC USART_ISR_TC
708 #define UART_FLAG_RXNE USART_ISR_RXNE_RXFNE
709 #define UART_FLAG_RXFNE USART_ISR_RXNE_RXFNE
710 #define UART_FLAG_IDLE USART_ISR_IDLE
711 #define UART_FLAG_ORE USART_ISR_ORE
712 #define UART_FLAG_NE USART_ISR_NE
713 #define UART_FLAG_FE USART_ISR_FE
714 #define UART_FLAG_PE USART_ISR_PE
737 #define UART_IT_PE 0x0028U
738 #define UART_IT_TXE 0x0727U
739 #define UART_IT_TXFNF 0x0727U
740 #define UART_IT_TC 0x0626U
741 #define UART_IT_RXNE 0x0525U
742 #define UART_IT_RXFNE 0x0525U
743 #define UART_IT_IDLE 0x0424U
744 #define UART_IT_LBD 0x0846U
745 #define UART_IT_CTS 0x096AU
746 #define UART_IT_CM 0x112EU
747 #define UART_IT_WUF 0x1476U
748 #define UART_IT_RXFF 0x183FU
749 #define UART_IT_TXFE 0x173EU
750 #define UART_IT_RXFT 0x1A7CU
751 #define UART_IT_TXFT 0x1B77U
752 #define UART_IT_RTO 0x0B3AU
754 #define UART_IT_ERR 0x0060U
756 #define UART_IT_ORE 0x0300U
757 #define UART_IT_NE 0x0200U
758 #define UART_IT_FE 0x0100U
766 #define UART_CLEAR_PEF USART_ICR_PECF
767 #define UART_CLEAR_FEF USART_ICR_FECF
768 #define UART_CLEAR_NEF USART_ICR_NECF
769 #define UART_CLEAR_OREF USART_ICR_ORECF
770 #define UART_CLEAR_IDLEF USART_ICR_IDLECF
771 #define UART_CLEAR_TXFECF USART_ICR_TXFECF
772 #define UART_CLEAR_TCF USART_ICR_TCCF
773 #define UART_CLEAR_LBDF USART_ICR_LBDCF
774 #define UART_CLEAR_CTSF USART_ICR_CTSCF
775 #define UART_CLEAR_CMF USART_ICR_CMCF
776 #define UART_CLEAR_WUF USART_ICR_WUCF
777 #define UART_CLEAR_RTOF USART_ICR_RTOCF
796 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
797 #define __HAL_UART_RESET_HANDLE_STATE(__HANDLE__) do{ \
798 (__HANDLE__)->gState = HAL_UART_STATE_RESET; \
799 (__HANDLE__)->RxState = HAL_UART_STATE_RESET; \
800 (__HANDLE__)->MspInitCallback = NULL; \
801 (__HANDLE__)->MspDeInitCallback = NULL; \
804 #define __HAL_UART_RESET_HANDLE_STATE(__HANDLE__) do{ \
805 (__HANDLE__)->gState = HAL_UART_STATE_RESET; \
806 (__HANDLE__)->RxState = HAL_UART_STATE_RESET; \
814 #define __HAL_UART_FLUSH_DRREGISTER(__HANDLE__) \
816 SET_BIT((__HANDLE__)->Instance->RQR, UART_RXDATA_FLUSH_REQUEST); \
817 SET_BIT((__HANDLE__)->Instance->RQR, UART_TXDATA_FLUSH_REQUEST); \
838 #define __HAL_UART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
844 #define __HAL_UART_CLEAR_PEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_PEF)
850 #define __HAL_UART_CLEAR_FEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_FEF)
856 #define __HAL_UART_CLEAR_NEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_NEF)
862 #define __HAL_UART_CLEAR_OREFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_OREF)
868 #define __HAL_UART_CLEAR_IDLEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_IDLEF)
874 #define __HAL_UART_CLEAR_TXFECF(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_TXFECF)
908 #define __HAL_UART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__))
933 #define __HAL_UART_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U)? ((__HANDLE__)->Instance->CR1 |= (1U << ((__INTERRUPT__) & UART_IT_MASK))): \
934 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U)? ((__HANDLE__)->Instance->CR2 |= (1U << ((__INTERRUPT__) & UART_IT_MASK))): \
935 ((__HANDLE__)->Instance->CR3 |= (1U << ((__INTERRUPT__) & UART_IT_MASK))))
961 #define __HAL_UART_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U)? ((__HANDLE__)->Instance->CR1 &= ~ (1U << ((__INTERRUPT__) & UART_IT_MASK))): \
962 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U)? ((__HANDLE__)->Instance->CR2 &= ~ (1U << ((__INTERRUPT__) & UART_IT_MASK))): \
963 ((__HANDLE__)->Instance->CR3 &= ~ (1U << ((__INTERRUPT__) & UART_IT_MASK))))
988 #define __HAL_UART_GET_IT(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISR\
989 & (1U << ((__INTERRUPT__)>> 8U))) != RESET) ? SET : RESET)
1014 #define __HAL_UART_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U) ? (__HANDLE__)->Instance->CR1 : \
1015 (((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U) ? (__HANDLE__)->Instance->CR2 : \
1016 (__HANDLE__)->Instance->CR3)) & (1U << (((uint16_t)(__INTERRUPT__)) & UART_IT_MASK))) != RESET) ? SET : RESET)
1037 #define __HAL_UART_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR = (uint32_t)(__IT_CLEAR__))
1050 #define __HAL_UART_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__))
1056 #define __HAL_UART_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT)
1062 #define __HAL_UART_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= ~USART_CR3_ONEBIT)
1068 #define __HAL_UART_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE)
1074 #define __HAL_UART_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE)
1088 #define __HAL_UART_HWCONTROL_CTS_ENABLE(__HANDLE__) \
1090 SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \
1091 (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_CTSE; \
1106 #define __HAL_UART_HWCONTROL_CTS_DISABLE(__HANDLE__) \
1108 CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \
1109 (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_CTSE); \
1124 #define __HAL_UART_HWCONTROL_RTS_ENABLE(__HANDLE__) \
1126 SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE); \
1127 (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_RTSE; \
1142 #define __HAL_UART_HWCONTROL_RTS_DISABLE(__HANDLE__) \
1144 CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE);\
1145 (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_RTSE); \
1159 #define UART_GET_DIV_FACTOR(__CLOCKPRESCALER__) \
1160 (((__CLOCKPRESCALER__) == UART_PRESCALER_DIV1) ? 1U : \
1161 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV2) ? 2U : \
1162 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV4) ? 4U : \
1163 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV6) ? 6U : \
1164 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV8) ? 8U : \
1165 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV10) ? 10U : \
1166 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV12) ? 12U : \
1167 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV16) ? 16U : \
1168 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV32) ? 32U : \
1169 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV64) ? 64U : \
1170 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV128) ? 128U : \
1171 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV256) ? 256U : 1U)
1180 #define UART_DIV_LPUART(__PCLK__, __BAUD__, __CLOCKPRESCALER__) ((uint32_t)((((((uint64_t)(__PCLK__))/(UARTPrescTable[(__CLOCKPRESCALER__)]))*256U)\
1181 + (uint32_t)((__BAUD__)/2U)) / (__BAUD__)))
1189 #define UART_DIV_SAMPLING8(__PCLK__, __BAUD__, __CLOCKPRESCALER__) (((((__PCLK__)/UARTPrescTable[(__CLOCKPRESCALER__)])*2U)\
1190 + ((__BAUD__)/2U)) / (__BAUD__))
1198 #define UART_DIV_SAMPLING16(__PCLK__, __BAUD__, __CLOCKPRESCALER__) ((((__PCLK__)/UARTPrescTable[(__CLOCKPRESCALER__)])\
1199 + ((__BAUD__)/2U)) / (__BAUD__))
1205 #define UART_INSTANCE_LOWPOWER(__HANDLE__) (IS_LPUART_INSTANCE((__HANDLE__)->Instance))
1213 #define IS_UART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 12500001U)
1219 #define IS_UART_ASSERTIONTIME(__TIME__) ((__TIME__) <= 0x1FU)
1225 #define IS_UART_DEASSERTIONTIME(__TIME__) ((__TIME__) <= 0x1FU)
1232 #define IS_UART_STOPBITS(__STOPBITS__) (((__STOPBITS__) == UART_STOPBITS_0_5) || \
1233 ((__STOPBITS__) == UART_STOPBITS_1) || \
1234 ((__STOPBITS__) == UART_STOPBITS_1_5) || \
1235 ((__STOPBITS__) == UART_STOPBITS_2))
1242 #define IS_LPUART_STOPBITS(__STOPBITS__) (((__STOPBITS__) == UART_STOPBITS_1) || \
1243 ((__STOPBITS__) == UART_STOPBITS_2))
1250 #define IS_UART_PARITY(__PARITY__) (((__PARITY__) == UART_PARITY_NONE) || \
1251 ((__PARITY__) == UART_PARITY_EVEN) || \
1252 ((__PARITY__) == UART_PARITY_ODD))
1259 #define IS_UART_HARDWARE_FLOW_CONTROL(__CONTROL__)\
1260 (((__CONTROL__) == UART_HWCONTROL_NONE) || \
1261 ((__CONTROL__) == UART_HWCONTROL_RTS) || \
1262 ((__CONTROL__) == UART_HWCONTROL_CTS) || \
1263 ((__CONTROL__) == UART_HWCONTROL_RTS_CTS))
1270 #define IS_UART_MODE(__MODE__) ((((__MODE__) & (~((uint32_t)(UART_MODE_TX_RX)))) == 0x00U) && ((__MODE__) != 0x00U))
1277 #define IS_UART_STATE(__STATE__) (((__STATE__) == UART_STATE_DISABLE) || \
1278 ((__STATE__) == UART_STATE_ENABLE))
1285 #define IS_UART_OVERSAMPLING(__SAMPLING__) (((__SAMPLING__) == UART_OVERSAMPLING_16) || \
1286 ((__SAMPLING__) == UART_OVERSAMPLING_8))
1293 #define IS_UART_ONE_BIT_SAMPLE(__ONEBIT__) (((__ONEBIT__) == UART_ONE_BIT_SAMPLE_DISABLE) || \
1294 ((__ONEBIT__) == UART_ONE_BIT_SAMPLE_ENABLE))
1301 #define IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(__MODE__) (((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT) || \
1302 ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE) || \
1303 ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME) || \
1304 ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME))
1311 #define IS_UART_RECEIVER_TIMEOUT(__TIMEOUT__) (((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_DISABLE) || \
1312 ((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_ENABLE))
1319 #define IS_UART_RECEIVER_TIMEOUT_VALUE(__TIMEOUTVALUE__) ((__TIMEOUTVALUE__) <= 0xFFFFFFU)
1326 #define IS_UART_LIN(__LIN__) (((__LIN__) == UART_LIN_DISABLE) || \
1327 ((__LIN__) == UART_LIN_ENABLE))
1334 #define IS_UART_LIN_BREAK_DETECT_LENGTH(__LENGTH__) (((__LENGTH__) == UART_LINBREAKDETECTLENGTH_10B) || \
1335 ((__LENGTH__) == UART_LINBREAKDETECTLENGTH_11B))
1342 #define IS_UART_DMA_TX(__DMATX__) (((__DMATX__) == UART_DMA_TX_DISABLE) || \
1343 ((__DMATX__) == UART_DMA_TX_ENABLE))
1350 #define IS_UART_DMA_RX(__DMARX__) (((__DMARX__) == UART_DMA_RX_DISABLE) || \
1351 ((__DMARX__) == UART_DMA_RX_ENABLE))
1358 #define IS_UART_HALF_DUPLEX(__HDSEL__) (((__HDSEL__) == UART_HALF_DUPLEX_DISABLE) || \
1359 ((__HDSEL__) == UART_HALF_DUPLEX_ENABLE))
1366 #define IS_UART_WAKEUPMETHOD(__WAKEUP__) (((__WAKEUP__) == UART_WAKEUPMETHOD_IDLELINE) || \
1367 ((__WAKEUP__) == UART_WAKEUPMETHOD_ADDRESSMARK))
1374 #define IS_UART_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == UART_AUTOBAUD_REQUEST) || \
1375 ((__PARAM__) == UART_SENDBREAK_REQUEST) || \
1376 ((__PARAM__) == UART_MUTE_MODE_REQUEST) || \
1377 ((__PARAM__) == UART_RXDATA_FLUSH_REQUEST) || \
1378 ((__PARAM__) == UART_TXDATA_FLUSH_REQUEST))
1385 #define IS_UART_ADVFEATURE_INIT(__INIT__) ((__INIT__) <= (UART_ADVFEATURE_NO_INIT | \
1386 UART_ADVFEATURE_TXINVERT_INIT | \
1387 UART_ADVFEATURE_RXINVERT_INIT | \
1388 UART_ADVFEATURE_DATAINVERT_INIT | \
1389 UART_ADVFEATURE_SWAP_INIT | \
1390 UART_ADVFEATURE_RXOVERRUNDISABLE_INIT | \
1391 UART_ADVFEATURE_DMADISABLEONERROR_INIT | \
1392 UART_ADVFEATURE_AUTOBAUDRATE_INIT | \
1393 UART_ADVFEATURE_MSBFIRST_INIT))
1400 #define IS_UART_ADVFEATURE_TXINV(__TXINV__) (((__TXINV__) == UART_ADVFEATURE_TXINV_DISABLE) || \
1401 ((__TXINV__) == UART_ADVFEATURE_TXINV_ENABLE))
1408 #define IS_UART_ADVFEATURE_RXINV(__RXINV__) (((__RXINV__) == UART_ADVFEATURE_RXINV_DISABLE) || \
1409 ((__RXINV__) == UART_ADVFEATURE_RXINV_ENABLE))
1416 #define IS_UART_ADVFEATURE_DATAINV(__DATAINV__) (((__DATAINV__) == UART_ADVFEATURE_DATAINV_DISABLE) || \
1417 ((__DATAINV__) == UART_ADVFEATURE_DATAINV_ENABLE))
1424 #define IS_UART_ADVFEATURE_SWAP(__SWAP__) (((__SWAP__) == UART_ADVFEATURE_SWAP_DISABLE) || \
1425 ((__SWAP__) == UART_ADVFEATURE_SWAP_ENABLE))
1432 #define IS_UART_OVERRUN(__OVERRUN__) (((__OVERRUN__) == UART_ADVFEATURE_OVERRUN_ENABLE) || \
1433 ((__OVERRUN__) == UART_ADVFEATURE_OVERRUN_DISABLE))
1440 #define IS_UART_ADVFEATURE_AUTOBAUDRATE(__AUTOBAUDRATE__) (((__AUTOBAUDRATE__) == UART_ADVFEATURE_AUTOBAUDRATE_DISABLE) || \
1441 ((__AUTOBAUDRATE__) == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE))
1448 #define IS_UART_ADVFEATURE_DMAONRXERROR(__DMA__) (((__DMA__) == UART_ADVFEATURE_DMA_ENABLEONRXERROR) || \
1449 ((__DMA__) == UART_ADVFEATURE_DMA_DISABLEONRXERROR))
1456 #define IS_UART_ADVFEATURE_MSBFIRST(__MSBFIRST__) (((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_DISABLE) || \
1457 ((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_ENABLE))
1464 #define IS_UART_ADVFEATURE_STOPMODE(__STOPMODE__) (((__STOPMODE__) == UART_ADVFEATURE_STOPMODE_DISABLE) || \
1465 ((__STOPMODE__) == UART_ADVFEATURE_STOPMODE_ENABLE))
1472 #define IS_UART_MUTE_MODE(__MUTE__) (((__MUTE__) == UART_ADVFEATURE_MUTEMODE_DISABLE) || \
1473 ((__MUTE__) == UART_ADVFEATURE_MUTEMODE_ENABLE))
1480 #define IS_UART_WAKEUP_SELECTION(__WAKE__) (((__WAKE__) == UART_WAKEUP_ON_ADDRESS) || \
1481 ((__WAKE__) == UART_WAKEUP_ON_STARTBIT) || \
1482 ((__WAKE__) == UART_WAKEUP_ON_READDATA_NONEMPTY))
1489 #define IS_UART_DE_POLARITY(__POLARITY__) (((__POLARITY__) == UART_DE_POLARITY_HIGH) || \
1490 ((__POLARITY__) == UART_DE_POLARITY_LOW))
1497 #define IS_UART_PRESCALER(__CLOCKPRESCALER__) (((__CLOCKPRESCALER__) == UART_PRESCALER_DIV1) || \
1498 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV2) || \
1499 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV4) || \
1500 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV6) || \
1501 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV8) || \
1502 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV10) || \
1503 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV12) || \
1504 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV16) || \
1505 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV32) || \
1506 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV64) || \
1507 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV128) || \
1508 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV256))
1542 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
1544 pUART_CallbackTypeDef pCallback);
1628 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
1634 uint32_t Tickstart, uint32_t Timeout);
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
void(* TxISR)(struct __UART_HandleTypeDef *huart)
HAL_StatusTypeDef
HAL Status structures definition
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
HAL_UART_StateTypeDef
HAL UART State structures definition.
uint16_t NbRxDataToProcess
HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart)
Universal Synchronous Asynchronous Receiver Transmitter.
uint16_t NbTxDataToProcess
HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
DMA handle Structure definition.
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
@ UART_CLOCKSOURCE_UNDEFINED
__IO uint16_t TxXferCount
HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart)
void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart)
UART handle Structure definition.
HAL_StatusTypeDef HAL_UART_DisableReceiverTimeout(UART_HandleTypeDef *huart)
HAL_LockTypeDef
HAL Lock structures definition
HAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart)
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
UART MSP Initialization This function configures the hardware resources used in this example.
void HAL_UART_ReceiverTimeout_Config(UART_HandleTypeDef *huart, uint32_t TimeoutValue)
HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart)
UART Init Structure definition.
HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
UART Advanced Features initialization structure definition.
void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
DMA_HandleTypeDef * hdmatx
HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_EnableReceiverTimeout(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart)
struct __UART_HandleTypeDef UART_HandleTypeDef
UART handle Structure definition.
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
@ UART_CLOCKSOURCE_D3PCLK1
__IO HAL_UART_StateTypeDef RxState
Header file of UART HAL Extended module.
const uint16_t UARTPrescTable[12]
UART_AdvFeatureInitTypeDef AdvancedInit
UART_ClockSourceTypeDef
UART clock sources definition.
void(* RxISR)(struct __UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
@ UART_CLOCKSOURCE_D2PCLK1
__IO HAL_UART_StateTypeDef gState
DMA_HandleTypeDef * hdmarx
HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart)
HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t WakeUpMethod)
HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength)
void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart)
void HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart)
void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart)
@ UART_CLOCKSOURCE_D2PCLK2
uint32_t HAL_UART_StateTypeDef
HAL UART State definition.
void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart)
__IO uint16_t RxXferCount
void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)
UART MSP De-Initialization This function freeze the hardware resources used in this example.
HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart)
uint32_t HAL_UART_GetError(UART_HandleTypeDef *huart)