194 #ifdef HAL_SMARTCARD_MODULE_ENABLED 201 #define SMARTCARD_TEACK_REACK_TIMEOUT 1000U 203 #if defined(USART_CR1_FIFOEN) 204 #define USART_CR1_FIELDS ((uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | \ 205 USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8| \ 208 #define USART_CR1_FIELDS ((uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | \ 209 USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8)) 212 #define USART_CR2_CLK_FIELDS ((uint32_t)(USART_CR2_CLKEN | USART_CR2_CPOL | USART_CR2_CPHA | \ 215 #define USART_CR2_FIELDS ((uint32_t)(USART_CR2_RTOEN | USART_CR2_CLK_FIELDS | USART_CR2_STOP)) 217 #if defined(USART_CR1_FIFOEN) 218 #define USART_CR3_FIELDS ((uint32_t)(USART_CR3_ONEBIT | USART_CR3_NACK | USART_CR3_SCARCNT | \ 219 USART_CR3_TXFTCFG | USART_CR3_RXFTCFG )) 221 #define USART_CR3_FIELDS ((uint32_t)(USART_CR3_ONEBIT | USART_CR3_NACK | USART_CR3_SCARCNT)) 224 #define USART_BRR_MIN 0x10U 226 #define USART_BRR_MAX 0x0000FFFFU 237 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 244 FlagStatus Status, uint32_t Tickstart, uint32_t Timeout);
256 #if defined(USART_CR1_FIFOEN) 261 #if defined(USART_CR1_FIFOEN) 332 if (hsmartcard == NULL)
340 if (hsmartcard->
gState == HAL_SMARTCARD_STATE_RESET)
345 #if USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1 361 hsmartcard->
gState = HAL_SMARTCARD_STATE_BUSY;
373 SET_BIT(hsmartcard->
Instance->CR3, USART_CR3_SCEN);
382 SMARTCARD_TRANSMISSION_COMPLETION_SETTING(hsmartcard);
390 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_UE);
405 if (hsmartcard == NULL)
413 hsmartcard->
gState = HAL_SMARTCARD_STATE_BUSY;
418 WRITE_REG(hsmartcard->
Instance->CR1, 0x0U);
419 WRITE_REG(hsmartcard->
Instance->CR2, 0x0U);
420 WRITE_REG(hsmartcard->
Instance->CR3, 0x0U);
421 WRITE_REG(hsmartcard->
Instance->RTOR, 0x0U);
422 WRITE_REG(hsmartcard->
Instance->GTPR, 0x0U);
425 #if USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1 436 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_NONE;
437 hsmartcard->
gState = HAL_SMARTCARD_STATE_RESET;
438 hsmartcard->
RxState = HAL_SMARTCARD_STATE_RESET;
478 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 501 HAL_StatusTypeDef status =
HAL_OK;
503 if (pCallback == NULL)
506 hsmartcard->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
513 if (hsmartcard->
gState == HAL_SMARTCARD_STATE_READY)
542 #if defined(USART_CR1_FIFOEN) 562 hsmartcard->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
569 else if (hsmartcard->
gState == HAL_SMARTCARD_STATE_RESET)
583 hsmartcard->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
593 hsmartcard->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
626 HAL_StatusTypeDef status =
HAL_OK;
631 if (HAL_SMARTCARD_STATE_READY == hsmartcard->
gState)
659 #if defined(USART_CR1_FIFOEN) 679 hsmartcard->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
686 else if (HAL_SMARTCARD_STATE_RESET == hsmartcard->
gState)
700 hsmartcard->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
710 hsmartcard->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
822 uint8_t *ptmpdata = pData;
825 if (hsmartcard->
gState == HAL_SMARTCARD_STATE_READY)
827 if ((ptmpdata == NULL) || (Size == 0U))
835 hsmartcard->
gState = HAL_SMARTCARD_STATE_BUSY_TX;
845 SET_BIT(hsmartcard->
Instance->RQR, (uint16_t)SMARTCARD_RXDATA_FLUSH_REQUEST);
846 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_TE);
849 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_UE);
851 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_NONE;
862 hsmartcard->
Instance->TDR = (uint8_t)(*ptmpdata & 0xFFU);
871 if (hsmartcard->
Init.
Mode == SMARTCARD_MODE_TX_RX)
875 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_RE);
877 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_UE);
881 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
911 uint8_t *ptmpdata = pData;
914 if (hsmartcard->
RxState == HAL_SMARTCARD_STATE_READY)
916 if ((ptmpdata == NULL) || (Size == 0U))
924 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_NONE;
925 hsmartcard->
RxState = HAL_SMARTCARD_STATE_BUSY_RX;
942 *ptmpdata = (uint8_t)(hsmartcard->
Instance->RDR & (uint8_t)0x00FF);
947 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
978 if (hsmartcard->
gState == HAL_SMARTCARD_STATE_READY)
980 if ((pData == NULL) || (Size == 0U))
988 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_NONE;
989 hsmartcard->
gState = HAL_SMARTCARD_STATE_BUSY_TX;
994 hsmartcard->
TxISR = NULL;
1001 SET_BIT(hsmartcard->
Instance->RQR, (uint16_t)SMARTCARD_RXDATA_FLUSH_REQUEST);
1002 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_TE);
1005 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_UE);
1008 #if defined(USART_CR1_FIFOEN) 1009 if (hsmartcard->
FifoMode == SMARTCARD_FIFOMODE_ENABLE)
1018 SET_BIT(hsmartcard->
Instance->CR3, USART_CR3_EIE);
1021 SET_BIT(hsmartcard->
Instance->CR3, USART_CR3_TXFTIE);
1032 SET_BIT(hsmartcard->
Instance->CR3, USART_CR3_EIE);
1035 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_TXEIE_TXFNFIE);
1045 SET_BIT(hsmartcard->
Instance->CR3, USART_CR3_EIE);
1048 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_TXEIE);
1077 if (hsmartcard->
RxState == HAL_SMARTCARD_STATE_READY)
1079 if ((pData == NULL) || (Size == 0U))
1087 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_NONE;
1088 hsmartcard->
RxState = HAL_SMARTCARD_STATE_BUSY_RX;
1095 #if defined(USART_CR1_FIFOEN) 1105 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_PEIE);
1106 SET_BIT(hsmartcard->
Instance->CR3, USART_CR3_RXFTIE);
1117 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE);
1127 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE);
1131 SET_BIT(hsmartcard->
Instance->CR3, USART_CR3_EIE);
1152 if (hsmartcard->
gState == HAL_SMARTCARD_STATE_READY)
1154 if ((pData == NULL) || (Size == 0U))
1162 hsmartcard->
gState = HAL_SMARTCARD_STATE_BUSY_TX;
1164 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_NONE;
1174 SET_BIT(hsmartcard->
Instance->RQR, (uint16_t)SMARTCARD_RXDATA_FLUSH_REQUEST);
1175 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_TE);
1178 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_UE);
1200 SET_BIT(hsmartcard->
Instance->CR3, USART_CR3_EIE);
1204 SET_BIT(hsmartcard->
Instance->CR3, USART_CR3_DMAT);
1211 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_DMA;
1217 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
1241 if (hsmartcard->
RxState == HAL_SMARTCARD_STATE_READY)
1243 if ((pData == NULL) || (Size == 0U))
1251 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_NONE;
1252 hsmartcard->
RxState = HAL_SMARTCARD_STATE_BUSY_RX;
1274 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_PEIE);
1277 SET_BIT(hsmartcard->
Instance->CR3, USART_CR3_EIE);
1281 SET_BIT(hsmartcard->
Instance->CR3, USART_CR3_DMAR);
1288 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_DMA;
1294 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
1320 #if defined(USART_CR1_FIFOEN) 1323 (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE | USART_CR1_RTOIE |
1325 CLEAR_BIT(hsmartcard->
Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE));
1329 (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE | USART_CR1_RTOIE | USART_CR1_EOBIE));
1334 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAT))
1339 if (hsmartcard->
hdmatx != NULL)
1350 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_DMA;
1359 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAR))
1364 if (hsmartcard->
hdmarx != NULL)
1375 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_DMA;
1388 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard,
1389 SMARTCARD_CLEAR_OREF | SMARTCARD_CLEAR_NEF | SMARTCARD_CLEAR_PEF | SMARTCARD_CLEAR_FEF | SMARTCARD_CLEAR_RTOF |
1390 SMARTCARD_CLEAR_EOBF);
1393 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
1394 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
1397 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_NONE;
1417 #if defined(USART_CR1_FIFOEN) 1419 CLEAR_BIT(hsmartcard->
Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE));
1427 if (hsmartcard->
RxState == HAL_SMARTCARD_STATE_READY)
1434 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAT))
1439 if (hsmartcard->
hdmatx != NULL)
1450 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_DMA;
1462 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, SMARTCARD_CLEAR_FEF);
1465 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
1485 #if defined(USART_CR1_FIFOEN) 1487 CLEAR_BIT(hsmartcard->
Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_RTOIE | USART_CR1_EOBIE));
1491 CLEAR_BIT(hsmartcard->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_RTOIE | USART_CR1_EOBIE));
1496 if (hsmartcard->
gState == HAL_SMARTCARD_STATE_READY)
1503 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAR))
1508 if (hsmartcard->
hdmarx != NULL)
1519 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_DMA;
1531 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard,
1532 SMARTCARD_CLEAR_OREF | SMARTCARD_CLEAR_NEF | SMARTCARD_CLEAR_PEF | SMARTCARD_CLEAR_FEF | SMARTCARD_CLEAR_RTOF |
1533 SMARTCARD_CLEAR_EOBF);
1536 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
1558 uint32_t abortcplt = 1U;
1560 #if defined(USART_CR1_FIFOEN) 1563 (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE | USART_CR1_RTOIE |
1565 CLEAR_BIT(hsmartcard->
Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE | USART_CR3_TXFTIE));
1569 (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE | USART_CR1_RTOIE | USART_CR1_EOBIE));
1576 if (hsmartcard->
hdmatx != NULL)
1580 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAT))
1590 if (hsmartcard->
hdmarx != NULL)
1594 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAR))
1605 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAT))
1611 if (hsmartcard->
hdmatx != NULL)
1629 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAR))
1634 if (hsmartcard->
hdmarx != NULL)
1653 if (abortcplt == 1U)
1660 hsmartcard->
RxISR = NULL;
1661 hsmartcard->
TxISR = NULL;
1664 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_NONE;
1667 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard,
1668 SMARTCARD_CLEAR_OREF | SMARTCARD_CLEAR_NEF | SMARTCARD_CLEAR_PEF | SMARTCARD_CLEAR_FEF | SMARTCARD_CLEAR_RTOF |
1669 SMARTCARD_CLEAR_EOBF);
1672 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
1673 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
1676 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 1705 #if defined(USART_CR1_FIFOEN) 1707 CLEAR_BIT(hsmartcard->
Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE));
1715 if (hsmartcard->
RxState == HAL_SMARTCARD_STATE_READY)
1722 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAT))
1727 if (hsmartcard->
hdmatx != NULL)
1746 hsmartcard->
TxISR = NULL;
1749 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
1752 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 1767 hsmartcard->
TxISR = NULL;
1770 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, SMARTCARD_CLEAR_FEF);
1773 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
1776 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 1805 #if defined(USART_CR1_FIFOEN) 1807 CLEAR_BIT(hsmartcard->
Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_RTOIE | USART_CR1_EOBIE));
1811 CLEAR_BIT(hsmartcard->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_RTOIE | USART_CR1_EOBIE));
1816 if (hsmartcard->
gState == HAL_SMARTCARD_STATE_READY)
1823 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAR))
1828 if (hsmartcard->
hdmarx != NULL)
1847 hsmartcard->
RxISR = NULL;
1850 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard,
1851 SMARTCARD_CLEAR_OREF | SMARTCARD_CLEAR_NEF | SMARTCARD_CLEAR_PEF | SMARTCARD_CLEAR_FEF | SMARTCARD_CLEAR_RTOF |
1852 SMARTCARD_CLEAR_EOBF);
1855 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
1858 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 1873 hsmartcard->
RxISR = NULL;
1876 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard,
1877 SMARTCARD_CLEAR_OREF | SMARTCARD_CLEAR_NEF | SMARTCARD_CLEAR_PEF | SMARTCARD_CLEAR_FEF | SMARTCARD_CLEAR_RTOF |
1878 SMARTCARD_CLEAR_EOBF);
1881 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
1884 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 1904 uint32_t isrflags = READ_REG(hsmartcard->
Instance->ISR);
1905 uint32_t cr1its = READ_REG(hsmartcard->
Instance->CR1);
1906 uint32_t cr3its = READ_REG(hsmartcard->
Instance->CR3);
1907 uint32_t errorflags;
1911 errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE | USART_ISR_RTOF));
1912 if (errorflags == 0U)
1915 #if defined(USART_CR1_FIFOEN) 1916 if (((isrflags & USART_ISR_RXNE_RXFNE) != 0U)
1917 && (((cr1its & USART_CR1_RXNEIE_RXFNEIE) != 0U)
1918 || ((cr3its & USART_CR3_RXFTIE) != 0U)))
1920 if (((isrflags & USART_ISR_RXNE) != 0U)
1921 && ((cr1its & USART_CR1_RXNEIE) != 0U))
1924 if (hsmartcard->
RxISR != NULL)
1926 hsmartcard->
RxISR(hsmartcard);
1933 #if defined(USART_CR1_FIFOEN) 1934 if ((errorflags != 0U)
1935 && ((((cr3its & (USART_CR3_RXFTIE | USART_CR3_EIE)) != 0U)
1936 || ((cr1its & (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)) != 0U))))
1938 if ((errorflags != 0U)
1939 && (((cr3its & USART_CR3_EIE) != 0U)
1940 || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE)) != 0U)))
1944 if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U))
1946 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_PEF);
1948 hsmartcard->
ErrorCode |= HAL_SMARTCARD_ERROR_PE;
1952 if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))
1954 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_FEF);
1956 hsmartcard->
ErrorCode |= HAL_SMARTCARD_ERROR_FE;
1960 if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))
1962 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_NEF);
1964 hsmartcard->
ErrorCode |= HAL_SMARTCARD_ERROR_NE;
1968 #if defined(USART_CR1_FIFOEN) 1969 if (((isrflags & USART_ISR_ORE) != 0U)
1970 && (((cr1its & USART_CR1_RXNEIE_RXFNEIE) != 0U)
1971 || ((cr3its & USART_CR3_RXFTIE) != 0U)
1972 || ((cr3its & USART_CR3_EIE) != 0U)))
1974 if (((isrflags & USART_ISR_ORE) != 0U)
1975 && (((cr1its & USART_CR1_RXNEIE) != 0U)
1976 || ((cr3its & USART_CR3_EIE) != 0U)))
1979 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_OREF);
1981 hsmartcard->
ErrorCode |= HAL_SMARTCARD_ERROR_ORE;
1985 if (((isrflags & USART_ISR_RTOF) != 0U) && ((cr1its & USART_CR1_RTOIE) != 0U))
1987 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_RTOF);
1989 hsmartcard->
ErrorCode |= HAL_SMARTCARD_ERROR_RTO;
1993 if (hsmartcard->
ErrorCode != HAL_SMARTCARD_ERROR_NONE)
1996 #if defined(USART_CR1_FIFOEN) 1997 if (((isrflags & USART_ISR_RXNE_RXFNE) != 0U)
1998 && (((cr1its & USART_CR1_RXNEIE_RXFNEIE) != 0U)
1999 || ((cr3its & USART_CR3_RXFTIE) != 0U)))
2001 if (((isrflags & USART_ISR_RXNE) != 0U)
2002 && ((cr1its & USART_CR1_RXNEIE) != 0U))
2005 if (hsmartcard->
RxISR != NULL)
2007 hsmartcard->
RxISR(hsmartcard);
2017 if ((HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAR))
2018 || ((errorcode & (HAL_SMARTCARD_ERROR_RTO | HAL_SMARTCARD_ERROR_ORE)) != 0U))
2026 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAR))
2031 if (hsmartcard->
hdmarx != NULL)
2046 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2057 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2069 else if ((hsmartcard->
gState == HAL_SMARTCARD_STATE_BUSY_TX)
2070 && ((errorcode & HAL_SMARTCARD_ERROR_FE) != 0U))
2078 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAT))
2083 if (hsmartcard->
hdmatx != NULL)
2098 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2109 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2122 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2129 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_NONE;
2137 if (((isrflags & USART_ISR_EOBF) != 0U) && ((cr1its & USART_CR1_EOBIE) != 0U))
2139 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
2141 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2150 __HAL_SMARTCARD_CLEAR_IT(hsmartcard, SMARTCARD_CLEAR_EOBF);
2155 #if defined(USART_CR1_FIFOEN) 2156 if (((isrflags & USART_ISR_TXE_TXFNF) != 0U)
2157 && (((cr1its & USART_CR1_TXEIE_TXFNFIE) != 0U)
2158 || ((cr3its & USART_CR3_TXFTIE) != 0U)))
2160 if (((isrflags & USART_ISR_TXE) != 0U)
2161 && ((cr1its & USART_CR1_TXEIE) != 0U))
2164 if (hsmartcard->
TxISR != NULL)
2166 hsmartcard->
TxISR(hsmartcard);
2181 #if defined(USART_CR1_FIFOEN) 2183 if (((isrflags & USART_ISR_TXFE) != 0U) && ((cr1its & USART_CR1_TXFEIE) != 0U))
2185 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2196 if (((isrflags & USART_ISR_RXFF) != 0U) && ((cr1its & USART_CR1_RXFFIE) != 0U))
2198 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2340 temp1 = (uint32_t)hsmartcard->
gState;
2341 temp2 = (uint32_t)hsmartcard->
RxState;
2369 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2384 #if defined(USART_CR1_FIFOEN) 2402 HAL_StatusTypeDef ret =
HAL_OK;
2403 #if defined(USART_PRESC_PRESCALER) 2404 const uint16_t SMARTCARDPrescTable[12] = {1U, 2U, 4U, 6U, 8U, 10U, 12U, 16U, 32U, 64U, 128U, 256U};
2421 #if defined(USART_PRESC_PRESCALER) 2431 #if defined(USART_CR1_FIFOEN) 2459 #if defined(USART_PRESC_PRESCALER) 2468 MODIFY_REG(hsmartcard->
Instance->GTPR, (uint16_t)(USART_GTPR_GT | USART_GTPR_PSC), (uint16_t)tmpreg);
2471 tmpreg = ((uint32_t)hsmartcard->
Init.
BlockLength << USART_RTOR_BLEN_Pos);
2480 SMARTCARD_GETCLOCKSOURCE(hsmartcard, clocksource);
2482 switch (clocksource)
2485 #if defined(USART_PRESC_PRESCALER) 2492 #if defined(USART_PRESC_PRESCALER) 2499 #if defined(USART_PRESC_PRESCALER) 2506 #if defined(USART_PRESC_PRESCALER) 2513 #if defined(USART_PRESC_PRESCALER) 2525 if ((tmpreg >= USART_BRR_MIN) && (tmpreg <= USART_BRR_MAX))
2527 hsmartcard->
Instance->BRR = tmpreg;
2534 #if defined(USART_CR1_FIFOEN) 2541 hsmartcard->
RxISR = NULL;
2542 hsmartcard->
TxISR = NULL;
2621 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_NONE;
2627 if ((hsmartcard->
Instance->CR1 & USART_CR1_TE) == USART_CR1_TE)
2631 SMARTCARD_TEACK_REACK_TIMEOUT) !=
HAL_OK)
2638 if ((hsmartcard->
Instance->CR1 & USART_CR1_RE) == USART_CR1_RE)
2642 SMARTCARD_TEACK_REACK_TIMEOUT) !=
HAL_OK)
2650 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
2651 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
2670 FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
2673 while ((__HAL_SMARTCARD_GET_FLAG(hsmartcard, Flag) ? SET : RESET) == Status)
2676 if (Timeout != HAL_MAX_DELAY)
2678 if (((
HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
2681 #if defined(USART_CR1_FIFOEN) 2682 CLEAR_BIT(hsmartcard->
Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_TXEIE_TXFNFIE));
2684 CLEAR_BIT(hsmartcard->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
2688 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
2689 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
2710 #if defined(USART_CR1_FIFOEN) 2711 CLEAR_BIT(hsmartcard->
Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE));
2718 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
2731 #if defined(USART_CR1_FIFOEN) 2732 CLEAR_BIT(hsmartcard->
Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE));
2739 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
2782 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
2784 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2804 if (hsmartcard->
gState == HAL_SMARTCARD_STATE_BUSY_TX)
2806 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAT))
2814 if (hsmartcard->
RxState == HAL_SMARTCARD_STATE_BUSY_RX)
2816 if (HAL_IS_BIT_SET(hsmartcard->
Instance->CR3, USART_CR3_DMAR))
2823 hsmartcard->
ErrorCode |= HAL_SMARTCARD_ERROR_DMA;
2824 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2845 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2869 if (hsmartcard->
hdmarx != NULL)
2882 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_NONE;
2885 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard,
2886 SMARTCARD_CLEAR_OREF | SMARTCARD_CLEAR_NEF | SMARTCARD_CLEAR_PEF | SMARTCARD_CLEAR_FEF | SMARTCARD_CLEAR_RTOF |
2887 SMARTCARD_CLEAR_EOBF);
2890 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
2891 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
2893 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2918 if (hsmartcard->
hdmatx != NULL)
2931 hsmartcard->
ErrorCode = HAL_SMARTCARD_ERROR_NONE;
2934 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard,
2935 SMARTCARD_CLEAR_OREF | SMARTCARD_CLEAR_NEF | SMARTCARD_CLEAR_PEF | SMARTCARD_CLEAR_FEF | SMARTCARD_CLEAR_RTOF |
2936 SMARTCARD_CLEAR_EOBF);
2939 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
2940 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
2942 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2967 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard, SMARTCARD_CLEAR_FEF);
2970 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
2972 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 2996 __HAL_SMARTCARD_CLEAR_FLAG(hsmartcard,
2997 SMARTCARD_CLEAR_OREF | SMARTCARD_CLEAR_NEF | SMARTCARD_CLEAR_PEF | SMARTCARD_CLEAR_FEF | SMARTCARD_CLEAR_RTOF |
2998 SMARTCARD_CLEAR_EOBF);
3001 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
3003 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 3024 if (hsmartcard->
gState == HAL_SMARTCARD_STATE_BUSY_TX)
3029 #if defined(USART_CR1_FIFOEN) 3047 #if defined(USART_CR1_FIFOEN) 3059 uint16_t nb_tx_data;
3062 if (hsmartcard->
gState == HAL_SMARTCARD_STATE_BUSY_TX)
3064 for (nb_tx_data = hsmartcard->
NbTxDataToProcess ; nb_tx_data > 0U ; nb_tx_data--)
3074 else if (READ_BIT(hsmartcard->
Instance->ISR, USART_ISR_TXE_TXFNF) != 0U)
3101 if (hsmartcard->
RxState == HAL_SMARTCARD_STATE_READY)
3108 if (hsmartcard->
Init.
Mode == SMARTCARD_MODE_TX_RX)
3112 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_RE);
3114 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_UE);
3118 hsmartcard->
gState = HAL_SMARTCARD_STATE_READY;
3121 hsmartcard->
TxISR = NULL;
3123 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 3144 if (hsmartcard->
RxState == HAL_SMARTCARD_STATE_BUSY_RX)
3152 #if defined(USART_CR1_FIFOEN) 3159 if (hsmartcard->
gState == HAL_SMARTCARD_STATE_READY)
3168 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
3171 hsmartcard->
RxISR = NULL;
3173 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 3185 __HAL_SMARTCARD_SEND_REQ(hsmartcard, SMARTCARD_RXDATA_FLUSH_REQUEST);
3189 #if defined(USART_CR1_FIFOEN) 3201 uint16_t nb_rx_data;
3202 uint16_t rxdatacount;
3205 if (hsmartcard->
RxState == HAL_SMARTCARD_STATE_BUSY_RX)
3207 for (nb_rx_data = hsmartcard->
NbRxDataToProcess ; nb_rx_data > 0U ; nb_rx_data--)
3218 if (hsmartcard->
gState == HAL_SMARTCARD_STATE_READY)
3227 hsmartcard->
RxState = HAL_SMARTCARD_STATE_READY;
3230 hsmartcard->
RxISR = NULL;
3232 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 3247 if (((rxdatacount != 0U)) && (rxdatacount < hsmartcard->NbRxDataToProcess))
3256 SET_BIT(hsmartcard->
Instance->CR1, USART_CR1_RXNEIE_RXFNEIE);
3262 __HAL_SMARTCARD_SEND_REQ(hsmartcard, SMARTCARD_RXDATA_FLUSH_REQUEST);
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
void(* TxCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
static void SMARTCARD_EndRxTransfer(SMARTCARD_HandleTypeDef *hsmartcard)
End ongoing Rx transfer on UART peripheral (following error detection or Reception completion)...
void HAL_SMARTCARD_MspDeInit(SMARTCARD_HandleTypeDef *hsmartcard)
DeInitialize the SMARTCARD MSP.
void(* RxISR)(struct __SMARTCARD_HandleTypeDef *huart)
void(* TxISR)(struct __SMARTCARD_HandleTypeDef *huart)
static void SMARTCARD_AdvFeatureConfig(SMARTCARD_HandleTypeDef *hsmartcard)
Configure the SMARTCARD associated USART peripheral advanced features.
DMA handle Structure definition.
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
static HAL_StatusTypeDef SMARTCARD_SetConfig(SMARTCARD_HandleTypeDef *hsmartcard)
Configure the SMARTCARD associated USART peripheral.
uint16_t TxCompletionIndication
void(* AbortTransmitCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
HAL_StatusTypeDef HAL_SMARTCARD_Abort(SMARTCARD_HandleTypeDef *hsmartcard)
Abort ongoing transfers (blocking mode).
__IO HAL_SMARTCARD_StateTypeDef gState
void(* TxFifoEmptyCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
static void SMARTCARD_RxISR_FIFOEN(SMARTCARD_HandleTypeDef *hsmartcard)
Receive an amount of data in non-blocking mode.
HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(SMARTCARD_HandleTypeDef *hsmartcard)
Return the SMARTCARD handle state.
HAL_StatusTypeDef HAL_SMARTCARD_Receive_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size)
Receive an amount of data in interrupt mode.
void HAL_SMARTCARDEx_TxFifoEmptyCallback(SMARTCARD_HandleTypeDef *hsmartcard)
SMARTCARD TX Fifo empty callback.
HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive_IT(SMARTCARD_HandleTypeDef *hsmartcard)
Abort ongoing Receive transfer (Interrupt mode).
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit_IT(SMARTCARD_HandleTypeDef *hsmartcard)
Abort ongoing Transmit transfer (Interrupt mode).
static void SMARTCARD_EndTxTransfer(SMARTCARD_HandleTypeDef *hsmartcard)
End ongoing Tx transfer on SMARTCARD peripheral (following error detection or Transmit completion)...
static void SMARTCARD_EndTransmit_IT(SMARTCARD_HandleTypeDef *hsmartcard)
Wrap up transmission in non-blocking mode.
HAL_StatusTypeDef HAL_SMARTCARD_Init(SMARTCARD_HandleTypeDef *hsmartcard)
Initialize the SMARTCARD mode according to the specified parameters in the SMARTCARD_HandleTypeDef an...
uint32_t HAL_SMARTCARD_StateTypeDef
HAL SMARTCARD State definition.
void HAL_SMARTCARD_RxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard)
Rx Transfer completed callback.
uint32_t HAL_SMARTCARD_GetError(SMARTCARD_HandleTypeDef *hsmartcard)
Return the SMARTCARD handle error code.
static void SMARTCARD_DMATransmitCplt(DMA_HandleTypeDef *hdma)
DMA SMARTCARD transmit process complete callback.
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
HAL_StatusTypeDef HAL_SMARTCARD_UnRegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard, HAL_SMARTCARD_CallbackIDTypeDef CallbackID)
Unregister an SMARTCARD callback SMARTCARD callback is redirected to the weak predefined callback...
void HAL_SMARTCARD_ErrorCallback(SMARTCARD_HandleTypeDef *hsmartcard)
SMARTCARD error callback.
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer in Interrupt mode.
static void SMARTCARD_DMAReceiveCplt(DMA_HandleTypeDef *hdma)
DMA SMARTCARD receive process complete callback.
uint32_t HAL_RCC_GetPCLK2Freq(void)
Return the PCLK2 frequency.
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.
static void SMARTCARD_DMARxAbortCallback(DMA_HandleTypeDef *hdma)
DMA SMARTCARD Rx communication abort callback, when initiated by user (To be called at end of DMA Rx ...
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
void HAL_SMARTCARD_IRQHandler(SMARTCARD_HandleTypeDef *hsmartcard)
Handle SMARTCARD interrupt requests.
uint32_t DMADisableonRxError
void HAL_SMARTCARD_MspInit(SMARTCARD_HandleTypeDef *hsmartcard)
Initialize the SMARTCARD MSP.
static void SMARTCARD_DMAAbortOnError(DMA_HandleTypeDef *hdma)
DMA SMARTCARD communication abort callback, when initiated by HAL services on Error (To be called at ...
void SMARTCARD_InitCallbacksToDefault(SMARTCARD_HandleTypeDef *hsmartcard)
Initialize the callbacks to their default values.
static void SMARTCARD_DMATxOnlyAbortCallback(DMA_HandleTypeDef *hdma)
DMA SMARTCARD Tx communication abort callback, when initiated by user by a call to HAL_SMARTCARD_Abor...
DMA_HandleTypeDef * hdmatx
uint16_t NbTxDataToProcess
static void SMARTCARD_TxISR(SMARTCARD_HandleTypeDef *hsmartcard)
Send an amount of data in non-blocking mode.
static void SMARTCARD_DMAError(DMA_HandleTypeDef *hdma)
DMA SMARTCARD communication error callback.
void HAL_SMARTCARD_AbortCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard)
SMARTCARD Abort Complete callback.
static HAL_StatusTypeDef SMARTCARD_WaitOnFlagUntilTimeout(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
Handle SMARTCARD Communication Timeout.
void(* AbortReceiveCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
static void SMARTCARD_DMARxOnlyAbortCallback(DMA_HandleTypeDef *hdma)
DMA SMARTCARD Rx communication abort callback, when initiated by user by a call to HAL_SMARTCARD_Abor...
void(* ErrorCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Send an amount of data in blocking mode.
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Abort the DMA Transfer.
uint32_t TxPinLevelInvert
void HAL_SMARTCARD_AbortReceiveCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard)
SMARTCARD Abort Receive Complete callback.
HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Receive an amount of data in blocking mode.
HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit(SMARTCARD_HandleTypeDef *hsmartcard)
Abort ongoing Transmit transfer (blocking mode).
SMARTCARD_AdvFeatureInitTypeDef AdvancedInit
DMA_HandleTypeDef * hdmarx
HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive(SMARTCARD_HandleTypeDef *hsmartcard)
Abort ongoing Receive transfer (blocking mode).
SMARTCARD_ClockSourceTypeDef
SMARTCARD clock sources.
HAL_StatusTypeDef HAL_SMARTCARD_Abort_IT(SMARTCARD_HandleTypeDef *hsmartcard)
Abort ongoing transfers (Interrupt mode).
SMARTCARD_InitTypeDef Init
void(* pSMARTCARD_CallbackTypeDef)(SMARTCARD_HandleTypeDef *hsmartcard)
HAL SMARTCARD Callback pointer definition.
HAL_StatusTypeDef HAL_SMARTCARD_DeInit(SMARTCARD_HandleTypeDef *hsmartcard)
DeInitialize the SMARTCARD peripheral.
HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size)
Send an amount of data in DMA mode.
void(* MspInitCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
static void SMARTCARD_DMATxAbortCallback(DMA_HandleTypeDef *hdma)
DMA SMARTCARD Tx communication abort callback, when initiated by user (To be called at end of DMA Tx ...
void HAL_SMARTCARDEx_RxFifoFullCallback(SMARTCARD_HandleTypeDef *hsmartcard)
SMARTCARD RX Fifo full callback.
static void SMARTCARD_RxISR(SMARTCARD_HandleTypeDef *hsmartcard)
Receive an amount of data in non-blocking mode.
uint32_t RxPinLevelInvert
HAL_SMARTCARD_CallbackIDTypeDef
HAL SMARTCARD Callback ID enumeration definition.
void(* MspDeInitCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
void(* RxCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
void HAL_SMARTCARD_AbortTransmitCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard)
SMARTCARD Abort Complete callback.
uint32_t HAL_RCC_GetSysClockFreq(void)
Return the SYSCLK frequency.
void(* RxFifoFullCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
uint16_t NbRxDataToProcess
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
HAL_StatusTypeDef HAL_SMARTCARD_RegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard, HAL_SMARTCARD_CallbackIDTypeDef CallbackID, pSMARTCARD_CallbackTypeDef pCallback)
Register a User SMARTCARD Callback To be used instead of the weak predefined callback.
__IO HAL_SMARTCARD_StateTypeDef RxState
HAL_StatusTypeDef HAL_SMARTCARD_Receive_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size)
Receive an amount of data in DMA mode.
uint32_t HAL_RCC_GetPCLK1Freq(void)
Return the PCLK1 frequency.
__IO uint16_t TxXferCount
void HAL_SMARTCARD_TxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard)
Tx Transfer completed callback.
void(* AbortCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard)
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size)
Send an amount of data in interrupt mode.
static void SMARTCARD_TxISR_FIFOEN(SMARTCARD_HandleTypeDef *hsmartcard)
Send an amount of data in non-blocking mode.
SMARTCARD handle Structure definition.
static HAL_StatusTypeDef SMARTCARD_CheckIdleState(SMARTCARD_HandleTypeDef *hsmartcard)
Check the SMARTCARD Idle State.
__IO uint16_t RxXferCount
uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma)
Return the DMA error code.