186#ifdef HAL_SMARTCARD_MODULE_ENABLED
202#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
316#if USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1
317 SMARTCARD_InitCallbacksToDefault(hsc);
319 if (hsc->MspInitCallback == NULL)
325 hsc->MspInitCallback(hsc);
341 SMARTCARD_SetConfig(hsc);
346 CLEAR_BIT(hsc->
Instance->CR2, USART_CR2_LINEN);
347 CLEAR_BIT(hsc->
Instance->CR3, (USART_CR3_IREN | USART_CR3_HDSEL));
350 SET_BIT(hsc->
Instance->CR1, USART_CR1_PEIE);
353 SET_BIT(hsc->
Instance->CR3, USART_CR3_EIE);
362 hsc->
Instance->CR3 |= (USART_CR3_SCEN);
395#if USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1
396 if (hsc->MspDeInitCallback == NULL)
401 hsc->MspDeInitCallback(hsc);
448#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
473 if (pCallback == NULL)
476 hsc->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
486 case HAL_SMARTCARD_TX_COMPLETE_CB_ID :
487 hsc->TxCpltCallback = pCallback;
490 case HAL_SMARTCARD_RX_COMPLETE_CB_ID :
491 hsc->RxCpltCallback = pCallback;
494 case HAL_SMARTCARD_ERROR_CB_ID :
495 hsc->ErrorCallback = pCallback;
498 case HAL_SMARTCARD_ABORT_COMPLETE_CB_ID :
499 hsc->AbortCpltCallback = pCallback;
502 case HAL_SMARTCARD_ABORT_TRANSMIT_COMPLETE_CB_ID :
503 hsc->AbortTransmitCpltCallback = pCallback;
506 case HAL_SMARTCARD_ABORT_RECEIVE_COMPLETE_CB_ID :
507 hsc->AbortReceiveCpltCallback = pCallback;
511 case HAL_SMARTCARD_MSPINIT_CB_ID :
512 hsc->MspInitCallback = pCallback;
515 case HAL_SMARTCARD_MSPDEINIT_CB_ID :
516 hsc->MspDeInitCallback = pCallback;
521 hsc->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
532 case HAL_SMARTCARD_MSPINIT_CB_ID :
533 hsc->MspInitCallback = pCallback;
536 case HAL_SMARTCARD_MSPDEINIT_CB_ID :
537 hsc->MspDeInitCallback = pCallback;
542 hsc->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
552 hsc->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
588 case HAL_SMARTCARD_TX_COMPLETE_CB_ID :
592 case HAL_SMARTCARD_RX_COMPLETE_CB_ID :
596 case HAL_SMARTCARD_ERROR_CB_ID :
600 case HAL_SMARTCARD_ABORT_COMPLETE_CB_ID :
604 case HAL_SMARTCARD_ABORT_TRANSMIT_COMPLETE_CB_ID :
608 case HAL_SMARTCARD_ABORT_RECEIVE_COMPLETE_CB_ID :
613 case HAL_SMARTCARD_MSPINIT_CB_ID :
617 case HAL_SMARTCARD_MSPDEINIT_CB_ID :
623 hsc->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
634 case HAL_SMARTCARD_MSPINIT_CB_ID :
638 case HAL_SMARTCARD_MSPDEINIT_CB_ID :
644 hsc->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
654 hsc->
ErrorCode |= HAL_SMARTCARD_ERROR_INVALID_CALLBACK;
756 const uint8_t *tmp = pData;
757 uint32_t tickstart = 0U;
761 if((pData == NULL) || (Size == 0U))
784 hsc->
Instance->DR = (uint8_t)(*tmp & 0xFFU);
818 uint8_t *tmp = pData;
819 uint32_t tickstart = 0U;
823 if((pData == NULL) || (Size == 0U))
848 *tmp = (uint8_t)(hsc->
Instance->DR & (uint8_t)0xFFU);
879 if((pData == NULL) || (Size == 0U))
898 SET_BIT(hsc->
Instance->CR1, USART_CR1_PEIE);
901 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_EIE);
904 SET_BIT(hsc->
Instance->CR1, USART_CR1_TXEIE);
927 if((pData == NULL) || (Size == 0U))
946 SET_BIT(hsc->
Instance->CR1, USART_CR1_PEIE| USART_CR1_RXNEIE);
949 SET_BIT(hsc->
Instance->CR3, USART_CR3_EIE);
974 if((pData == NULL) || (Size == 0U))
999 tmp = (
const uint32_t*)&pData;
1010 SET_BIT(hsc->
Instance->CR3, USART_CR3_DMAT);
1050 if((pData == NULL) || (Size == 0U))
1074 tmp = (uint32_t*)&pData;
1084 SET_BIT(hsc->
Instance->CR1, USART_CR1_PEIE);
1087 SET_BIT(hsc->
Instance->CR3, USART_CR3_EIE);
1091 SET_BIT(hsc->
Instance->CR3, USART_CR3_DMAR);
1130 CLEAR_BIT(hsc->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE));
1131 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_EIE);
1136 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_DMAT);
1152 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_DMAR);
1194 CLEAR_BIT(hsc->
Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
1199 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_DMAT);
1236 CLEAR_BIT(hsc->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
1237 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_EIE);
1242 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_DMAR);
1280 uint32_t AbortCplt = 0x01U;
1283 CLEAR_BIT(hsc->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE));
1284 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_EIE);
1321 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_DMAT);
1344 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_DMAR);
1366 if(AbortCplt == 0x01U)
1380#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
1382 hsc->AbortCpltCallback(hsc);
1408 CLEAR_BIT(hsc->
Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
1413 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_DMAT);
1438#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
1440 hsc->AbortTransmitCpltCallback(hsc);
1456#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
1458 hsc->AbortTransmitCpltCallback(hsc);
1485 CLEAR_BIT(hsc->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
1486 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_EIE);
1491 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_DMAR);
1516#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
1518 hsc->AbortReceiveCpltCallback(hsc);
1534#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
1536 hsc->AbortReceiveCpltCallback(hsc);
1554 uint32_t isrflags = READ_REG(hsc->
Instance->SR);
1555 uint32_t cr1its = READ_REG(hsc->
Instance->CR1);
1556 uint32_t cr3its = READ_REG(hsc->
Instance->CR3);
1557 uint32_t dmarequest = 0x00U;
1558 uint32_t errorflags = 0x00U;
1561 errorflags = (isrflags & (uint32_t)(USART_SR_PE | USART_SR_FE | USART_SR_ORE | USART_SR_NE));
1562 if(errorflags == RESET)
1565 if(((isrflags & USART_SR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET))
1567 SMARTCARD_Receive_IT(hsc);
1573 if((errorflags != RESET) && (((cr3its & USART_CR3_EIE) != RESET) || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE)) != RESET)))
1576 if(((isrflags &
SMARTCARD_FLAG_PE) != RESET) && ((cr1its & USART_CR1_PEIE) != RESET))
1582 if(((isrflags &
SMARTCARD_FLAG_FE) != RESET) && ((cr3its & USART_CR3_EIE) != RESET))
1588 if(((isrflags &
SMARTCARD_FLAG_NE) != RESET) && ((cr3its & USART_CR3_EIE) != RESET))
1594 if(((isrflags &
SMARTCARD_FLAG_ORE) != RESET) && (((cr1its & USART_CR1_RXNEIE) != RESET) || ((cr3its & USART_CR3_EIE) != RESET)))
1602 if(((isrflags & USART_SR_RXNE) != RESET) && ((cr1its & USART_CR1_RXNEIE) != RESET))
1604 SMARTCARD_Receive_IT(hsc);
1615 SMARTCARD_EndRxTransfer(hsc);
1619 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_DMAR);
1636#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
1638 hsc->ErrorCallback(hsc);
1647#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
1649 hsc->ErrorCallback(hsc);
1660#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
1662 hsc->ErrorCallback(hsc);
1674 if(((isrflags &
SMARTCARD_FLAG_TXE) != RESET) && ((cr1its & USART_CR1_TXEIE) != RESET))
1676 SMARTCARD_Transmit_IT(hsc);
1681 if(((isrflags &
SMARTCARD_FLAG_TC) != RESET) && ((cr1its & USART_CR1_TCIE) != RESET))
1683 SMARTCARD_EndTransmit_IT(hsc);
1808 uint32_t temp1= 0x00U, temp2 = 0x00U;
1838#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
1871 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_DMAT);
1874 SET_BIT(hsc->
Instance->CR1, USART_CR1_TCIE);
1890 CLEAR_BIT(hsc->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
1891 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_EIE);
1895 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_DMAR);
1900#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
1902 hsc->RxCpltCallback(hsc);
1917 uint32_t dmarequest = 0x00U;
1927 SMARTCARD_EndTxTransfer(hsc);
1934 SMARTCARD_EndRxTransfer(hsc);
1937#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
1939 hsc->ErrorCallback(hsc);
1965 if((Timeout == 0U)||((
HAL_GetTick() - Tickstart ) > Timeout))
1968 CLEAR_BIT(hsc->
Instance->CR1, USART_CR1_TXEIE);
1969 CLEAR_BIT(hsc->
Instance->CR1, USART_CR1_RXNEIE);
1996 CLEAR_BIT(hsc->
Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE));
2012 CLEAR_BIT(hsc->
Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
2013 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_EIE);
2034 CLEAR_BIT(hsc->
Instance->CR1, USART_CR1_TXEIE);
2037 SET_BIT(hsc->
Instance->CR1, USART_CR1_TCIE);
2057 CLEAR_BIT(hsc->
Instance->CR1, USART_CR1_TCIE);
2060 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_EIE);
2065#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
2067 hsc->TxCpltCallback(hsc);
2093 CLEAR_BIT(hsc->
Instance->CR1, USART_CR1_RXNEIE);
2096 CLEAR_BIT(hsc->
Instance->CR1, USART_CR1_PEIE);
2099 CLEAR_BIT(hsc->
Instance->CR3, USART_CR3_EIE);
2104#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
2106 hsc->RxCpltCallback(hsc);
2134#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
2136 hsc->ErrorCallback(hsc);
2177#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
2179 hsc->AbortCpltCallback(hsc);
2220#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
2222 hsc->AbortCpltCallback(hsc);
2246#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
2248 hsc->AbortTransmitCpltCallback(hsc);
2272#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1)
2274 hsc->AbortReceiveCpltCallback(hsc);
2289 uint32_t tmpreg = 0x00U;
2306 CLEAR_BIT(hsc->
Instance->CR1, (USART_CR1_TE | USART_CR1_RE));
2311 tmpreg &= (uint32_t)~((uint32_t)(USART_CR2_CPHA | USART_CR2_CPOL | USART_CR2_CLKEN | USART_CR2_LBCL));
2320 WRITE_REG(hsc->
Instance->CR2, (uint32_t)tmpreg);
2325 tmpreg &= (uint32_t)~((uint32_t)USART_CR2_STOP);
2331 WRITE_REG(hsc->
Instance->CR2, (uint32_t)tmpreg);
2337 tmpreg &= (uint32_t)~((uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | USART_CR1_TE | \
2347 WRITE_REG(hsc->
Instance->CR1, (uint32_t)tmpreg);
2351 CLEAR_BIT(hsc->
Instance->CR3, (USART_CR3_RTSE | USART_CR3_CTSE));
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)
struct __DMA_HandleTypeDef DMA_HandleTypeDef
DMA handle Structure definition.
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
uint32_t HAL_RCC_GetPCLK1Freq(void)
uint32_t HAL_RCC_GetPCLK2Freq(void)
#define HAL_SMARTCARD_ERROR_NONE
#define HAL_SMARTCARD_ERROR_NE
#define HAL_SMARTCARD_ERROR_DMA
#define HAL_SMARTCARD_ERROR_ORE
#define HAL_SMARTCARD_ERROR_FE
#define HAL_SMARTCARD_ERROR_PE
void HAL_SMARTCARD_MspInit(SMARTCARD_HandleTypeDef *hsc)
HAL_StatusTypeDef HAL_SMARTCARD_DeInit(SMARTCARD_HandleTypeDef *hsc)
HAL_StatusTypeDef HAL_SMARTCARD_Init(SMARTCARD_HandleTypeDef *hsc)
void HAL_SMARTCARD_MspDeInit(SMARTCARD_HandleTypeDef *hsc)
HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit_IT(SMARTCARD_HandleTypeDef *hsc)
HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive_IT(SMARTCARD_HandleTypeDef *hsc)
HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsc, const uint8_t *pData, uint16_t Size)
void HAL_SMARTCARD_AbortTransmitCpltCallback(SMARTCARD_HandleTypeDef *hsc)
HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsc, const uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit(SMARTCARD_HandleTypeDef *hsc)
void HAL_SMARTCARD_AbortReceiveCpltCallback(SMARTCARD_HandleTypeDef *hsc)
void HAL_SMARTCARD_AbortCpltCallback(SMARTCARD_HandleTypeDef *hsc)
HAL_StatusTypeDef HAL_SMARTCARD_Receive_IT(SMARTCARD_HandleTypeDef *hsc, uint8_t *pData, uint16_t Size)
void HAL_SMARTCARD_IRQHandler(SMARTCARD_HandleTypeDef *hsc)
void HAL_SMARTCARD_ErrorCallback(SMARTCARD_HandleTypeDef *hsc)
HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsc, uint8_t *pData, uint16_t Size, uint32_t Timeout)
void HAL_SMARTCARD_RxCpltCallback(SMARTCARD_HandleTypeDef *hsc)
HAL_StatusTypeDef HAL_SMARTCARD_Receive_DMA(SMARTCARD_HandleTypeDef *hsc, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_SMARTCARD_Abort_IT(SMARTCARD_HandleTypeDef *hsc)
HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsc, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
HAL_StatusTypeDef HAL_SMARTCARD_Abort(SMARTCARD_HandleTypeDef *hsc)
HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive(SMARTCARD_HandleTypeDef *hsc)
void HAL_SMARTCARD_TxCpltCallback(SMARTCARD_HandleTypeDef *hsc)
uint32_t HAL_SMARTCARD_GetError(const SMARTCARD_HandleTypeDef *hsc)
HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(const SMARTCARD_HandleTypeDef *hsc)
#define __HAL_SMARTCARD_GET_FLAG(__HANDLE__, __FLAG__)
Check whether the specified Smartcard flag is set or not.
#define __HAL_SMARTCARD_CLEAR_OREFLAG(__HANDLE__)
Clear the SMARTCARD ORE pending flag.
#define __HAL_SMARTCARD_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the specified Smartcard pending flags.
#define __HAL_SMARTCARD_ENABLE(__HANDLE__)
Enable the USART associated to the SMARTCARD Handle.
#define __HAL_SMARTCARD_DISABLE(__HANDLE__)
Disable the USART associated to the SMARTCARD Handle.
HAL_SMARTCARD_StateTypeDef
HAL SMARTCARD State structures definition.
struct __SMARTCARD_HandleTypeDef SMARTCARD_HandleTypeDef
SMARTCARD handle Structure definition.
@ HAL_SMARTCARD_STATE_BUSY
@ HAL_SMARTCARD_STATE_RESET
@ HAL_SMARTCARD_STATE_READY
@ HAL_SMARTCARD_STATE_BUSY_TX
@ HAL_SMARTCARD_STATE_BUSY_RX
#define IS_SMARTCARD_MODE(MODE)
#define IS_SMARTCARD_NACK_STATE(NACK)
#define IS_SMARTCARD_STOPBITS(STOPBITS)
#define SMARTCARD_BRR(__PCLK__, __BAUD__)
#define IS_SMARTCARD_LASTBIT(LASTBIT)
#define IS_SMARTCARD_BAUDRATE(BAUDRATE)
#define IS_SMARTCARD_PARITY(PARITY)
#define IS_SMARTCARD_WORD_LENGTH(LENGTH)
#define IS_SMARTCARD_POLARITY(CPOL)
#define IS_SMARTCARD_PHASE(CPHA)
#define SMARTCARD_FLAG_NE
#define SMARTCARD_FLAG_PE
#define SMARTCARD_FLAG_RXNE
#define SMARTCARD_FLAG_ORE
#define SMARTCARD_FLAG_TXE
#define SMARTCARD_FLAG_TC
#define SMARTCARD_FLAG_FE
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
#define HAL_IS_BIT_SET(REG, BIT)
HAL_StatusTypeDef
HAL Status structures definition.
#define __HAL_UNLOCK(__HANDLE__)
#define __HAL_LOCK(__HANDLE__)
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
volatile HAL_SMARTCARD_StateTypeDef RxState
volatile HAL_SMARTCARD_StateTypeDef gState
volatile uint16_t RxXferCount
SMARTCARD_InitTypeDef Init
DMA_HandleTypeDef * hdmarx
volatile uint32_t ErrorCode
const uint8_t * pTxBuffPtr
DMA_HandleTypeDef * hdmatx
volatile uint16_t TxXferCount