55 #ifdef HAL_UART_MODULE_ENABLED 59 #if defined(USART_CR1_FIFOEN) 64 #define RX_FIFO_DEPTH 8U 67 #define TX_FIFO_DEPTH 8U 80 #if defined(USART_CR1_FIFOEN) 171 uint32_t DeassertionTime)
192 if (huart->
gState == HAL_UART_STATE_RESET)
197 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 213 huart->
gState = HAL_UART_STATE_BUSY;
216 __HAL_UART_DISABLE(huart);
230 SET_BIT(huart->
Instance->CR3, USART_CR3_DEM);
236 temp = (AssertionTime << UART_CR1_DEAT_ADDRESS_LSB_POS);
237 temp |= (DeassertionTime << UART_CR1_DEDT_ADDRESS_LSB_POS);
241 __HAL_UART_ENABLE(huart);
286 #if defined(USART_CR1_FIFOEN) 349 #if defined(USART_CR3_UCESM) 365 SET_BIT(huart->
Instance->CR3, USART_CR3_UCESM);
415 assert_param(IS_UART_ADDRESSLENGTH_DETECT(AddressLength));
417 huart->
gState = HAL_UART_STATE_BUSY;
420 __HAL_UART_DISABLE(huart);
426 __HAL_UART_ENABLE(huart);
446 HAL_StatusTypeDef status =
HAL_OK;
457 huart->
gState = HAL_UART_STATE_BUSY;
460 __HAL_UART_DISABLE(huart);
465 if (WakeUpSelection.
WakeUpEvent == UART_WAKEUP_ON_ADDRESS)
471 __HAL_UART_ENABLE(huart);
479 status = HAL_TIMEOUT;
484 huart->
gState = HAL_UART_STATE_READY;
505 SET_BIT(huart->
Instance->CR1, USART_CR1_UESM);
532 #if defined(USART_CR1_FIFOEN) 548 huart->
gState = HAL_UART_STATE_BUSY;
551 tmpcr1 = READ_REG(huart->
Instance->CR1);
554 __HAL_UART_DISABLE(huart);
557 SET_BIT(tmpcr1, USART_CR1_FIFOEN);
558 huart->
FifoMode = UART_FIFOMODE_ENABLE;
561 WRITE_REG(huart->
Instance->CR1, tmpcr1);
566 huart->
gState = HAL_UART_STATE_READY;
589 huart->
gState = HAL_UART_STATE_BUSY;
592 tmpcr1 = READ_REG(huart->
Instance->CR1);
595 __HAL_UART_DISABLE(huart);
599 huart->
FifoMode = UART_FIFOMODE_DISABLE;
602 WRITE_REG(huart->
Instance->CR1, tmpcr1);
604 huart->
gState = HAL_UART_STATE_READY;
636 huart->
gState = HAL_UART_STATE_BUSY;
639 tmpcr1 = READ_REG(huart->
Instance->CR1);
642 __HAL_UART_DISABLE(huart);
651 WRITE_REG(huart->
Instance->CR1, tmpcr1);
653 huart->
gState = HAL_UART_STATE_READY;
685 huart->
gState = HAL_UART_STATE_BUSY;
688 tmpcr1 = READ_REG(huart->
Instance->CR1);
691 __HAL_UART_DISABLE(huart);
700 WRITE_REG(huart->
Instance->CR1, tmpcr1);
702 huart->
gState = HAL_UART_STATE_READY;
740 #if defined(USART_CR1_FIFOEN) 750 uint8_t rx_fifo_depth;
751 uint8_t tx_fifo_depth;
752 uint8_t rx_fifo_threshold;
753 uint8_t tx_fifo_threshold;
754 uint8_t numerator[] = {1U, 1U, 1U, 3U, 7U, 1U, 0U, 0U};
755 uint8_t denominator[] = {8U, 4U, 2U, 4U, 8U, 1U, 1U, 1U};
757 if (huart->
FifoMode == UART_FIFOMODE_DISABLE)
764 rx_fifo_depth = RX_FIFO_DEPTH;
765 tx_fifo_depth = TX_FIFO_DEPTH;
766 rx_fifo_threshold = (uint8_t)(READ_BIT(huart->
Instance->CR3, USART_CR3_RXFTCFG) >> USART_CR3_RXFTCFG_Pos);
767 tx_fifo_threshold = (uint8_t)(READ_BIT(huart->
Instance->CR3, USART_CR3_TXFTCFG) >> USART_CR3_TXFTCFG_Pos);
768 huart->
NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / (uint16_t)denominator[tx_fifo_threshold];
769 huart->
NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / (uint16_t)denominator[rx_fifo_threshold];
HAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection)
Set Wakeup from Stop mode interrupt flag selection.
HAL_StatusTypeDef HAL_UARTEx_EnableClockStopMode(UART_HandleTypeDef *huart)
Keep UART Clock enabled when in Stop Mode.
UART handle Structure definition.
void HAL_UARTEx_TxFifoEmptyCallback(UART_HandleTypeDef *huart)
UART TX Fifo empty callback.
uint16_t NbTxDataToProcess
uint16_t NbRxDataToProcess
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
Check the UART Idle State.
void HAL_UARTEx_RxFifoFullCallback(UART_HandleTypeDef *huart)
UART RX Fifo full callback.
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)
Configure the UART peripheral advanced features.
static void UARTEx_Wakeup_AddressConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection)
Initialize the UART wake-up from stop mode parameters when triggered by address detection.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, uint32_t DeassertionTime)
Initialize the RS485 Driver enable feature according to the specified parameters in the UART_InitType...
HAL_StatusTypeDef HAL_UARTEx_SetRxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold)
Set the RXFIFO threshold.
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
Initialize the UART MSP.
UART wake up from stop mode parameters.
static void UARTEx_SetNbDataToProcess(UART_HandleTypeDef *huart)
Calculate the number of data to process in RX/TX ISR.
HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength)
By default in multiprocessor mode, when the wake up method is set to address mark, the UART handles only 4-bit long addresses detection; this API allows to enable longer addresses detection (6-, 7- or 8-bit long).
HAL_StatusTypeDef HAL_UARTEx_SetTxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold)
Set the TXFIFO threshold.
HAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart)
Enable UART Stop Mode.
HAL_StatusTypeDef HAL_UARTEx_DisableFifoMode(UART_HandleTypeDef *huart)
Disable the FIFO mode.
UART_AdvFeatureInitTypeDef AdvancedInit
void(* MspInitCallback)(struct __UART_HandleTypeDef *huart)
void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)
UART wakeup from Stop mode callback.
HAL_StatusTypeDef HAL_UARTEx_EnableFifoMode(UART_HandleTypeDef *huart)
Enable the FIFO mode.
void UART_InitCallbacksToDefault(UART_HandleTypeDef *huart)
Initialize the callbacks to their default values.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
Handle UART Communication Timeout.
HAL_StatusTypeDef HAL_UARTEx_DisableClockStopMode(UART_HandleTypeDef *huart)
Disable UART Clock when in Stop Mode.
HAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart)
Disable UART Stop Mode.
HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
Configure the UART peripheral.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
__IO HAL_UART_StateTypeDef gState