173#ifdef HAL_UART_MODULE_ENABLED
180#define USART_CR1_FIELDS ((uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | USART_CR1_TE | USART_CR1_RE | \
181 USART_CR1_OVER8 | USART_CR1_FIFOEN))
183#define USART_CR3_FIELDS ((uint32_t)(USART_CR3_RTSE | USART_CR3_CTSE | USART_CR3_ONEBIT | USART_CR3_TXFTCFG | \
186#define LPUART_BRR_MIN 0x00000300U
187#define LPUART_BRR_MAX 0x000FFFFFU
189#define UART_BRR_MIN 0x10U
190#define UART_BRR_MAX 0x0000FFFFU
229const uint16_t
UARTPrescTable[12] = {1U, 2U, 4U, 6U, 8U, 10U, 12U, 16U, 32U, 64U, 128U, 256U};
331#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
332 UART_InitCallbacksToDefault(huart);
334 if (huart->MspInitCallback ==
NULL)
340 huart->MspInitCallback(huart);
398#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
399 UART_InitCallbacksToDefault(huart);
401 if (huart->MspInitCallback ==
NULL)
407 huart->MspInitCallback(huart);
486#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
487 UART_InitCallbacksToDefault(huart);
489 if (huart->MspInitCallback ==
NULL)
495 huart->MspInitCallback(huart);
572#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
573 UART_InitCallbacksToDefault(huart);
575 if (huart->MspInitCallback ==
NULL)
581 huart->MspInitCallback(huart);
649#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
650 if (huart->MspDeInitCallback ==
NULL)
655 huart->MspDeInitCallback(huart);
702#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
729 pUART_CallbackTypeDef pCallback)
733 if (pCallback ==
NULL)
735 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
744 case HAL_UART_TX_HALFCOMPLETE_CB_ID :
745 huart->TxHalfCpltCallback = pCallback;
748 case HAL_UART_TX_COMPLETE_CB_ID :
749 huart->TxCpltCallback = pCallback;
752 case HAL_UART_RX_HALFCOMPLETE_CB_ID :
753 huart->RxHalfCpltCallback = pCallback;
756 case HAL_UART_RX_COMPLETE_CB_ID :
757 huart->RxCpltCallback = pCallback;
760 case HAL_UART_ERROR_CB_ID :
761 huart->ErrorCallback = pCallback;
764 case HAL_UART_ABORT_COMPLETE_CB_ID :
765 huart->AbortCpltCallback = pCallback;
768 case HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID :
769 huart->AbortTransmitCpltCallback = pCallback;
772 case HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID :
773 huart->AbortReceiveCpltCallback = pCallback;
776 case HAL_UART_WAKEUP_CB_ID :
777 huart->WakeupCallback = pCallback;
780 case HAL_UART_RX_FIFO_FULL_CB_ID :
781 huart->RxFifoFullCallback = pCallback;
784 case HAL_UART_TX_FIFO_EMPTY_CB_ID :
785 huart->TxFifoEmptyCallback = pCallback;
788 case HAL_UART_MSPINIT_CB_ID :
789 huart->MspInitCallback = pCallback;
792 case HAL_UART_MSPDEINIT_CB_ID :
793 huart->MspDeInitCallback = pCallback;
797 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
807 case HAL_UART_MSPINIT_CB_ID :
808 huart->MspInitCallback = pCallback;
811 case HAL_UART_MSPDEINIT_CB_ID :
812 huart->MspDeInitCallback = pCallback;
816 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
824 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
864 case HAL_UART_TX_HALFCOMPLETE_CB_ID :
868 case HAL_UART_TX_COMPLETE_CB_ID :
872 case HAL_UART_RX_HALFCOMPLETE_CB_ID :
876 case HAL_UART_RX_COMPLETE_CB_ID :
880 case HAL_UART_ERROR_CB_ID :
884 case HAL_UART_ABORT_COMPLETE_CB_ID :
888 case HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID :
893 case HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID :
898 case HAL_UART_WAKEUP_CB_ID :
902 case HAL_UART_RX_FIFO_FULL_CB_ID :
906 case HAL_UART_TX_FIFO_EMPTY_CB_ID :
910 case HAL_UART_MSPINIT_CB_ID :
914 case HAL_UART_MSPDEINIT_CB_ID :
919 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
929 case HAL_UART_MSPINIT_CB_ID :
933 case HAL_UART_MSPDEINIT_CB_ID :
938 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
946 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
965 if (pCallback ==
NULL)
967 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
974 huart->RxEventCallback = pCallback;
978 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
1002 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
1121 const uint8_t *pdata8bits;
1122 const uint16_t *pdata16bits;
1128 if ((pData ==
NULL) || (Size == 0U))
1146 pdata16bits = (
const uint16_t *) pData;
1163 if (pdata8bits ==
NULL)
1165 huart->
Instance->
TDR = (uint16_t)(*pdata16bits & 0x01FFU);
1170 huart->
Instance->
TDR = (uint8_t)(*pdata8bits & 0xFFU);
1219 uint8_t *pdata8bits;
1220 uint16_t *pdata16bits;
1227 if ((pData ==
NULL) || (Size == 0U))
1244 uhMask = huart->
Mask;
1250 pdata16bits = (uint16_t *) pData;
1267 if (pdata8bits ==
NULL)
1269 *pdata16bits = (uint16_t)(huart->
Instance->
RDR & uhMask);
1274 *pdata8bits = (uint8_t)(huart->
Instance->
RDR & (uint8_t)uhMask);
1314 if ((pData ==
NULL) || (Size == 0U))
1333 huart->
TxISR = UART_TxISR_16BIT_FIFOEN;
1337 huart->
TxISR = UART_TxISR_8BIT_FIFOEN;
1348 huart->
TxISR = UART_TxISR_16BIT;
1352 huart->
TxISR = UART_TxISR_8BIT;
1382 if ((pData ==
NULL) || (Size == 0U))
1423 if ((pData ==
NULL) || (Size == 0U))
1493 if ((pData ==
NULL) || (Size == 0U))
1618 UART_EndTxTransfer(huart);
1642 UART_EndRxTransfer(huart);
1882 uint32_t abortcplt = 1U;
1976 if (abortcplt == 1U)
2003#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2005 huart->AbortCpltCallback(huart);
2065#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2067 huart->AbortTransmitCpltCallback(huart);
2089#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2091 huart->AbortTransmitCpltCallback(huart);
2163#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2165 huart->AbortReceiveCpltCallback(huart);
2185#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2187 huart->AbortReceiveCpltCallback(huart);
2208 uint32_t errorflags;
2213 if (errorflags == 0U)
2222 huart->
RxISR(huart);
2229 if ((errorflags != 0U)
2285 huart->
RxISR(huart);
2301 UART_EndRxTransfer(huart);
2326#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2328 huart->ErrorCallback(huart);
2339#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2341 huart->ErrorCallback(huart);
2352#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2354 huart->ErrorCallback(huart);
2382 if ((nb_remaining_rx_data > 0U)
2383 && (nb_remaining_rx_data < huart->RxXferSize))
2413#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2425 if (nb_remaining_rx_data == huart->
RxXferSize)
2433#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2435 huart->RxEventCallback(huart, huart->
RxXferSize);
2452 && (nb_rx_data > 0U))
2473#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2475 huart->RxEventCallback(huart, nb_rx_data);
2493#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2495 huart->WakeupCallback(huart);
2510 huart->
TxISR(huart);
2518 UART_EndTransmit_IT(huart);
2525#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2527 huart->TxFifoEmptyCallback(huart);
2538#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2540 huart->RxFifoFullCallback(huart);
2994#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3026 uint32_t lpuart_ker_ck_pres;
3091 switch (clocksource)
3133 if ((lpuart_ker_ck_pres < (3U * huart->
Init.
BaudRate)) ||
3143 if ((usartdiv >= LPUART_BRR_MIN) && (usartdiv <= LPUART_BRR_MAX))
3158 switch (clocksource)
3200 if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
3202 brrtemp = (uint16_t)(usartdiv & 0xFFF0U);
3203 brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U);
3214 switch (clocksource)
3256 if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
3427 uint32_t Tickstart, uint32_t Timeout)
3435 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
3451 UART_EndRxTransfer(huart);
3468 UART_EndRxTransfer(huart);
3516 huart->
RxISR = UART_RxISR_16BIT_FIFOEN;
3520 huart->
RxISR = UART_RxISR_8BIT_FIFOEN;
3535 huart->
RxISR = UART_RxISR_16BIT;
3539 huart->
RxISR = UART_RxISR_8BIT;
3684#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3686 huart->TxCpltCallback(huart);
3703#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3705 huart->TxHalfCpltCallback(huart);
3758 if (nb_remaining_rx_data < huart->RxXferSize)
3764#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3775#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3777 huart->RxCpltCallback(huart);
3806 if (nb_remaining_rx_data <= huart->RxXferSize)
3812#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3823#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3825 huart->RxHalfCpltCallback(huart);
3849 UART_EndTxTransfer(huart);
3856 UART_EndRxTransfer(huart);
3861#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3863 huart->ErrorCallback(huart);
3880#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3882 huart->ErrorCallback(huart);
3930#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3932 huart->AbortCpltCallback(huart);
3978#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3980 huart->AbortCpltCallback(huart);
4010#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
4012 huart->AbortTransmitCpltCallback(huart);
4042#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
4044 huart->AbortReceiveCpltCallback(huart);
4089 const uint16_t *tmp;
4105 huart->
Instance->
TDR = (((uint32_t)(*tmp)) & 0x01FFUL);
4121 uint16_t nb_tx_data;
4161 const uint16_t *tmp;
4162 uint16_t nb_tx_data;
4182 huart->
Instance->
TDR = (((uint32_t)(*tmp)) & 0x01FFUL);
4211#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
4213 huart->TxCpltCallback(huart);
4227 uint16_t uhMask = huart->
Mask;
4234 *huart->
pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask);
4281#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
4283 huart->RxEventCallback(huart, huart->
RxXferSize);
4292#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
4294 huart->RxCpltCallback(huart);
4319 uint16_t uhMask = huart->
Mask;
4327 *tmp = (uint16_t)(uhdata & uhMask);
4374#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
4376 huart->RxEventCallback(huart, huart->
RxXferSize);
4385#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
4387 huart->RxCpltCallback(huart);
4411 uint16_t uhMask = huart->
Mask;
4413 uint16_t nb_rx_data;
4414 uint16_t rxdatacount;
4426 *huart->
pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask);
4463#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
4465 huart->ErrorCallback(huart);
4518#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
4520 huart->RxEventCallback(huart, huart->
RxXferSize);
4529#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
4531 huart->RxCpltCallback(huart);
4546 if ((rxdatacount != 0U) && (rxdatacount < huart->NbRxDataToProcess))
4552 huart->
RxISR = UART_RxISR_8BIT;
4575 uint16_t uhMask = huart->
Mask;
4577 uint16_t nb_rx_data;
4578 uint16_t rxdatacount;
4591 *tmp = (uint16_t)(uhdata & uhMask);
4628#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
4630 huart->ErrorCallback(huart);
4683#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
4685 huart->RxEventCallback(huart, huart->
RxXferSize);
4694#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
4696 huart->RxCpltCallback(huart);
4711 if ((rxdatacount != 0U) && (rxdatacount < huart->NbRxDataToProcess))
4717 huart->
RxISR = UART_RxISR_16BIT;
#define HAL_DMA_ERROR_TIMEOUT
Timeout error.
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
uint32_t HAL_DMA_GetError(const DMA_HandleTypeDef *hdma)
#define __HAL_DMA_GET_COUNTER(__HANDLE__)
Returns the number of remaining data units in the current DMAy Streamx transfer.
struct __DMA_HandleTypeDef DMA_HandleTypeDef
DMA handle Structure definition.
#define DMA_CIRCULAR
Circular mode.
#define ATOMIC_CLEAR_BIT(REG, BIT)
#define CLEAR_BIT(REG, BIT)
#define SET_BIT(REG, BIT)
#define IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(INSTANCE)
#define ATOMIC_SET_BIT(REG, BIT)
#define MODIFY_REG(REG, CLEARMASK, SETMASK)
#define IS_UART_HALFDUPLEX_INSTANCE(INSTANCE)
#define IS_UART_LIN_INSTANCE(INSTANCE)
#define READ_BIT(REG, BIT)
#define IS_LPUART_INSTANCE(INSTANCE)
#define IS_UART_INSTANCE(INSTANCE)
#define IS_UART_HWFLOW_INSTANCE(INSTANCE)
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define USART_ISR_NE
Noise detected Flag.
#define USART_ISR_RTOF
Receiver Time Out.
#define USART_ISR_TXE_TXFNF
Transmit Data Register Empty or TX FIFO Not Full Flag.
#define USART_PRESC_PRESCALER
PRESCALER[3:0] bits (Clock prescaler).
#define USART_CR1_PEIE
PE Interrupt Enable.
#define USART_ISR_FE
Framing Error.
#define USART_CR3_IREN
IrDA mode Enable.
#define USART_CR3_OVRDIS
Overrun Disable.
#define USART_CR2_ADD
Address of the USART node.
#define USART_CR2_CLKEN
Clock Enable.
#define USART_CR3_RXFTIE
RXFIFO threshold interrupt enable.
#define USART_CR1_MME
Mute Mode Enable.
#define USART_CR2_SWAP
SWAP TX/RX pins.
#define USART_CR1_IDLEIE
IDLE Interrupt Enable.
#define USART_CR3_TXFTIE
TXFIFO threshold interrupt enable.
#define USART_CR3_DMAT
DMA Enable Transmitter.
#define USART_RTOR_RTO
Receiver Time Out Value.
#define USART_CR1_RXFFIE
RXFIFO Full interrupt enable.
#define USART_CR2_MSBFIRST
Most Significant Bit First.
#define USART_CR2_ABRMODE
ABRMOD[1:0] bits (Auto Baud-Rate Mode).
#define USART_CR2_LBDL
LIN Break Detection Length.
#define USART_CR3_WUFIE
Wake Up Interrupt Enable.
#define USART_CR1_RXNEIE_RXFNEIE
RXNE and RX FIFO Not Empty Interrupt Enable.
#define USART_CR2_DATAINV
Binary data inversion.
#define USART_CR3_SCEN
SmartCard mode enable.
#define USART_CR1_TXEIE_TXFNFIE
TXE and TX FIFO Not Full Interrupt Enable.
#define USART_ISR_ORE
OverRun Error.
#define USART_ISR_PE
Parity Error.
#define USART_CR1_TCIE
Transmission Complete Interrupt Enable.
#define USART_ISR_TC
Transmission Complete.
#define USART_ISR_REACK
Receive Enable Acknowledge Flag.
#define USART_CR2_ABREN
Auto Baud-Rate Enable.
#define USART_ISR_RXFF
RXFIFO Full Flag.
#define USART_CR3_EIE
Error Interrupt Enable.
#define USART_CR1_TXFEIE
TXFIFO empty interrupt enable.
#define USART_CR2_RTOEN
Receiver Time-Out enable.
#define USART_ISR_RXNE_RXFNE
Read Data Register or RX FIFO Not Empty.
#define USART_CR1_RTOIE
Receive Time Out interrupt enable.
#define USART_CR3_HDSEL
Half-Duplex Selection.
#define USART_CR2_LINEN
LIN mode enable.
#define USART_ISR_IDLE
IDLE line detected.
#define USART_CR1_WAKE
Receiver Wakeup method.
#define USART_ISR_WUF
Wake Up from stop mode Flag.
#define USART_CR1_RE
Receiver Enable.
#define USART_CR2_TXINV
TX pin active level inversion.
#define USART_CR1_TE
Transmitter Enable.
#define USART_CR3_DDRE
DMA Disable on Reception Error.
#define USART_ISR_TEACK
Transmit Enable Acknowledge Flag.
#define USART_ISR_TXFE
TXFIFO Empty.
#define USART_CR2_STOP
STOP[1:0] bits (STOP bits).
#define USART_CR3_DMAR
DMA Enable Receiver.
#define USART_CR2_RXINV
RX pin active level inversion.
uint32_t HAL_RCCEx_GetD3PCLK1Freq(void)
void HAL_RCCEx_GetPLL3ClockFreq(PLL3_ClocksTypeDef *PLL3_Clocks)
void HAL_RCCEx_GetPLL2ClockFreq(PLL2_ClocksTypeDef *PLL2_Clocks)
uint32_t HAL_RCC_GetPCLK1Freq(void)
uint32_t HAL_RCC_GetPCLK2Freq(void)
#define __HAL_RCC_GET_HSI_DIVIDER()
Macro to get the HSI divider.
#define __HAL_RCC_GET_FLAG(__FLAG__)
void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)
void HAL_UARTEx_TxFifoEmptyCallback(UART_HandleTypeDef *huart)
void HAL_UARTEx_RxFifoFullCallback(UART_HandleTypeDef *huart)
#define UART_FIFOMODE_ENABLE
FIFO mode enable.
#define UART_GETCLOCKSOURCE(__HANDLE__, __CLOCKSOURCE__)
Report the UART clock source.
#define UART_MASK_COMPUTATION(__HANDLE__)
Report the UART mask to apply to retrieve the received data according to the word length and to the p...
#define IS_UART_WORD_LENGTH(__LENGTH__)
Ensure that UART frame length is valid.
#define UART_WORDLENGTH_8B
8-bit long UART frame
#define UART_WORDLENGTH_9B
9-bit long UART frame
#define UART_ADVFEATURE_RXOVERRUNDISABLE_INIT
RX overrun disable.
#define UART_ADVFEATURE_AUTOBAUDRATE_INIT
Auto Baud rate detection initialization.
#define UART_ADVFEATURE_TXINVERT_INIT
TX pin active level inversion.
#define UART_ADVFEATURE_DATAINVERT_INIT
Binary data inversion.
#define UART_ADVFEATURE_SWAP_INIT
TX/RX pins swap.
#define UART_ADVFEATURE_MSBFIRST_INIT
Most significant bit sent/received first.
#define UART_ADVFEATURE_NO_INIT
No advanced feature initialization.
#define UART_ADVFEATURE_RXINVERT_INIT
RX pin active level inversion.
#define UART_ADVFEATURE_DMADISABLEONERROR_INIT
DMA disable on Reception Error.
#define UART_ADVFEATURE_AUTOBAUDRATE_ENABLE
RX Auto Baud rate detection disable.
#define UART_CR2_ADDRESS_LSB_POS
UART address-matching LSB position in CR2 register.
#define HAL_UART_ERROR_NONE
No error.
#define HAL_UART_ERROR_NE
Noise error.
#define HAL_UART_ERROR_RTO
Receiver Timeout error.
#define HAL_UART_ERROR_DMA
DMA transfer error.
#define HAL_UART_ERROR_PE
Parity error.
#define HAL_UART_ERROR_ORE
Overrun error.
#define HAL_UART_ERROR_FE
Frame error.
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
UART MSP Initialization This function configures the hardware resources used in this example.
HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength)
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_DeInit(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t WakeUpMethod)
HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart)
void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart)
void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart)
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart)
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart)
void HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart)
void HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_DisableReceiverTimeout(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UART_EnableReceiverTimeout(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart)
void HAL_UART_ReceiverTimeout_Config(UART_HandleTypeDef *huart, uint32_t TimeoutValue)
HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart)
uint32_t HAL_UART_GetError(const UART_HandleTypeDef *huart)
HAL_UART_StateTypeDef HAL_UART_GetState(const UART_HandleTypeDef *huart)
#define __HAL_UART_GET_FLAG(__HANDLE__, __FLAG__)
Check whether the specified UART flag is set or not.
#define __HAL_UART_ENABLE(__HANDLE__)
Enable UART.
#define __HAL_UART_SEND_REQ(__HANDLE__, __REQ__)
Set a specific UART request flag.
#define __HAL_UART_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the specified UART pending flag.
#define __HAL_UART_DISABLE(__HANDLE__)
Disable UART.
struct __UART_HandleTypeDef UART_HandleTypeDef
UART handle Structure definition.
uint32_t HAL_UART_StateTypeDef
HAL UART State definition.
UART_ClockSourceTypeDef
UART clock sources definition.
@ UART_CLOCKSOURCE_PLL3
PLL3Q clock source.
@ UART_CLOCKSOURCE_D2PCLK2
Domain2 PCLK2 clock source.
@ UART_CLOCKSOURCE_PLL2
PLL2Q clock source.
@ UART_CLOCKSOURCE_D3PCLK1
Domain3 PCLK1 clock source.
@ UART_CLOCKSOURCE_CSI
CSI clock source.
@ UART_CLOCKSOURCE_LSE
LSE clock source.
@ UART_CLOCKSOURCE_D2PCLK1
Domain2 PCLK1 clock source.
@ UART_CLOCKSOURCE_HSI
HSI clock source.
#define UART_FLAG_ORE
UART overrun error.
#define UART_FLAG_IDLE
UART idle flag.
#define UART_FLAG_RTOF
UART receiver timeout flag.
#define UART_FLAG_TC
UART transmission complete.
#define UART_FLAG_RXNE
UART read data register not empty.
#define UART_FLAG_TXE
UART transmit data register empty.
#define UART_HWCONTROL_NONE
No hardware control.
#define UART_CLEAR_FEF
Framing Error Clear Flag.
#define UART_CLEAR_RTOF
UART receiver timeout clear flag.
#define UART_CLEAR_OREF
Overrun Error Clear Flag.
#define UART_CLEAR_WUF
Wake Up from stop mode Clear Flag.
#define UART_CLEAR_IDLEF
IDLE line detected Clear Flag.
#define UART_CLEAR_PEF
Parity Error Clear Flag.
#define UART_CLEAR_NEF
Noise Error detected Clear Flag.
#define UART_CLEAR_TCF
Transmission Complete Clear Flag.
#define UART_OVERSAMPLING_8
Oversampling by 8.
#define UART_PARITY_NONE
No parity.
HAL_StatusTypeDef UART_Start_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
HAL_StatusTypeDef UART_Start_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)
HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
#define IS_UART_STOPBITS(__STOPBITS__)
Ensure that UART frame number of stop bits is valid.
#define IS_UART_WAKEUPMETHOD(__WAKEUP__)
Ensure that UART wake-up method is valid.
#define IS_UART_ADVFEATURE_DMAONRXERROR(__DMA__)
Ensure that UART DMA enabling or disabling on error setting is valid.
#define IS_LPUART_STOPBITS(__STOPBITS__)
Ensure that LPUART frame number of stop bits is valid.
#define IS_UART_ADVFEATURE_TXINV(__TXINV__)
Ensure that UART frame TX inversion setting is valid.
#define UART_DIV_SAMPLING16(__PCLK__, __BAUD__, __CLOCKPRESCALER__)
BRR division operation to set BRR register in 16-bit oversampling mode.
#define IS_UART_PARITY(__PARITY__)
Ensure that UART frame parity is valid.
#define IS_UART_OVERRUN(__OVERRUN__)
Ensure that UART frame overrun setting is valid.
#define IS_UART_ONE_BIT_SAMPLE(__ONEBIT__)
Ensure that UART frame sampling is valid.
#define IS_UART_ADVFEATURE_AUTOBAUDRATE(__AUTOBAUDRATE__)
Ensure that UART auto Baud rate state is valid.
#define IS_UART_ADVFEATURE_RXINV(__RXINV__)
Ensure that UART frame RX inversion setting is valid.
#define IS_UART_ADVFEATURE_MSBFIRST(__MSBFIRST__)
Ensure that UART frame MSB first setting is valid.
#define IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(__MODE__)
Ensure that UART auto Baud rate detection mode is valid.
#define IS_UART_OVERSAMPLING(__SAMPLING__)
Ensure that UART oversampling is valid.
#define IS_UART_ADVFEATURE_DATAINV(__DATAINV__)
Ensure that UART frame data inversion setting is valid.
#define IS_UART_HARDWARE_FLOW_CONTROL(__CONTROL__)
Ensure that UART hardware flow control is valid.
#define IS_UART_PRESCALER(__CLOCKPRESCALER__)
Ensure that UART Prescaler is valid.
#define IS_UART_BAUDRATE(__BAUDRATE__)
Check UART Baud rate.
#define UART_INSTANCE_LOWPOWER(__HANDLE__)
Check whether or not UART instance is Low Power UART.
#define IS_UART_LIN_BREAK_DETECT_LENGTH(__LENGTH__)
Ensure that UART LIN break detection length is valid.
#define UART_DIV_LPUART(__PCLK__, __BAUD__, __CLOCKPRESCALER__)
BRR division operation to set BRR register with LPUART.
#define IS_UART_ADVFEATURE_INIT(__INIT__)
Ensure that UART advanced features initialization is valid.
#define UART_DIV_SAMPLING8(__PCLK__, __BAUD__, __CLOCKPRESCALER__)
BRR division operation to set BRR register in 8-bit oversampling mode.
#define IS_UART_MODE(__MODE__)
Ensure that UART communication mode is valid.
#define IS_UART_RECEIVER_TIMEOUT_VALUE(__TIMEOUTVALUE__)
Check the receiver timeout value.
#define IS_UART_ADVFEATURE_SWAP(__SWAP__)
Ensure that UART frame RX/TX pins swap setting is valid.
const uint16_t UARTPrescTable[12]
#define HAL_UART_RECEPTION_TOIDLE
Reception till completion or IDLE event.
#define HAL_UART_RECEPTION_STANDARD
Standard reception.
#define UART_SENDBREAK_REQUEST
Send Break Request.
#define UART_MUTE_MODE_REQUEST
Mute Mode Request.
#define UART_RXDATA_FLUSH_REQUEST
Receive Data flush Request.
#define UART_TXDATA_FLUSH_REQUEST
Transmit data flush Request.
#define HAL_UART_RXEVENT_HT
RxEvent linked to Half Transfer event.
#define HAL_UART_RXEVENT_IDLE
RxEvent linked to IDLE event.
#define HAL_UART_RXEVENT_TC
RxEvent linked to Transfer Complete event.
#define HAL_UART_STATE_READY
Peripheral Initialized and ready for use Value is allowed for gState and RxState.
#define HAL_UART_STATE_BUSY_RX
Data Reception process is ongoing Value is allowed for RxState only.
#define HAL_UART_STATE_BUSY
an internal process is ongoing Value is allowed for gState only
#define HAL_UART_STATE_BUSY_TX
Data Transmission process is ongoing Value is allowed for gState only.
#define HAL_UART_STATE_RESET
Peripheral is not initialized Value is allowed for gState and RxState.
#define HAL_UART_TIMEOUT_VALUE
UART polling-based communications time-out value.
#define UART_WAKEUPMETHOD_ADDRESSMARK
UART wake-up on address mark.
This file contains all the functions prototypes for the HAL module driver.
#define CSI_VALUE
Internal oscillator (CSI) default value.
#define assert_param(expr)
Uncomment the line below to expanse the "assert_param" macro in the HAL drivers code.
#define LSE_VALUE
External Low Speed oscillator (LSE) value.
#define HSI_VALUE
Internal High Speed oscillator (HSI) value.
#define HAL_IS_BIT_SET(REG, BIT)
HAL_StatusTypeDef
HAL Status structures definition.
#define __HAL_UNLOCK(__HANDLE__)
#define __HAL_LOCK(__HANDLE__)
uint32_t Mode
Specifies the operation mode of the DMAy Streamx.
RCC PLL2 Clocks structure definition.
uint32_t PLL2_Q_Frequency
RCC PLL3 Clocks structure definition.
uint32_t PLL3_Q_Frequency
uint32_t Swap
Specifies whether TX and RX pins are swapped.
uint32_t AutoBaudRateMode
If auto Baud rate detection is enabled, specifies how the rate detection is carried out.
uint32_t AdvFeatureInit
Specifies which advanced UART features is initialized.
uint32_t DMADisableonRxError
Specifies whether the DMA is disabled in case of reception error.
uint32_t MSBFirst
Specifies whether MSB is sent first on UART line.
uint32_t RxPinLevelInvert
Specifies whether the RX pin active level is inverted.
uint32_t AutoBaudRateEnable
Specifies whether auto Baud rate detection is enabled.
uint32_t TxPinLevelInvert
Specifies whether the TX pin active level is inverted.
uint32_t DataInvert
Specifies whether data are inverted (positive/direct logic vs negative/inverted logic).
uint32_t OverrunDisable
Specifies whether the reception overrun detection is disabled.
uint32_t WordLength
Specifies the number of data bits transmitted or received in a frame.
uint32_t OneBitSampling
Specifies whether a single sample or three samples' majority vote is selected.
uint32_t StopBits
Specifies the number of stop bits transmitted.
uint32_t OverSampling
Specifies whether the Over sampling 8 is enabled or disabled, to achieve higher speed (up to f_PCLK/8...
uint32_t Mode
Specifies whether the Receive or Transmit mode is enabled or disabled.
uint32_t HwFlowCtl
Specifies whether the hardware flow control mode is enabled or disabled.
uint32_t Parity
Specifies the parity mode.
uint32_t BaudRate
This member configures the UART communication baud rate.
uint32_t ClockPrescaler
Specifies the prescaler value used to divide the UART clock source.
__IO uint32_t TDR
USART Transmit Data register, Address offset: 0x28.
__IO uint32_t RTOR
USART Receiver Time Out register, Address offset: 0x14.
__IO uint32_t CR1
USART Control register 1, Address offset: 0x00.
__IO uint32_t BRR
USART Baud rate register, Address offset: 0x0C.
__IO uint32_t ISR
USART Interrupt and status register, Address offset: 0x1C.
__IO uint32_t RDR
USART Receive Data register, Address offset: 0x24.
__IO uint32_t CR2
USART Control register 2, Address offset: 0x04.
__IO uint32_t PRESC
USART clock Prescaler register, Address offset: 0x2C.
__IO uint32_t CR3
USART Control register 3, Address offset: 0x08.
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
DMA transfer Abort callback.
DMA_InitTypeDef Init
DMA communication parameters.
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
DMA transfer complete callback.
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
DMA transfer error callback.
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
DMA Half transfer complete callback.
void * Parent
Parent object state.
__IO HAL_UART_RxEventTypeTypeDef RxEventType
Type of Rx Event.
__IO uint32_t ErrorCode
UART Error code.
__IO uint16_t RxXferCount
UART Rx Transfer Counter.
__IO HAL_UART_StateTypeDef gState
UART state information related to global Handle management and also related to Tx operations.
__IO HAL_UART_StateTypeDef RxState
UART state information related to Rx operations.
uint16_t TxXferSize
UART Tx Transfer size.
HAL_LockTypeDef Lock
Locking object.
void(* TxISR)(struct __UART_HandleTypeDef *huart)
Function pointer on Tx IRQ handler.
uint8_t * pRxBuffPtr
Pointer to UART Rx transfer Buffer.
uint16_t Mask
UART Rx RDR register mask.
UART_InitTypeDef Init
UART communication parameters.
__IO uint16_t TxXferCount
UART Tx Transfer Counter.
void(* RxISR)(struct __UART_HandleTypeDef *huart)
Function pointer on Rx IRQ handler.
UART_AdvFeatureInitTypeDef AdvancedInit
UART Advanced Features initialization parameters.
DMA_HandleTypeDef * hdmarx
UART Rx DMA Handle parameters.
USART_TypeDef * Instance
UART registers base address.
uint32_t FifoMode
Specifies if the FIFO mode is being used.
const uint8_t * pTxBuffPtr
Pointer to UART Tx transfer Buffer.
uint16_t NbRxDataToProcess
Number of data to process during RX ISR execution.
__IO HAL_UART_RxTypeTypeDef ReceptionType
Type of ongoing reception.
uint16_t RxXferSize
UART Rx Transfer size.
uint16_t NbTxDataToProcess
Number of data to process during TX ISR execution.
DMA_HandleTypeDef * hdmatx
UART Tx DMA Handle parameters.