20#ifndef __STM32F4xx_HAL_SMARTCARD_H 
   21#define __STM32F4xx_HAL_SMARTCARD_H 
  186#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 
 
  206#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 
  212  HAL_SMARTCARD_TX_COMPLETE_CB_ID             = 0x00U,    
 
  213  HAL_SMARTCARD_RX_COMPLETE_CB_ID             = 0x01U,    
 
  214  HAL_SMARTCARD_ERROR_CB_ID                   = 0x02U,    
 
  215  HAL_SMARTCARD_ABORT_COMPLETE_CB_ID          = 0x03U,    
 
  216  HAL_SMARTCARD_ABORT_TRANSMIT_COMPLETE_CB_ID = 0x04U,    
 
  217  HAL_SMARTCARD_ABORT_RECEIVE_COMPLETE_CB_ID  = 0x05U,    
 
  219  HAL_SMARTCARD_MSPINIT_CB_ID                 = 0x08U,    
 
  220  HAL_SMARTCARD_MSPDEINIT_CB_ID               = 0x09U     
 
  222} HAL_SMARTCARD_CallbackIDTypeDef;
 
  243#define HAL_SMARTCARD_ERROR_NONE             0x00000000U    
  244#define HAL_SMARTCARD_ERROR_PE               0x00000001U    
  245#define HAL_SMARTCARD_ERROR_NE               0x00000002U    
  246#define HAL_SMARTCARD_ERROR_FE               0x00000004U    
  247#define HAL_SMARTCARD_ERROR_ORE              0x00000008U    
  248#define HAL_SMARTCARD_ERROR_DMA              0x00000010U    
  249#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 
  250#define HAL_SMARTCARD_ERROR_INVALID_CALLBACK 0x00000020U    
  259#define SMARTCARD_WORDLENGTH_9B             ((uint32_t)USART_CR1_M) 
  267#define SMARTCARD_STOPBITS_0_5              ((uint32_t)USART_CR2_STOP_0) 
  268#define SMARTCARD_STOPBITS_1_5              ((uint32_t)(USART_CR2_STOP_0 | USART_CR2_STOP_1)) 
  276#define SMARTCARD_PARITY_EVEN               ((uint32_t)USART_CR1_PCE) 
  277#define SMARTCARD_PARITY_ODD                ((uint32_t)(USART_CR1_PCE | USART_CR1_PS)) 
  285#define SMARTCARD_MODE_RX                   ((uint32_t)USART_CR1_RE) 
  286#define SMARTCARD_MODE_TX                   ((uint32_t)USART_CR1_TE) 
  287#define SMARTCARD_MODE_TX_RX                ((uint32_t)(USART_CR1_TE |USART_CR1_RE)) 
  295#define SMARTCARD_POLARITY_LOW              0x00000000U 
  296#define SMARTCARD_POLARITY_HIGH             ((uint32_t)USART_CR2_CPOL) 
  304#define SMARTCARD_PHASE_1EDGE               0x00000000U 
  305#define SMARTCARD_PHASE_2EDGE               ((uint32_t)USART_CR2_CPHA) 
  313#define SMARTCARD_LASTBIT_DISABLE           0x00000000U 
  314#define SMARTCARD_LASTBIT_ENABLE            ((uint32_t)USART_CR2_LBCL) 
  322#define SMARTCARD_NACK_ENABLE               ((uint32_t)USART_CR3_NACK) 
  323#define SMARTCARD_NACK_DISABLE              0x00000000U 
  331#define SMARTCARD_DMAREQ_TX                 ((uint32_t)USART_CR3_DMAT) 
  332#define SMARTCARD_DMAREQ_RX                 ((uint32_t)USART_CR3_DMAR) 
  340#define SMARTCARD_PRESCALER_SYSCLK_DIV2     0x00000001U           
  341#define SMARTCARD_PRESCALER_SYSCLK_DIV4     0x00000002U           
  342#define SMARTCARD_PRESCALER_SYSCLK_DIV6     0x00000003U           
  343#define SMARTCARD_PRESCALER_SYSCLK_DIV8     0x00000004U           
  344#define SMARTCARD_PRESCALER_SYSCLK_DIV10    0x00000005U           
  345#define SMARTCARD_PRESCALER_SYSCLK_DIV12    0x00000006U           
  346#define SMARTCARD_PRESCALER_SYSCLK_DIV14    0x00000007U           
  347#define SMARTCARD_PRESCALER_SYSCLK_DIV16    0x00000008U           
  348#define SMARTCARD_PRESCALER_SYSCLK_DIV18    0x00000009U           
  349#define SMARTCARD_PRESCALER_SYSCLK_DIV20    0x0000000AU           
  350#define SMARTCARD_PRESCALER_SYSCLK_DIV22    0x0000000BU           
  351#define SMARTCARD_PRESCALER_SYSCLK_DIV24    0x0000000CU           
  352#define SMARTCARD_PRESCALER_SYSCLK_DIV26    0x0000000DU           
  353#define SMARTCARD_PRESCALER_SYSCLK_DIV28    0x0000000EU           
  354#define SMARTCARD_PRESCALER_SYSCLK_DIV30    0x0000000FU           
  355#define SMARTCARD_PRESCALER_SYSCLK_DIV32    0x00000010U           
  356#define SMARTCARD_PRESCALER_SYSCLK_DIV34    0x00000011U           
  357#define SMARTCARD_PRESCALER_SYSCLK_DIV36    0x00000012U           
  358#define SMARTCARD_PRESCALER_SYSCLK_DIV38    0x00000013U           
  359#define SMARTCARD_PRESCALER_SYSCLK_DIV40    0x00000014U           
  360#define SMARTCARD_PRESCALER_SYSCLK_DIV42    0x00000015U           
  361#define SMARTCARD_PRESCALER_SYSCLK_DIV44    0x00000016U           
  362#define SMARTCARD_PRESCALER_SYSCLK_DIV46    0x00000017U           
  363#define SMARTCARD_PRESCALER_SYSCLK_DIV48    0x00000018U           
  364#define SMARTCARD_PRESCALER_SYSCLK_DIV50    0x00000019U           
  365#define SMARTCARD_PRESCALER_SYSCLK_DIV52    0x0000001AU           
  366#define SMARTCARD_PRESCALER_SYSCLK_DIV54    0x0000001BU           
  367#define SMARTCARD_PRESCALER_SYSCLK_DIV56    0x0000001CU           
  368#define SMARTCARD_PRESCALER_SYSCLK_DIV58    0x0000001DU           
  369#define SMARTCARD_PRESCALER_SYSCLK_DIV60    0x0000001EU           
  370#define SMARTCARD_PRESCALER_SYSCLK_DIV62    0x0000001FU           
  380#define SMARTCARD_FLAG_TXE                  ((uint32_t)USART_SR_TXE) 
  381#define SMARTCARD_FLAG_TC                   ((uint32_t)USART_SR_TC) 
  382#define SMARTCARD_FLAG_RXNE                 ((uint32_t)USART_SR_RXNE) 
  383#define SMARTCARD_FLAG_IDLE                 ((uint32_t)USART_SR_IDLE) 
  384#define SMARTCARD_FLAG_ORE                  ((uint32_t)USART_SR_ORE) 
  385#define SMARTCARD_FLAG_NE                   ((uint32_t)USART_SR_NE) 
  386#define SMARTCARD_FLAG_FE                   ((uint32_t)USART_SR_FE) 
  387#define SMARTCARD_FLAG_PE                   ((uint32_t)USART_SR_PE) 
  400#define SMARTCARD_IT_PE                     ((uint32_t)(SMARTCARD_CR1_REG_INDEX << 28U | USART_CR1_PEIE)) 
  401#define SMARTCARD_IT_TXE                    ((uint32_t)(SMARTCARD_CR1_REG_INDEX << 28U | USART_CR1_TXEIE)) 
  402#define SMARTCARD_IT_TC                     ((uint32_t)(SMARTCARD_CR1_REG_INDEX << 28U | USART_CR1_TCIE)) 
  403#define SMARTCARD_IT_RXNE                   ((uint32_t)(SMARTCARD_CR1_REG_INDEX << 28U | USART_CR1_RXNEIE)) 
  404#define SMARTCARD_IT_IDLE                   ((uint32_t)(SMARTCARD_CR1_REG_INDEX << 28U | USART_CR1_IDLEIE)) 
  405#define SMARTCARD_IT_ERR                    ((uint32_t)(SMARTCARD_CR3_REG_INDEX << 28U | USART_CR3_EIE)) 
  424#if USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1 
  425#define __HAL_SMARTCARD_RESET_HANDLE_STATE(__HANDLE__)  do{                                                       \ 
  426                                                           (__HANDLE__)->gState = HAL_SMARTCARD_STATE_RESET;      \ 
  427                                                           (__HANDLE__)->RxState = HAL_SMARTCARD_STATE_RESET;     \ 
  428                                                           (__HANDLE__)->MspInitCallback = NULL;                  \ 
  429                                                           (__HANDLE__)->MspDeInitCallback = NULL;                \ 
  432#define __HAL_SMARTCARD_RESET_HANDLE_STATE(__HANDLE__)  do{                                                       \ 
  433                                                           (__HANDLE__)->gState = HAL_SMARTCARD_STATE_RESET;      \ 
  434                                                           (__HANDLE__)->RxState = HAL_SMARTCARD_STATE_RESET;     \ 
 
  443#define __HAL_SMARTCARD_FLUSH_DRREGISTER(__HANDLE__) ((__HANDLE__)->Instance->DR) 
  460#define __HAL_SMARTCARD_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__)) 
  479#define __HAL_SMARTCARD_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR = ~(__FLAG__)) 
  486#define __HAL_SMARTCARD_CLEAR_PEFLAG(__HANDLE__)  \ 
  488      __IO uint32_t tmpreg = 0x00U;               \ 
  489      tmpreg = (__HANDLE__)->Instance->SR;        \ 
  490      tmpreg = (__HANDLE__)->Instance->DR;        \ 
 
  499#define __HAL_SMARTCARD_CLEAR_FEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_PEFLAG(__HANDLE__) 
  506#define __HAL_SMARTCARD_CLEAR_NEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_PEFLAG(__HANDLE__) 
  513#define __HAL_SMARTCARD_CLEAR_OREFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_PEFLAG(__HANDLE__) 
  520#define __HAL_SMARTCARD_CLEAR_IDLEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_PEFLAG(__HANDLE__) 
  535#define __HAL_SMARTCARD_ENABLE_IT(__HANDLE__, __INTERRUPT__)   ((((__INTERRUPT__) >> 28U) == SMARTCARD_CR1_REG_INDEX)? ((__HANDLE__)->Instance->CR1 |= ((__INTERRUPT__) & SMARTCARD_IT_MASK)): \ 
  536                                                                 ((__HANDLE__)->Instance->CR3 |= ((__INTERRUPT__) & SMARTCARD_IT_MASK))) 
 
  551#define __HAL_SMARTCARD_DISABLE_IT(__HANDLE__, __INTERRUPT__)  ((((__INTERRUPT__) >> 28U) == SMARTCARD_CR1_REG_INDEX)? ((__HANDLE__)->Instance->CR1 &= ~((__INTERRUPT__) & SMARTCARD_IT_MASK)): \ 
  552                                                                 ((__HANDLE__)->Instance->CR3 &= ~ ((__INTERRUPT__) & SMARTCARD_IT_MASK))) 
 
  566#define __HAL_SMARTCARD_GET_IT_SOURCE(__HANDLE__, __IT__) (((((__IT__) >> 28U) == SMARTCARD_CR1_REG_INDEX)? (__HANDLE__)->Instance->CR1: (__HANDLE__)->Instance->CR3) & (((uint32_t)(__IT__)) & SMARTCARD_IT_MASK)) 
  572#define __HAL_SMARTCARD_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT) 
  578#define __HAL_SMARTCARD_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= (uint16_t)~((uint16_t)USART_CR3_ONEBIT)) 
  585#define __HAL_SMARTCARD_ENABLE(__HANDLE__)  ((__HANDLE__)->Instance->CR1 |=  USART_CR1_UE) 
  592#define __HAL_SMARTCARD_DISABLE(__HANDLE__)  ((__HANDLE__)->Instance->CR1 &=  ~USART_CR1_UE) 
  602#define __HAL_SMARTCARD_DMA_REQUEST_ENABLE(__HANDLE__, __REQUEST__)    ((__HANDLE__)->Instance->CR3 |=  (__REQUEST__)) 
  612#define __HAL_SMARTCARD_DMA_REQUEST_DISABLE(__HANDLE__, __REQUEST__)   ((__HANDLE__)->Instance->CR3 &=  ~(__REQUEST__)) 
  632#if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 
  693#define SMARTCARD_IT_MASK                   ((uint32_t) USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE | USART_CR1_RXNEIE | \ 
  694                                                        USART_CR1_IDLEIE | USART_CR3_EIE ) 
 
  696#define SMARTCARD_CR1_REG_INDEX             1U 
  697#define SMARTCARD_CR3_REG_INDEX             3U 
  706#define IS_SMARTCARD_WORD_LENGTH(LENGTH)    ((LENGTH) == SMARTCARD_WORDLENGTH_9B) 
  707#define IS_SMARTCARD_STOPBITS(STOPBITS)     (((STOPBITS) == SMARTCARD_STOPBITS_0_5) || \ 
  708                                             ((STOPBITS) == SMARTCARD_STOPBITS_1_5)) 
 
  709#define IS_SMARTCARD_PARITY(PARITY)         (((PARITY) == SMARTCARD_PARITY_EVEN) || \ 
  710                                             ((PARITY) == SMARTCARD_PARITY_ODD)) 
 
  711#define IS_SMARTCARD_MODE(MODE)             ((((MODE) & 0x0000FFF3U) == 0x00U) && ((MODE) != 0x000000U)) 
  712#define IS_SMARTCARD_POLARITY(CPOL)         (((CPOL) == SMARTCARD_POLARITY_LOW) || ((CPOL) == SMARTCARD_POLARITY_HIGH)) 
  713#define IS_SMARTCARD_PHASE(CPHA)            (((CPHA) == SMARTCARD_PHASE_1EDGE) || ((CPHA) == SMARTCARD_PHASE_2EDGE)) 
  714#define IS_SMARTCARD_LASTBIT(LASTBIT)       (((LASTBIT) == SMARTCARD_LASTBIT_DISABLE) || \ 
  715                                             ((LASTBIT) == SMARTCARD_LASTBIT_ENABLE)) 
 
  716#define IS_SMARTCARD_NACK_STATE(NACK)       (((NACK) == SMARTCARD_NACK_ENABLE) || \ 
  717                                             ((NACK) == SMARTCARD_NACK_DISABLE)) 
 
  718#define IS_SMARTCARD_BAUDRATE(BAUDRATE)     ((BAUDRATE) < 10500001U) 
  720#define SMARTCARD_DIV(__PCLK__, __BAUD__)                ((uint32_t)((((uint64_t)(__PCLK__))*25U)/(4U*((uint64_t)(__BAUD__))))) 
  721#define SMARTCARD_DIVMANT(__PCLK__, __BAUD__)            (SMARTCARD_DIV((__PCLK__), (__BAUD__))/100U) 
  722#define SMARTCARD_DIVFRAQ(__PCLK__, __BAUD__)            ((((SMARTCARD_DIV((__PCLK__), (__BAUD__)) - (SMARTCARD_DIVMANT((__PCLK__), (__BAUD__)) * 100U)) * 16U) + 50U) / 100U) 
  725#define SMARTCARD_BRR(__PCLK__, __BAUD__)       (((SMARTCARD_DIVMANT((__PCLK__), (__BAUD__)) << 4U) + \ 
  726                                                 (SMARTCARD_DIVFRAQ((__PCLK__), (__BAUD__)) & 0xF0U)) + \ 
  727                                                 (SMARTCARD_DIVFRAQ((__PCLK__), (__BAUD__)) & 0x0FU)) 
 
void HAL_SMARTCARD_MspInit(SMARTCARD_HandleTypeDef *hsc)
SMARTCARD MSP Init.
 
HAL_StatusTypeDef HAL_SMARTCARD_ReInit(SMARTCARD_HandleTypeDef *hsc)
 
HAL_StatusTypeDef HAL_SMARTCARD_DeInit(SMARTCARD_HandleTypeDef *hsc)
DeInitializes the USART SmartCard peripheral.
 
HAL_StatusTypeDef HAL_SMARTCARD_Init(SMARTCARD_HandleTypeDef *hsc)
Initializes the SmartCard mode according to the specified parameters in the SMARTCARD_InitTypeDef and...
 
void HAL_SMARTCARD_MspDeInit(SMARTCARD_HandleTypeDef *hsc)
SMARTCARD MSP DeInit.
 
HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit_IT(SMARTCARD_HandleTypeDef *hsc)
Abort ongoing Transmit transfer (Interrupt mode).
 
HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive_IT(SMARTCARD_HandleTypeDef *hsc)
Abort ongoing Receive transfer (Interrupt mode).
 
void HAL_SMARTCARD_AbortCpltCallback(SMARTCARD_HandleTypeDef *hsc)
SMARTCARD Abort Complete callback.
 
HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsc, const uint8_t *pData, uint16_t Size)
Send an amount of data in non blocking mode.
 
void HAL_SMARTCARD_ErrorCallback(SMARTCARD_HandleTypeDef *hsc)
SMARTCARD error callback.
 
HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsc, const uint8_t *pData, uint16_t Size)
Send an amount of data in non blocking mode.
 
HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit(SMARTCARD_HandleTypeDef *hsc)
Abort ongoing Transmit transfer (blocking mode).
 
void HAL_SMARTCARD_TxCpltCallback(SMARTCARD_HandleTypeDef *hsc)
Tx Transfer completed callbacks.
 
HAL_StatusTypeDef HAL_SMARTCARD_Receive_IT(SMARTCARD_HandleTypeDef *hsc, uint8_t *pData, uint16_t Size)
Receive an amount of data in non blocking mode.
 
void HAL_SMARTCARD_IRQHandler(SMARTCARD_HandleTypeDef *hsc)
This function handles SMARTCARD interrupt request.
 
HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsc, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Receive an amount of data in blocking mode.
 
void HAL_SMARTCARD_AbortReceiveCpltCallback(SMARTCARD_HandleTypeDef *hsc)
SMARTCARD Abort Receive Complete callback.
 
void HAL_SMARTCARD_AbortTransmitCpltCallback(SMARTCARD_HandleTypeDef *hsc)
SMARTCARD Abort Transmit Complete callback.
 
HAL_StatusTypeDef HAL_SMARTCARD_Receive_DMA(SMARTCARD_HandleTypeDef *hsc, uint8_t *pData, uint16_t Size)
Receive an amount of data in non blocking mode.
 
void HAL_SMARTCARD_RxCpltCallback(SMARTCARD_HandleTypeDef *hsc)
Rx Transfer completed callback.
 
HAL_StatusTypeDef HAL_SMARTCARD_Abort_IT(SMARTCARD_HandleTypeDef *hsc)
Abort ongoing transfers (Interrupt mode).
 
HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsc, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
Send an amount of data in blocking mode.
 
HAL_StatusTypeDef HAL_SMARTCARD_Abort(SMARTCARD_HandleTypeDef *hsc)
Abort ongoing transfers (blocking mode).
 
HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive(SMARTCARD_HandleTypeDef *hsc)
Abort ongoing Receive transfer (blocking mode).
 
uint32_t HAL_SMARTCARD_GetError(const SMARTCARD_HandleTypeDef *hsc)
Return the SMARTCARD error code.
 
HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(const SMARTCARD_HandleTypeDef *hsc)
Return the SMARTCARD handle state.
 
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_ERROR
 
@ HAL_SMARTCARD_STATE_TIMEOUT
 
@ HAL_SMARTCARD_STATE_BUSY_TX_RX
 
@ HAL_SMARTCARD_STATE_BUSY_TX
 
@ HAL_SMARTCARD_STATE_BUSY_RX
 
This file contains HAL common defines, enumeration, macros and structures definitions.
 
HAL_StatusTypeDef
HAL Status structures definition
 
HAL_LockTypeDef
HAL Lock structures definition
 
SMARTCARD Init Structure definition.
 
DMA handle Structure definition.
 
SMARTCARD handle Structure definition.
 
SMARTCARD_InitTypeDef Init
 
DMA_HandleTypeDef * hdmarx
 
__IO uint16_t TxXferCount
 
__IO uint16_t RxXferCount
 
__IO HAL_SMARTCARD_StateTypeDef gState
 
const uint8_t * pTxBuffPtr
 
__IO HAL_SMARTCARD_StateTypeDef RxState
 
DMA_HandleTypeDef * hdmatx