21 #ifndef STM32L4xx_HAL_UART_H 22 #define STM32L4xx_HAL_UART_H 92 #if defined(USART_PRESC_PRESCALER) 219 #if defined(USART_CR1_FIFOEN) 247 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 257 #if defined(USART_CR1_FIFOEN) 268 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 283 #if defined(USART_CR1_FIFOEN) 312 #define HAL_UART_STATE_RESET 0x00000000U 314 #define HAL_UART_STATE_READY 0x00000020U 316 #define HAL_UART_STATE_BUSY 0x00000024U 318 #define HAL_UART_STATE_BUSY_TX 0x00000021U 320 #define HAL_UART_STATE_BUSY_RX 0x00000022U 322 #define HAL_UART_STATE_BUSY_TX_RX 0x00000023U 325 #define HAL_UART_STATE_TIMEOUT 0x000000A0U 327 #define HAL_UART_STATE_ERROR 0x000000E0U 336 #define HAL_UART_ERROR_NONE ((uint32_t)0x00000000U) 337 #define HAL_UART_ERROR_PE ((uint32_t)0x00000001U) 338 #define HAL_UART_ERROR_NE ((uint32_t)0x00000002U) 339 #define HAL_UART_ERROR_FE ((uint32_t)0x00000004U) 340 #define HAL_UART_ERROR_ORE ((uint32_t)0x00000008U) 341 #define HAL_UART_ERROR_DMA ((uint32_t)0x00000010U) 342 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 343 #define HAL_UART_ERROR_INVALID_CALLBACK ((uint32_t)0x00000020U) 352 #define UART_STOPBITS_0_5 USART_CR2_STOP_0 353 #define UART_STOPBITS_1 0x00000000U 354 #define UART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1) 355 #define UART_STOPBITS_2 USART_CR2_STOP_1 363 #define UART_PARITY_NONE 0x00000000U 364 #define UART_PARITY_EVEN USART_CR1_PCE 365 #define UART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS) 373 #define UART_HWCONTROL_NONE 0x00000000U 374 #define UART_HWCONTROL_RTS USART_CR3_RTSE 375 #define UART_HWCONTROL_CTS USART_CR3_CTSE 376 #define UART_HWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE) 384 #define UART_MODE_RX USART_CR1_RE 385 #define UART_MODE_TX USART_CR1_TE 386 #define UART_MODE_TX_RX (USART_CR1_TE |USART_CR1_RE) 394 #define UART_STATE_DISABLE 0x00000000U 395 #define UART_STATE_ENABLE USART_CR1_UE 403 #define UART_OVERSAMPLING_16 0x00000000U 404 #define UART_OVERSAMPLING_8 USART_CR1_OVER8 412 #define UART_ONE_BIT_SAMPLE_DISABLE 0x00000000U 413 #define UART_ONE_BIT_SAMPLE_ENABLE USART_CR3_ONEBIT 418 #if defined(USART_PRESC_PRESCALER) 422 #define UART_PRESCALER_DIV1 0x00000000U 423 #define UART_PRESCALER_DIV2 0x00000001U 424 #define UART_PRESCALER_DIV4 0x00000002U 425 #define UART_PRESCALER_DIV6 0x00000003U 426 #define UART_PRESCALER_DIV8 0x00000004U 427 #define UART_PRESCALER_DIV10 0x00000005U 428 #define UART_PRESCALER_DIV12 0x00000006U 429 #define UART_PRESCALER_DIV16 0x00000007U 430 #define UART_PRESCALER_DIV32 0x00000008U 431 #define UART_PRESCALER_DIV64 0x00000009U 432 #define UART_PRESCALER_DIV128 0x0000000AU 433 #define UART_PRESCALER_DIV256 0x0000000BU 442 #define UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT 0x00000000U 443 #define UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE USART_CR2_ABRMODE_0 444 #define UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME USART_CR2_ABRMODE_1 445 #define UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME USART_CR2_ABRMODE 453 #define UART_RECEIVER_TIMEOUT_DISABLE 0x00000000U 454 #define UART_RECEIVER_TIMEOUT_ENABLE USART_CR2_RTOEN 462 #define UART_LIN_DISABLE 0x00000000U 463 #define UART_LIN_ENABLE USART_CR2_LINEN 471 #define UART_LINBREAKDETECTLENGTH_10B 0x00000000U 472 #define UART_LINBREAKDETECTLENGTH_11B USART_CR2_LBDL 480 #define UART_DMA_TX_DISABLE 0x00000000U 481 #define UART_DMA_TX_ENABLE USART_CR3_DMAT 489 #define UART_DMA_RX_DISABLE 0x00000000U 490 #define UART_DMA_RX_ENABLE USART_CR3_DMAR 498 #define UART_HALF_DUPLEX_DISABLE 0x00000000U 499 #define UART_HALF_DUPLEX_ENABLE USART_CR3_HDSEL 507 #define UART_WAKEUPMETHOD_IDLELINE 0x00000000U 508 #define UART_WAKEUPMETHOD_ADDRESSMARK USART_CR1_WAKE 516 #define UART_AUTOBAUD_REQUEST USART_RQR_ABRRQ 517 #define UART_SENDBREAK_REQUEST USART_RQR_SBKRQ 518 #define UART_MUTE_MODE_REQUEST USART_RQR_MMRQ 519 #define UART_RXDATA_FLUSH_REQUEST USART_RQR_RXFRQ 520 #define UART_TXDATA_FLUSH_REQUEST USART_RQR_TXFRQ 528 #define UART_ADVFEATURE_NO_INIT 0x00000000U 529 #define UART_ADVFEATURE_TXINVERT_INIT 0x00000001U 530 #define UART_ADVFEATURE_RXINVERT_INIT 0x00000002U 531 #define UART_ADVFEATURE_DATAINVERT_INIT 0x00000004U 532 #define UART_ADVFEATURE_SWAP_INIT 0x00000008U 533 #define UART_ADVFEATURE_RXOVERRUNDISABLE_INIT 0x00000010U 534 #define UART_ADVFEATURE_DMADISABLEONERROR_INIT 0x00000020U 535 #define UART_ADVFEATURE_AUTOBAUDRATE_INIT 0x00000040U 536 #define UART_ADVFEATURE_MSBFIRST_INIT 0x00000080U 544 #define UART_ADVFEATURE_TXINV_DISABLE 0x00000000U 545 #define UART_ADVFEATURE_TXINV_ENABLE USART_CR2_TXINV 553 #define UART_ADVFEATURE_RXINV_DISABLE 0x00000000U 554 #define UART_ADVFEATURE_RXINV_ENABLE USART_CR2_RXINV 562 #define UART_ADVFEATURE_DATAINV_DISABLE 0x00000000U 563 #define UART_ADVFEATURE_DATAINV_ENABLE USART_CR2_DATAINV 571 #define UART_ADVFEATURE_SWAP_DISABLE 0x00000000U 572 #define UART_ADVFEATURE_SWAP_ENABLE USART_CR2_SWAP 580 #define UART_ADVFEATURE_OVERRUN_ENABLE 0x00000000U 581 #define UART_ADVFEATURE_OVERRUN_DISABLE USART_CR3_OVRDIS 589 #define UART_ADVFEATURE_AUTOBAUDRATE_DISABLE 0x00000000U 590 #define UART_ADVFEATURE_AUTOBAUDRATE_ENABLE USART_CR2_ABREN 598 #define UART_ADVFEATURE_DMA_ENABLEONRXERROR 0x00000000U 599 #define UART_ADVFEATURE_DMA_DISABLEONRXERROR USART_CR3_DDRE 607 #define UART_ADVFEATURE_MSBFIRST_DISABLE 0x00000000U 608 #define UART_ADVFEATURE_MSBFIRST_ENABLE USART_CR2_MSBFIRST 616 #define UART_ADVFEATURE_STOPMODE_DISABLE 0x00000000U 617 #define UART_ADVFEATURE_STOPMODE_ENABLE USART_CR1_UESM 625 #define UART_ADVFEATURE_MUTEMODE_DISABLE 0x00000000U 626 #define UART_ADVFEATURE_MUTEMODE_ENABLE USART_CR1_MME 634 #define UART_CR2_ADDRESS_LSB_POS 24U 642 #define UART_WAKEUP_ON_ADDRESS 0x00000000U 643 #define UART_WAKEUP_ON_STARTBIT USART_CR3_WUS_1 644 #define UART_WAKEUP_ON_READDATA_NONEMPTY USART_CR3_WUS 652 #define UART_DE_POLARITY_HIGH 0x00000000U 653 #define UART_DE_POLARITY_LOW USART_CR3_DEP 661 #define UART_CR1_DEAT_ADDRESS_LSB_POS 21U 669 #define UART_CR1_DEDT_ADDRESS_LSB_POS 16U 677 #define UART_IT_MASK 0x001FU 685 #define HAL_UART_TIMEOUT_VALUE 0x1FFFFFFU 695 #if defined(USART_CR1_FIFOEN) 696 #define UART_FLAG_TXFT USART_ISR_TXFT 697 #define UART_FLAG_RXFT USART_ISR_RXFT 698 #define UART_FLAG_RXFF USART_ISR_RXFF 699 #define UART_FLAG_TXFE USART_ISR_TXFE 701 #define UART_FLAG_REACK USART_ISR_REACK 702 #define UART_FLAG_TEACK USART_ISR_TEACK 703 #define UART_FLAG_WUF USART_ISR_WUF 704 #define UART_FLAG_RWU USART_ISR_RWU 705 #define UART_FLAG_SBKF USART_ISR_SBKF 706 #define UART_FLAG_CMF USART_ISR_CMF 707 #define UART_FLAG_BUSY USART_ISR_BUSY 708 #define UART_FLAG_ABRF USART_ISR_ABRF 709 #define UART_FLAG_ABRE USART_ISR_ABRE 710 #define UART_FLAG_CTS USART_ISR_CTS 711 #define UART_FLAG_CTSIF USART_ISR_CTSIF 712 #define UART_FLAG_LBDF USART_ISR_LBDF 713 #if defined(USART_CR1_FIFOEN) 714 #define UART_FLAG_TXE USART_ISR_TXE_TXFNF 715 #define UART_FLAG_TXFNF USART_ISR_TXE_TXFNF 717 #define UART_FLAG_TXE USART_ISR_TXE 719 #define UART_FLAG_TC USART_ISR_TC 720 #if defined(USART_CR1_FIFOEN) 721 #define UART_FLAG_RXNE USART_ISR_RXNE_RXFNE 722 #define UART_FLAG_RXFNE USART_ISR_RXNE_RXFNE 724 #define UART_FLAG_RXNE USART_ISR_RXNE 726 #define UART_FLAG_IDLE USART_ISR_IDLE 727 #define UART_FLAG_ORE USART_ISR_ORE 728 #define UART_FLAG_NE USART_ISR_NE 729 #define UART_FLAG_FE USART_ISR_FE 730 #define UART_FLAG_PE USART_ISR_PE 753 #define UART_IT_PE 0x0028U 754 #define UART_IT_TXE 0x0727U 755 #if defined(USART_CR1_FIFOEN) 756 #define UART_IT_TXFNF 0x0727U 758 #define UART_IT_TC 0x0626U 759 #define UART_IT_RXNE 0x0525U 760 #if defined(USART_CR1_FIFOEN) 761 #define UART_IT_RXFNE 0x0525U 763 #define UART_IT_IDLE 0x0424U 764 #define UART_IT_LBD 0x0846U 765 #define UART_IT_CTS 0x096AU 766 #define UART_IT_CM 0x112EU 767 #define UART_IT_WUF 0x1476U 768 #if defined(USART_CR1_FIFOEN) 769 #define UART_IT_RXFF 0x183FU 770 #define UART_IT_TXFE 0x173EU 771 #define UART_IT_RXFT 0x1A7CU 772 #define UART_IT_TXFT 0x1B77U 775 #define UART_IT_ERR 0x0060U 777 #define UART_IT_ORE 0x0300U 778 #define UART_IT_NE 0x0200U 779 #define UART_IT_FE 0x0100U 787 #define UART_CLEAR_PEF USART_ICR_PECF 788 #define UART_CLEAR_FEF USART_ICR_FECF 789 #define UART_CLEAR_NEF USART_ICR_NECF 790 #define UART_CLEAR_OREF USART_ICR_ORECF 791 #define UART_CLEAR_IDLEF USART_ICR_IDLECF 792 #if defined(USART_CR1_FIFOEN) 793 #define UART_CLEAR_TXFECF USART_ICR_TXFECF 795 #define UART_CLEAR_TCF USART_ICR_TCCF 796 #define UART_CLEAR_LBDF USART_ICR_LBDCF 797 #define UART_CLEAR_CTSF USART_ICR_CTSCF 798 #define UART_CLEAR_CMF USART_ICR_CMCF 799 #define UART_CLEAR_WUF USART_ICR_WUCF 818 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 819 #define __HAL_UART_RESET_HANDLE_STATE(__HANDLE__) do{ \ 820 (__HANDLE__)->gState = HAL_UART_STATE_RESET; \ 821 (__HANDLE__)->RxState = HAL_UART_STATE_RESET; \ 822 (__HANDLE__)->MspInitCallback = NULL; \ 823 (__HANDLE__)->MspDeInitCallback = NULL; \ 826 #define __HAL_UART_RESET_HANDLE_STATE(__HANDLE__) do{ \ 827 (__HANDLE__)->gState = HAL_UART_STATE_RESET; \ 828 (__HANDLE__)->RxState = HAL_UART_STATE_RESET; \ 836 #define __HAL_UART_FLUSH_DRREGISTER(__HANDLE__) \ 838 SET_BIT((__HANDLE__)->Instance->RQR, UART_RXDATA_FLUSH_REQUEST); \ 839 SET_BIT((__HANDLE__)->Instance->RQR, UART_TXDATA_FLUSH_REQUEST); \ 859 #define __HAL_UART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__)) 865 #define __HAL_UART_CLEAR_PEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_PEF) 871 #define __HAL_UART_CLEAR_FEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_FEF) 877 #define __HAL_UART_CLEAR_NEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_NEF) 883 #define __HAL_UART_CLEAR_OREFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_OREF) 889 #define __HAL_UART_CLEAR_IDLEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_IDLEF) 891 #if defined(USART_CR1_FIFOEN) 896 #define __HAL_UART_CLEAR_TXFECF(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_TXFECF) 930 #define __HAL_UART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__)) 954 #define __HAL_UART_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U)? ((__HANDLE__)->Instance->CR1 |= (1U << ((__INTERRUPT__) & UART_IT_MASK))): \ 955 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U)? ((__HANDLE__)->Instance->CR2 |= (1U << ((__INTERRUPT__) & UART_IT_MASK))): \ 956 ((__HANDLE__)->Instance->CR3 |= (1U << ((__INTERRUPT__) & UART_IT_MASK)))) 981 #define __HAL_UART_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U)? ((__HANDLE__)->Instance->CR1 &= ~ (1U << ((__INTERRUPT__) & UART_IT_MASK))): \ 982 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U)? ((__HANDLE__)->Instance->CR2 &= ~ (1U << ((__INTERRUPT__) & UART_IT_MASK))): \ 983 ((__HANDLE__)->Instance->CR3 &= ~ (1U << ((__INTERRUPT__) & UART_IT_MASK)))) 1007 #define __HAL_UART_GET_IT(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISR\ 1008 & (1U << ((__INTERRUPT__)>> 8U))) != RESET) ? SET : RESET) 1032 #define __HAL_UART_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U) ? (__HANDLE__)->Instance->CR1 : \ 1033 (((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U) ? (__HANDLE__)->Instance->CR2 : \ 1034 (__HANDLE__)->Instance->CR3)) & (1U << (((uint16_t)(__INTERRUPT__)) & UART_IT_MASK))) != RESET) ? SET : RESET) 1054 #define __HAL_UART_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR = (uint32_t)(__IT_CLEAR__)) 1067 #define __HAL_UART_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__)) 1073 #define __HAL_UART_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT) 1079 #define __HAL_UART_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= ~USART_CR3_ONEBIT) 1085 #define __HAL_UART_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE) 1091 #define __HAL_UART_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE) 1105 #define __HAL_UART_HWCONTROL_CTS_ENABLE(__HANDLE__) \ 1107 SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \ 1108 (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_CTSE; \ 1123 #define __HAL_UART_HWCONTROL_CTS_DISABLE(__HANDLE__) \ 1125 CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \ 1126 (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_CTSE); \ 1141 #define __HAL_UART_HWCONTROL_RTS_ENABLE(__HANDLE__) \ 1143 SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE); \ 1144 (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_RTSE; \ 1159 #define __HAL_UART_HWCONTROL_RTS_DISABLE(__HANDLE__) \ 1161 CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE);\ 1162 (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_RTSE); \ 1172 #if defined(USART_PRESC_PRESCALER) 1177 #define UART_GET_DIV_FACTOR(__CLOCKPRESCALER__) \ 1178 (((__CLOCKPRESCALER__) == UART_PRESCALER_DIV1) ? 1U : \ 1179 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV2) ? 2U : \ 1180 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV4) ? 4U : \ 1181 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV6) ? 6U : \ 1182 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV8) ? 8U : \ 1183 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV10) ? 10U : \ 1184 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV12) ? 12U : \ 1185 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV16) ? 16U : \ 1186 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV32) ? 32U : \ 1187 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV64) ? 64U : \ 1188 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV128) ? 128U : \ 1189 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV256) ? 256U : 1U) 1197 #define UART_DIV_LPUART(__PCLK__, __BAUD__, __CLOCKPRESCALER__) ((uint32_t)(((((uint64_t)(__PCLK__)/UART_GET_DIV_FACTOR((__CLOCKPRESCALER__)))*256U)\ 1198 + (uint32_t)((__BAUD__)/2U)) / (__BAUD__))) 1206 #define UART_DIV_SAMPLING8(__PCLK__, __BAUD__, __CLOCKPRESCALER__) (((((__PCLK__)/UART_GET_DIV_FACTOR((__CLOCKPRESCALER__)))*2U)\ 1207 + ((__BAUD__)/2U)) / (__BAUD__)) 1215 #define UART_DIV_SAMPLING16(__PCLK__, __BAUD__, __CLOCKPRESCALER__) ((((__PCLK__)/UART_GET_DIV_FACTOR((__CLOCKPRESCALER__)))\ 1216 + ((__BAUD__)/2U)) / (__BAUD__)) 1224 #define UART_DIV_LPUART(__PCLK__, __BAUD__) (((((uint64_t)(__PCLK__)*256U)) + ((__BAUD__)/2U)) / (__BAUD__)) 1231 #define UART_DIV_SAMPLING8(__PCLK__, __BAUD__) ((((__PCLK__)*2U) + ((__BAUD__)/2U)) / (__BAUD__)) 1238 #define UART_DIV_SAMPLING16(__PCLK__, __BAUD__) (((__PCLK__) + ((__BAUD__)/2U)) / (__BAUD__)) 1245 #define UART_INSTANCE_LOWPOWER(__HANDLE__) (IS_LPUART_INSTANCE((__HANDLE__)->Instance)) 1254 #if defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) 1255 #define IS_UART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 15000001U) 1257 #define IS_UART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 10000001U) 1264 #define IS_UART_ASSERTIONTIME(__TIME__) ((__TIME__) <= 0x1FU) 1270 #define IS_UART_DEASSERTIONTIME(__TIME__) ((__TIME__) <= 0x1FU) 1277 #define IS_UART_STOPBITS(__STOPBITS__) (((__STOPBITS__) == UART_STOPBITS_0_5) || \ 1278 ((__STOPBITS__) == UART_STOPBITS_1) || \ 1279 ((__STOPBITS__) == UART_STOPBITS_1_5) || \ 1280 ((__STOPBITS__) == UART_STOPBITS_2)) 1287 #define IS_LPUART_STOPBITS(__STOPBITS__) (((__STOPBITS__) == UART_STOPBITS_1) || \ 1288 ((__STOPBITS__) == UART_STOPBITS_2)) 1295 #define IS_UART_PARITY(__PARITY__) (((__PARITY__) == UART_PARITY_NONE) || \ 1296 ((__PARITY__) == UART_PARITY_EVEN) || \ 1297 ((__PARITY__) == UART_PARITY_ODD)) 1304 #define IS_UART_HARDWARE_FLOW_CONTROL(__CONTROL__)\ 1305 (((__CONTROL__) == UART_HWCONTROL_NONE) || \ 1306 ((__CONTROL__) == UART_HWCONTROL_RTS) || \ 1307 ((__CONTROL__) == UART_HWCONTROL_CTS) || \ 1308 ((__CONTROL__) == UART_HWCONTROL_RTS_CTS)) 1315 #define IS_UART_MODE(__MODE__) ((((__MODE__) & (~((uint32_t)(UART_MODE_TX_RX)))) == 0x00U) && ((__MODE__) != 0x00U)) 1322 #define IS_UART_STATE(__STATE__) (((__STATE__) == UART_STATE_DISABLE) || \ 1323 ((__STATE__) == UART_STATE_ENABLE)) 1330 #define IS_UART_OVERSAMPLING(__SAMPLING__) (((__SAMPLING__) == UART_OVERSAMPLING_16) || \ 1331 ((__SAMPLING__) == UART_OVERSAMPLING_8)) 1338 #define IS_UART_ONE_BIT_SAMPLE(__ONEBIT__) (((__ONEBIT__) == UART_ONE_BIT_SAMPLE_DISABLE) || \ 1339 ((__ONEBIT__) == UART_ONE_BIT_SAMPLE_ENABLE)) 1346 #define IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(__MODE__) (((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT) || \ 1347 ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE) || \ 1348 ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME) || \ 1349 ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME)) 1356 #define IS_UART_RECEIVER_TIMEOUT(__TIMEOUT__) (((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_DISABLE) || \ 1357 ((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_ENABLE)) 1364 #define IS_UART_LIN(__LIN__) (((__LIN__) == UART_LIN_DISABLE) || \ 1365 ((__LIN__) == UART_LIN_ENABLE)) 1372 #define IS_UART_LIN_BREAK_DETECT_LENGTH(__LENGTH__) (((__LENGTH__) == UART_LINBREAKDETECTLENGTH_10B) || \ 1373 ((__LENGTH__) == UART_LINBREAKDETECTLENGTH_11B)) 1380 #define IS_UART_DMA_TX(__DMATX__) (((__DMATX__) == UART_DMA_TX_DISABLE) || \ 1381 ((__DMATX__) == UART_DMA_TX_ENABLE)) 1388 #define IS_UART_DMA_RX(__DMARX__) (((__DMARX__) == UART_DMA_RX_DISABLE) || \ 1389 ((__DMARX__) == UART_DMA_RX_ENABLE)) 1396 #define IS_UART_HALF_DUPLEX(__HDSEL__) (((__HDSEL__) == UART_HALF_DUPLEX_DISABLE) || \ 1397 ((__HDSEL__) == UART_HALF_DUPLEX_ENABLE)) 1404 #define IS_UART_WAKEUPMETHOD(__WAKEUP__) (((__WAKEUP__) == UART_WAKEUPMETHOD_IDLELINE) || \ 1405 ((__WAKEUP__) == UART_WAKEUPMETHOD_ADDRESSMARK)) 1412 #define IS_UART_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == UART_AUTOBAUD_REQUEST) || \ 1413 ((__PARAM__) == UART_SENDBREAK_REQUEST) || \ 1414 ((__PARAM__) == UART_MUTE_MODE_REQUEST) || \ 1415 ((__PARAM__) == UART_RXDATA_FLUSH_REQUEST) || \ 1416 ((__PARAM__) == UART_TXDATA_FLUSH_REQUEST)) 1423 #define IS_UART_ADVFEATURE_INIT(__INIT__) ((__INIT__) <= (UART_ADVFEATURE_NO_INIT | \ 1424 UART_ADVFEATURE_TXINVERT_INIT | \ 1425 UART_ADVFEATURE_RXINVERT_INIT | \ 1426 UART_ADVFEATURE_DATAINVERT_INIT | \ 1427 UART_ADVFEATURE_SWAP_INIT | \ 1428 UART_ADVFEATURE_RXOVERRUNDISABLE_INIT | \ 1429 UART_ADVFEATURE_DMADISABLEONERROR_INIT | \ 1430 UART_ADVFEATURE_AUTOBAUDRATE_INIT | \ 1431 UART_ADVFEATURE_MSBFIRST_INIT)) 1438 #define IS_UART_ADVFEATURE_TXINV(__TXINV__) (((__TXINV__) == UART_ADVFEATURE_TXINV_DISABLE) || \ 1439 ((__TXINV__) == UART_ADVFEATURE_TXINV_ENABLE)) 1446 #define IS_UART_ADVFEATURE_RXINV(__RXINV__) (((__RXINV__) == UART_ADVFEATURE_RXINV_DISABLE) || \ 1447 ((__RXINV__) == UART_ADVFEATURE_RXINV_ENABLE)) 1454 #define IS_UART_ADVFEATURE_DATAINV(__DATAINV__) (((__DATAINV__) == UART_ADVFEATURE_DATAINV_DISABLE) || \ 1455 ((__DATAINV__) == UART_ADVFEATURE_DATAINV_ENABLE)) 1462 #define IS_UART_ADVFEATURE_SWAP(__SWAP__) (((__SWAP__) == UART_ADVFEATURE_SWAP_DISABLE) || \ 1463 ((__SWAP__) == UART_ADVFEATURE_SWAP_ENABLE)) 1470 #define IS_UART_OVERRUN(__OVERRUN__) (((__OVERRUN__) == UART_ADVFEATURE_OVERRUN_ENABLE) || \ 1471 ((__OVERRUN__) == UART_ADVFEATURE_OVERRUN_DISABLE)) 1478 #define IS_UART_ADVFEATURE_AUTOBAUDRATE(__AUTOBAUDRATE__) (((__AUTOBAUDRATE__) == UART_ADVFEATURE_AUTOBAUDRATE_DISABLE) || \ 1479 ((__AUTOBAUDRATE__) == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE)) 1486 #define IS_UART_ADVFEATURE_DMAONRXERROR(__DMA__) (((__DMA__) == UART_ADVFEATURE_DMA_ENABLEONRXERROR) || \ 1487 ((__DMA__) == UART_ADVFEATURE_DMA_DISABLEONRXERROR)) 1494 #define IS_UART_ADVFEATURE_MSBFIRST(__MSBFIRST__) (((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_DISABLE) || \ 1495 ((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_ENABLE)) 1502 #define IS_UART_ADVFEATURE_STOPMODE(__STOPMODE__) (((__STOPMODE__) == UART_ADVFEATURE_STOPMODE_DISABLE) || \ 1503 ((__STOPMODE__) == UART_ADVFEATURE_STOPMODE_ENABLE)) 1510 #define IS_UART_MUTE_MODE(__MUTE__) (((__MUTE__) == UART_ADVFEATURE_MUTEMODE_DISABLE) || \ 1511 ((__MUTE__) == UART_ADVFEATURE_MUTEMODE_ENABLE)) 1518 #define IS_UART_WAKEUP_SELECTION(__WAKE__) (((__WAKE__) == UART_WAKEUP_ON_ADDRESS) || \ 1519 ((__WAKE__) == UART_WAKEUP_ON_STARTBIT) || \ 1520 ((__WAKE__) == UART_WAKEUP_ON_READDATA_NONEMPTY)) 1527 #define IS_UART_DE_POLARITY(__POLARITY__) (((__POLARITY__) == UART_DE_POLARITY_HIGH) || \ 1528 ((__POLARITY__) == UART_DE_POLARITY_LOW)) 1530 #if defined(USART_PRESC_PRESCALER) 1536 #define IS_UART_PRESCALER(__CLOCKPRESCALER__) (((__CLOCKPRESCALER__) == UART_PRESCALER_DIV1) || \ 1537 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV2) || \ 1538 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV4) || \ 1539 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV6) || \ 1540 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV8) || \ 1541 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV10) || \ 1542 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV12) || \ 1543 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV16) || \ 1544 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV32) || \ 1545 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV64) || \ 1546 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV128) || \ 1547 ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV256)) 1577 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 1659 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 1665 uint32_t Tickstart, uint32_t Timeout);
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Receive an amount of data in DMA mode.
void(* TxFifoEmptyCallback)(struct __UART_HandleTypeDef *huart)
void(* TxISR)(struct __UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t WakeUpMethod)
Initialize the multiprocessor mode according to the specified parameters in the UART_InitTypeDef and ...
UART handle Structure definition.
__IO HAL_UART_StateTypeDef RxState
void(* RxCpltCallback)(struct __UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_RegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID, pUART_CallbackTypeDef pCallback)
Register a User UART Callback To be used instead of the weak predefined callback. ...
uint32_t AutoBaudRateMode
DMA handle Structure definition.
void(* RxHalfCpltCallback)(struct __UART_HandleTypeDef *huart)
uint16_t NbTxDataToProcess
uint16_t NbRxDataToProcess
DMA_HandleTypeDef * hdmarx
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Send an amount of data in blocking mode.
uint32_t RxPinLevelInvert
HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart)
Enable UART in mute mode (does not mean UART enters mute mode; to enter mute mode, HAL_MultiProcessor_EnterMuteMode() API must be called).
uint32_t DMADisableonRxError
uint32_t HAL_UART_StateTypeDef
HAL UART State definition.
HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
Check the UART Idle State.
HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart)
Abort ongoing Receive transfer (blocking mode).
HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart)
Transmit break characters.
void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart)
Tx Half Transfer completed callback.
UART Init Structure definition.
This file contains HAL common defines, enumeration, macros and structures definitions.
void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart)
UART Abort Complete callback.
HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart)
Abort ongoing Receive transfer (Interrupt mode).
void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)
Configure the UART peripheral advanced features.
__IO uint16_t TxXferCount
UART_ClockSourceTypeDef
UART clock sources definition.
void(* WakeupCallback)(struct __UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
Initialize the UART mode according to the specified parameters in the UART_InitTypeDef and initialize...
void(* pUART_CallbackTypeDef)(UART_HandleTypeDef *huart)
HAL UART Callback pointer definition.
Header file of UART HAL Extended module.
struct __UART_HandleTypeDef UART_HandleTypeDef
UART handle Structure definition.
void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)
UART Abort Receive Complete callback.
HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart)
Abort ongoing Transmit transfer (blocking mode).
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
Handle UART interrupt request.
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Receive an amount of data in blocking mode.
HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart)
Abort ongoing Transmit transfer (Interrupt mode).
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
Initialize the UART MSP.
HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart)
Pause the DMA Transfer.
HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart)
Resume the DMA Transfer.
HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart)
Return the UART handle state.
HAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID)
Unregister an UART Callback UART callaback is redirected to the weak predefined callback.
HAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart)
Disable UART mute mode (does not mean the UART actually exits mute mode as it may not have been in mu...
HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart)
Enable the UART receiver and disable the UART transmitter.
HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart)
Initialize the half-duplex mode according to the specified parameters in the UART_InitTypeDef and cre...
HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart)
Stop the DMA Transfer.
void(* TxCpltCallback)(struct __UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart)
Enable the UART transmitter and disable the UART receiver.
void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
Rx Half Transfer completed callback.
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
Rx Transfer completed callback.
uint32_t TxPinLevelInvert
__IO uint16_t RxXferCount
void(* RxISR)(struct __UART_HandleTypeDef *huart)
void(* TxHalfCpltCallback)(struct __UART_HandleTypeDef *huart)
DMA_HandleTypeDef * hdmatx
HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart)
DeInitialize the UART peripheral.
UART_AdvFeatureInitTypeDef AdvancedInit
HAL_LockTypeDef
HAL Lock structures definition.
void(* MspInitCallback)(struct __UART_HandleTypeDef *huart)
void(* ErrorCallback)(struct __UART_HandleTypeDef *huart)
uint32_t HAL_UART_GetError(UART_HandleTypeDef *huart)
Return the UART handle error code.
void UART_InitCallbacksToDefault(UART_HandleTypeDef *huart)
Initialize the callbacks to their default values.
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Send an amount of data in interrupt mode.
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Receive an amount of data in interrupt mode.
void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)
DeInitialize the UART MSP.
void HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart)
UART Abort Complete callback.
HAL_UART_CallbackIDTypeDef
HAL UART Callback ID enumeration definition.
HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart)
Abort ongoing transfers (blocking mode).
HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
Handle UART Communication Timeout.
void(* RxFifoFullCallback)(struct __UART_HandleTypeDef *huart)
UART Advanced Features initialization structure definition.
HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart)
Abort ongoing transfers (Interrupt mode).
void(* AbortCpltCallback)(struct __UART_HandleTypeDef *huart)
uint32_t AutoBaudRateEnable
void HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart)
Enter UART mute mode (means UART actually enters mute mode).
void(* MspDeInitCallback)(struct __UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength)
Initialize the LIN mode according to the specified parameters in the UART_InitTypeDef and creates the...
void(* AbortTransmitCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* AbortReceiveCpltCallback)(struct __UART_HandleTypeDef *huart)
HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
Configure the UART peripheral.
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
Tx Transfer completed callback.
__IO HAL_UART_StateTypeDef gState
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Send an amount of data in DMA mode.
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
UART error callback.