268 #ifdef HAL_UART_MODULE_ENABLED
285 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
303 static HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(
UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status,
304 uint32_t Tickstart, uint32_t Timeout);
371 assert_param(IS_UART_HWFLOW_INSTANCE(huart->
Instance));
372 assert_param(IS_UART_HARDWARE_FLOW_CONTROL(huart->
Init.
HwFlowCtl));
376 assert_param(IS_UART_INSTANCE(huart->
Instance));
384 huart->
Lock = HAL_UNLOCKED;
386 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
405 __HAL_UART_DISABLE(huart);
408 UART_SetConfig(huart);
413 CLEAR_BIT(huart->
Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
414 CLEAR_BIT(huart->
Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
417 __HAL_UART_ENABLE(huart);
444 assert_param(IS_UART_HALFDUPLEX_INSTANCE(huart->
Instance));
451 huart->
Lock = HAL_UNLOCKED;
453 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
472 __HAL_UART_DISABLE(huart);
475 UART_SetConfig(huart);
480 CLEAR_BIT(huart->
Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
481 CLEAR_BIT(huart->
Instance->CR3, (USART_CR3_IREN | USART_CR3_SCEN));
484 SET_BIT(huart->
Instance->CR3, USART_CR3_HDSEL);
487 __HAL_UART_ENABLE(huart);
518 assert_param(IS_UART_LIN_INSTANCE(huart->
Instance));
521 assert_param(IS_UART_LIN_BREAK_DETECT_LENGTH(BreakDetectLength));
528 huart->
Lock = HAL_UNLOCKED;
530 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
549 __HAL_UART_DISABLE(huart);
552 UART_SetConfig(huart);
557 CLEAR_BIT(huart->
Instance->CR2, (USART_CR2_CLKEN));
558 CLEAR_BIT(huart->
Instance->CR3, (USART_CR3_HDSEL | USART_CR3_IREN | USART_CR3_SCEN));
561 SET_BIT(huart->
Instance->CR2, USART_CR2_LINEN);
564 CLEAR_BIT(huart->
Instance->CR2, USART_CR2_LBDL);
565 SET_BIT(huart->
Instance->CR2, BreakDetectLength);
568 __HAL_UART_ENABLE(huart);
600 assert_param(IS_UART_INSTANCE(huart->
Instance));
603 assert_param(IS_UART_WAKEUPMETHOD(WakeUpMethod));
604 assert_param(IS_UART_ADDRESS(Address));
611 huart->
Lock = HAL_UNLOCKED;
613 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
632 __HAL_UART_DISABLE(huart);
635 UART_SetConfig(huart);
640 CLEAR_BIT(huart->
Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
641 CLEAR_BIT(huart->
Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
644 CLEAR_BIT(huart->
Instance->CR2, USART_CR2_ADD);
645 SET_BIT(huart->
Instance->CR2, Address);
648 CLEAR_BIT(huart->
Instance->CR1, USART_CR1_WAKE);
649 SET_BIT(huart->
Instance->CR1, WakeUpMethod);
652 __HAL_UART_ENABLE(huart);
678 assert_param(IS_UART_INSTANCE(huart->
Instance));
683 __HAL_UART_DISABLE(huart);
685 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
739 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
764 HAL_StatusTypeDef status = HAL_OK;
766 if (pCallback == NULL)
769 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
820 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
841 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
851 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
883 HAL_StatusTypeDef status = HAL_OK;
931 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
952 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
962 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
980 HAL_StatusTypeDef status = HAL_OK;
982 if (pCallback == NULL)
984 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
998 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
1004 __HAL_UNLOCK(huart);
1017 HAL_StatusTypeDef status = HAL_OK;
1028 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
1034 __HAL_UNLOCK(huart);
1137 const uint8_t *pdata8bits;
1138 const uint16_t *pdata16bits;
1139 uint32_t tickstart = 0U;
1144 if ((pData == NULL) || (Size == 0U))
1162 pdata16bits = (
const uint16_t *) pData;
1172 if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)
1178 if (pdata8bits == NULL)
1180 huart->
Instance->DR = (uint16_t)(*pdata16bits & 0x01FFU);
1185 huart->
Instance->DR = (uint8_t)(*pdata8bits & 0xFFU);
1191 if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK)
1223 uint8_t *pdata8bits;
1224 uint16_t *pdata16bits;
1225 uint32_t tickstart = 0U;
1230 if ((pData == NULL) || (Size == 0U))
1249 pdata16bits = (uint16_t *) pData;
1260 if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK)
1266 if (pdata8bits == NULL)
1268 *pdata16bits = (uint16_t)(huart->
Instance->DR & 0x01FF);
1275 *pdata8bits = (uint8_t)(huart->
Instance->DR & (uint8_t)0x00FF);
1279 *pdata8bits = (uint8_t)(huart->
Instance->DR & (uint8_t)0x007F);
1313 if ((pData == NULL) || (Size == 0U))
1326 __HAL_UART_ENABLE_IT(huart, UART_IT_TXE);
1352 if ((pData == NULL) || (Size == 0U))
1381 const uint32_t *tmp;
1386 if ((pData == NULL) || (Size == 0U))
1411 tmp = (
const uint32_t *)&pData;
1415 __HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
1419 ATOMIC_SET_BIT(huart->
Instance->CR3, USART_CR3_DMAT);
1446 if ((pData == NULL) || (Size == 0U))
1470 uint32_t dmarequest = 0x00U;
1472 dmarequest = HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAT);
1476 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAT);
1479 dmarequest = HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAR);
1483 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, USART_CR1_PEIE);
1484 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_EIE);
1487 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAR);
1505 ATOMIC_SET_BIT(huart->
Instance->CR3, USART_CR3_DMAT);
1511 __HAL_UART_CLEAR_OREFLAG(huart);
1516 ATOMIC_SET_BIT(huart->
Instance->CR1, USART_CR1_PEIE);
1518 ATOMIC_SET_BIT(huart->
Instance->CR3, USART_CR3_EIE);
1521 ATOMIC_SET_BIT(huart->
Instance->CR3, USART_CR3_DMAR);
1535 uint32_t dmarequest = 0x00U;
1543 dmarequest = HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAT);
1546 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAT);
1549 if (huart->
hdmatx != NULL)
1553 UART_EndTxTransfer(huart);
1557 dmarequest = HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAR);
1560 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAR);
1563 if (huart->
hdmarx != NULL)
1567 UART_EndRxTransfer(huart);
1591 uint8_t *pdata8bits;
1592 uint16_t *pdata16bits;
1598 if ((pData == NULL) || (Size == 0U))
1618 pdata16bits = (uint16_t *) pData;
1633 if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE))
1636 __HAL_UART_CLEAR_IDLEFLAG(huart);
1650 if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RXNE))
1652 if (pdata8bits == NULL)
1654 *pdata16bits = (uint16_t)(huart->
Instance->DR & (uint16_t)0x01FF);
1661 *pdata8bits = (uint8_t)(huart->
Instance->DR & (uint8_t)0x00FF);
1665 *pdata8bits = (uint8_t)(huart->
Instance->DR & (uint8_t)0x007F);
1676 if (Timeout != HAL_MAX_DELAY)
1678 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
1715 HAL_StatusTypeDef status;
1720 if ((pData == NULL) || (Size == 0U))
1732 if (status == HAL_OK)
1736 __HAL_UART_CLEAR_IDLEFLAG(huart);
1737 ATOMIC_SET_BIT(huart->
Instance->CR1, USART_CR1_IDLEIE);
1775 HAL_StatusTypeDef status;
1780 if ((pData == NULL) || (Size == 0U))
1792 if (status == HAL_OK)
1796 __HAL_UART_CLEAR_IDLEFLAG(huart);
1797 ATOMIC_SET_BIT(huart->
Instance->CR1, USART_CR1_IDLEIE);
1862 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE));
1863 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_EIE);
1868 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, (USART_CR1_IDLEIE));
1872 if (HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAT))
1874 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAT);
1877 if (huart->
hdmatx != NULL)
1897 if (HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAR))
1899 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAR);
1902 if (huart->
hdmarx != NULL)
1951 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
1954 if (HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAT))
1956 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAT);
1959 if (huart->
hdmatx != NULL)
2002 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
2003 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_EIE);
2008 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, (USART_CR1_IDLEIE));
2012 if (HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAR))
2014 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAR);
2017 if (huart->
hdmarx != NULL)
2062 uint32_t AbortCplt = 0x01U;
2065 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE));
2066 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_EIE);
2071 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, (USART_CR1_IDLEIE));
2077 if (huart->
hdmatx != NULL)
2081 if (HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAT))
2091 if (huart->
hdmarx != NULL)
2095 if (HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAR))
2106 if (HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAT))
2109 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAT);
2112 if (huart->
hdmatx != NULL)
2130 if (HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAR))
2132 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAR);
2135 if (huart->
hdmarx != NULL)
2154 if (AbortCplt == 0x01U)
2169 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2198 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
2201 if (HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAT))
2203 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAT);
2206 if (huart->
hdmatx != NULL)
2228 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2246 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2275 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
2276 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_EIE);
2281 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, (USART_CR1_IDLEIE));
2285 if (HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAR))
2287 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAR);
2290 if (huart->
hdmarx != NULL)
2313 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2332 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2352 uint32_t isrflags = READ_REG(huart->
Instance->SR);
2353 uint32_t cr1its = READ_REG(huart->
Instance->CR1);
2354 uint32_t cr3its = READ_REG(huart->
Instance->CR3);
2355 uint32_t errorflags = 0x00U;
2356 uint32_t dmarequest = 0x00U;
2359 errorflags = (isrflags & (uint32_t)(USART_SR_PE | USART_SR_FE | USART_SR_ORE | USART_SR_NE));
2360 if (errorflags == RESET)
2363 if (((isrflags & USART_SR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET))
2365 UART_Receive_IT(huart);
2371 if ((errorflags != RESET) && (((cr3its & USART_CR3_EIE) != RESET)
2372 || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE)) != RESET)))
2375 if (((isrflags & USART_SR_PE) != RESET) && ((cr1its & USART_CR1_PEIE) != RESET))
2381 if (((isrflags & USART_SR_NE) != RESET) && ((cr3its & USART_CR3_EIE) != RESET))
2387 if (((isrflags & USART_SR_FE) != RESET) && ((cr3its & USART_CR3_EIE) != RESET))
2393 if (((isrflags & USART_SR_ORE) != RESET) && (((cr1its & USART_CR1_RXNEIE) != RESET)
2394 || ((cr3its & USART_CR3_EIE) != RESET)))
2400 if (huart->
ErrorCode != HAL_UART_ERROR_NONE)
2403 if (((isrflags & USART_SR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET))
2405 UART_Receive_IT(huart);
2410 dmarequest = HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAR);
2411 if (((huart->
ErrorCode & HAL_UART_ERROR_ORE) != RESET) || dmarequest)
2416 UART_EndRxTransfer(huart);
2419 if (HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAR))
2421 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAR);
2424 if (huart->
hdmarx != NULL)
2438 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2450 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2463 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2480 && ((isrflags & USART_SR_IDLE) != 0U)
2481 && ((cr1its & USART_SR_IDLE) != 0U))
2483 __HAL_UART_CLEAR_IDLEFLAG(huart);
2486 if (HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAR))
2492 uint16_t nb_remaining_rx_data = (uint16_t) __HAL_DMA_GET_COUNTER(huart->
hdmarx);
2493 if ((nb_remaining_rx_data > 0U)
2494 && (nb_remaining_rx_data < huart->
RxXferSize))
2500 if (huart->
hdmarx->
Init.Mode != DMA_CIRCULAR)
2503 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, USART_CR1_PEIE);
2504 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_EIE);
2508 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAR);
2514 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, USART_CR1_IDLEIE);
2524 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2541 && (nb_rx_data > 0U))
2544 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
2547 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_EIE);
2553 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, USART_CR1_IDLEIE);
2559 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2572 if (((isrflags & USART_SR_TXE) != RESET) && ((cr1its & USART_CR1_TXEIE) != RESET))
2574 UART_Transmit_IT(huart);
2579 if (((isrflags & USART_SR_TC) != RESET) && ((cr1its & USART_CR1_TCIE) != RESET))
2581 UART_EndTransmit_IT(huart);
2756 assert_param(IS_UART_INSTANCE(huart->
Instance));
2764 ATOMIC_SET_BIT(huart->
Instance->CR1, USART_CR1_SBK);
2769 __HAL_UNLOCK(huart);
2783 assert_param(IS_UART_INSTANCE(huart->
Instance));
2791 ATOMIC_SET_BIT(huart->
Instance->CR1, USART_CR1_RWU);
2797 __HAL_UNLOCK(huart);
2811 assert_param(IS_UART_INSTANCE(huart->
Instance));
2819 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, USART_CR1_RWU);
2825 __HAL_UNLOCK(huart);
2838 uint32_t tmpreg = 0x00U;
2849 tmpreg &= (uint32_t)~((uint32_t)(USART_CR1_TE | USART_CR1_RE));
2852 tmpreg |= (uint32_t)USART_CR1_TE;
2855 WRITE_REG(huart->
Instance->CR1, (uint32_t)tmpreg);
2860 __HAL_UNLOCK(huart);
2873 uint32_t tmpreg = 0x00U;
2884 tmpreg &= (uint32_t)~((uint32_t)(USART_CR1_TE | USART_CR1_RE));
2887 tmpreg |= (uint32_t)USART_CR1_RE;
2890 WRITE_REG(huart->
Instance->CR1, (uint32_t)tmpreg);
2895 __HAL_UNLOCK(huart);
2930 uint32_t temp1 = 0x00U, temp2 = 0x00U;
2965 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
2992 if ((hdma->
Instance->CR & DMA_SxCR_CIRC) == 0U)
2998 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAT);
3001 ATOMIC_SET_BIT(huart->
Instance->CR1, USART_CR1_TCIE);
3007 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3027 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3047 if ((hdma->
Instance->CR & DMA_SxCR_CIRC) == 0U)
3052 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, USART_CR1_PEIE);
3053 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_EIE);
3057 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_DMAR);
3065 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, USART_CR1_IDLEIE);
3077 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3088 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3116 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3127 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3145 uint32_t dmarequest = 0x00U;
3149 dmarequest = HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAT);
3153 UART_EndTxTransfer(huart);
3157 dmarequest = HAL_IS_BIT_SET(huart->
Instance->CR3, USART_CR3_DMAR);
3161 UART_EndRxTransfer(huart);
3165 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3185 static HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(
UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status,
3186 uint32_t Tickstart, uint32_t Timeout)
3189 while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
3192 if (Timeout != HAL_MAX_DELAY)
3194 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
3200 if ((READ_BIT(huart->
Instance->CR1, USART_CR1_RE) != 0U) && (Flag != UART_FLAG_TXE) && (Flag != UART_FLAG_TC))
3202 if (__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE) == SET)
3205 __HAL_UART_CLEAR_OREFLAG(huart);
3210 UART_EndRxTransfer(huart);
3215 __HAL_UNLOCK(huart);
3248 __HAL_UART_ENABLE_IT(huart, UART_IT_PE);
3252 __HAL_UART_ENABLE_IT(huart, UART_IT_ERR);
3255 __HAL_UART_ENABLE_IT(huart, UART_IT_RXNE);
3294 tmp = (uint32_t *)&pData;
3298 __HAL_UART_CLEAR_OREFLAG(huart);
3303 ATOMIC_SET_BIT(huart->
Instance->CR1, USART_CR1_PEIE);
3307 ATOMIC_SET_BIT(huart->
Instance->CR3, USART_CR3_EIE);
3311 ATOMIC_SET_BIT(huart->
Instance->CR3, USART_CR3_DMAR);
3324 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
3338 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
3339 ATOMIC_CLEAR_BIT(huart->
Instance->CR3, USART_CR3_EIE);
3344 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, USART_CR1_IDLEIE);
3365 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3390 if (huart->
hdmarx != NULL)
3411 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3436 if (huart->
hdmatx != NULL)
3457 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3485 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3514 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3531 const uint16_t *tmp;
3539 huart->
Instance->DR = (uint16_t)(*tmp & (uint16_t)0x01FF);
3550 __HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
3553 __HAL_UART_ENABLE_IT(huart, UART_IT_TC);
3572 __HAL_UART_DISABLE_IT(huart, UART_IT_TC);
3577 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3596 uint8_t *pdata8bits;
3597 uint16_t *pdata16bits;
3605 pdata16bits = (uint16_t *) huart->
pRxBuffPtr;
3606 *pdata16bits = (uint16_t)(huart->
Instance->DR & (uint16_t)0x01FF);
3616 *pdata8bits = (uint8_t)(huart->
Instance->DR & (uint8_t)0x00FF);
3620 *pdata8bits = (uint8_t)(huart->
Instance->DR & (uint8_t)0x007F);
3628 __HAL_UART_DISABLE_IT(huart, UART_IT_RXNE);
3631 __HAL_UART_DISABLE_IT(huart, UART_IT_PE);
3634 __HAL_UART_DISABLE_IT(huart, UART_IT_ERR);
3650 ATOMIC_CLEAR_BIT(huart->
Instance->CR1, USART_CR1_IDLEIE);
3653 if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE))
3656 __HAL_UART_CLEAR_IDLEFLAG(huart);
3659 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3670 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
3703 assert_param(IS_UART_PARITY(huart->
Init.
Parity));
3704 assert_param(IS_UART_MODE(huart->
Init.
Mode));
3720 (uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8),
3728 #if defined(USART6) && defined(UART9) && defined(UART10)
3733 #elif defined(USART6)
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer.
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer in Interrupt mode.
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Start the DMA Transfer with interrupt enabled.
uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma)
Return the DMA error code.
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
uint32_t HAL_RCC_GetPCLK1Freq(void)
Returns the PCLK1 frequency.
uint32_t HAL_RCC_GetPCLK2Freq(void)
Returns the PCLK2 frequency.
HAL_StatusTypeDef HAL_UART_RegisterRxEventCallback(UART_HandleTypeDef *huart, pUART_RxEventCallbackTypeDef pCallback)
Register a User UART Rx Event Callback To be used instead of the weak predefined callback.
HAL_StatusTypeDef HAL_UART_UnRegisterRxEventCallback(UART_HandleTypeDef *huart)
UnRegister the UART Rx Event Callback UART Rx Event Callback is redirected to the weak HAL_UARTEx_RxE...
void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)
UART MSP DeInit.
HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength)
Initializes the LIN mode according to the specified parameters in the UART_InitTypeDef and create the...
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.
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_UART_DeInit(UART_HandleTypeDef *huart)
DeInitializes the UART peripheral.
HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart)
Initializes the half-duplex mode according to the specified parameters in the UART_InitTypeDef and cr...
HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t WakeUpMethod)
Initializes the Multi-Processor mode according to the specified parameters in the UART_InitTypeDef an...
HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
Initializes the UART mode according to the specified parameters in the UART_InitTypeDef and create th...
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
UART MSP Init.
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
Sends an amount of data in blocking mode.
HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart)
Abort ongoing Transmit transfer (Interrupt mode).
HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart)
Abort ongoing transfers (blocking mode).
HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart)
Abort ongoing transfers (Interrupt mode).
HAL_UART_RxEventTypeTypeDef HAL_UARTEx_GetRxEventType(UART_HandleTypeDef *huart)
Provide Rx Event type that has lead to RxEvent callback execution.
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
Rx Transfer completed callbacks.
HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint16_t *RxLen, uint32_t Timeout)
Receive an amount of data in blocking mode till either the expected number of data is received or an ...
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
Tx Transfer completed callbacks.
void HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart)
UART Abort Complete callback.
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).
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)
Sends an amount of data in non blocking mode.
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)
Sends an amount of data in DMA mode.
void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
Rx Half Transfer completed callbacks.
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
UART error callbacks.
HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart)
Pauses the DMA Transfer.
HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart)
Abort ongoing Receive transfer (blocking mode).
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
This function handles UART interrupt request.
HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart)
Abort ongoing Receive transfer (Interrupt mode).
HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart)
Stops the DMA Transfer.
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Receives an amount of data in blocking mode.
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
Reception Event Callback (Rx event notification called after use of advanced reception service).
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Receives an amount of data in DMA mode.
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Receives an amount of data in non blocking mode.
HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Receive an amount of data in interrupt mode till either the expected number of data is received or an...
HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart)
Resumes the DMA Transfer.
void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart)
UART Abort Complete callback.
HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Receive an amount of data in DMA mode till either the expected number of data is received or an IDLE ...
void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart)
Tx Half Transfer completed callbacks.
HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart)
Enables the UART receiver and disables the UART transmitter.
HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart)
Enables the UART transmitter and disables the UART receiver.
HAL_StatusTypeDef HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart)
Enters the UART in mute mode.
HAL_StatusTypeDef HAL_MultiProcessor_ExitMuteMode(UART_HandleTypeDef *huart)
Exits the UART mute mode: wake up software.
HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart)
Transmits break characters.
uint32_t HAL_UART_GetError(const UART_HandleTypeDef *huart)
Return the UART error code.
HAL_UART_StateTypeDef HAL_UART_GetState(const UART_HandleTypeDef *huart)
Returns the UART state.
__IO HAL_UART_RxEventTypeTypeDef RxEventType
__IO uint16_t RxXferCount
__IO HAL_UART_StateTypeDef gState
__IO HAL_UART_StateTypeDef RxState
void(* AbortReceiveCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* RxHalfCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* MspInitCallback)(struct __UART_HandleTypeDef *huart)
void(* TxHalfCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* AbortCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* AbortTransmitCpltCallback)(struct __UART_HandleTypeDef *huart)
__IO uint16_t TxXferCount
void(* MspDeInitCallback)(struct __UART_HandleTypeDef *huart)
void(* RxCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* ErrorCallback)(struct __UART_HandleTypeDef *huart)
void(* TxCpltCallback)(struct __UART_HandleTypeDef *huart)
DMA_HandleTypeDef * hdmarx
void(* RxEventCallback)(struct __UART_HandleTypeDef *huart, uint16_t Pos)
const uint8_t * pTxBuffPtr
__IO HAL_UART_RxTypeTypeDef ReceptionType
DMA_HandleTypeDef * hdmatx
uint32_t HAL_UART_RxEventTypeTypeDef
HAL UART Rx Event type definition.
HAL_UART_CallbackIDTypeDef
HAL UART Callback ID enumeration definition.
HAL_UART_StateTypeDef
HAL UART State structures definition.
void(* pUART_RxEventCallbackTypeDef)(struct __UART_HandleTypeDef *huart, uint16_t Pos)
void(* pUART_CallbackTypeDef)(UART_HandleTypeDef *huart)
HAL UART Callback pointer definition.
@ HAL_UART_TX_COMPLETE_CB_ID
@ HAL_UART_RX_HALFCOMPLETE_CB_ID
@ HAL_UART_TX_HALFCOMPLETE_CB_ID
@ HAL_UART_RX_COMPLETE_CB_ID
@ HAL_UART_MSPDEINIT_CB_ID
@ HAL_UART_ABORT_COMPLETE_CB_ID
@ HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID
@ HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID
UART handle Structure definition.
void UART_InitCallbacksToDefault(UART_HandleTypeDef *huart)
Initialize the callbacks to their default values.
HAL_StatusTypeDef UART_Start_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Start Receive operation in DMA mode.
HAL_StatusTypeDef UART_Start_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
Start Receive operation in interrupt mode.
This file contains all the functions prototypes for the HAL module driver.
DMA handle Structure definition.
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
DMA_Stream_TypeDef * Instance