The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
Parent:
TARGET_DISCO_L475VG_IOT01A/TARGET_STM/TARGET_STM32L4/device/stm32l4xx_hal_smartcard.h@161:aa5281ff4a02
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 145:64910690c574 1 /**
AnnaBridge 145:64910690c574 2 ******************************************************************************
AnnaBridge 145:64910690c574 3 * @file stm32l4xx_hal_smartcard.h
AnnaBridge 145:64910690c574 4 * @author MCD Application Team
AnnaBridge 145:64910690c574 5 * @brief Header file of SMARTCARD HAL module.
AnnaBridge 145:64910690c574 6 ******************************************************************************
AnnaBridge 145:64910690c574 7 * @attention
AnnaBridge 145:64910690c574 8 *
AnnaBridge 145:64910690c574 9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
AnnaBridge 145:64910690c574 10 *
AnnaBridge 145:64910690c574 11 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 145:64910690c574 12 * are permitted provided that the following conditions are met:
AnnaBridge 145:64910690c574 13 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 145:64910690c574 14 * this list of conditions and the following disclaimer.
AnnaBridge 145:64910690c574 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 145:64910690c574 16 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 145:64910690c574 17 * and/or other materials provided with the distribution.
AnnaBridge 145:64910690c574 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 145:64910690c574 19 * may be used to endorse or promote products derived from this software
AnnaBridge 145:64910690c574 20 * without specific prior written permission.
AnnaBridge 145:64910690c574 21 *
AnnaBridge 145:64910690c574 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 145:64910690c574 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 145:64910690c574 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 145:64910690c574 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 145:64910690c574 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 145:64910690c574 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 145:64910690c574 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 145:64910690c574 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 145:64910690c574 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 145:64910690c574 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 145:64910690c574 32 *
AnnaBridge 145:64910690c574 33 ******************************************************************************
AnnaBridge 145:64910690c574 34 */
AnnaBridge 145:64910690c574 35
AnnaBridge 145:64910690c574 36 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 145:64910690c574 37 #ifndef __STM32L4xx_HAL_SMARTCARD_H
AnnaBridge 145:64910690c574 38 #define __STM32L4xx_HAL_SMARTCARD_H
AnnaBridge 145:64910690c574 39
AnnaBridge 145:64910690c574 40 #ifdef __cplusplus
AnnaBridge 145:64910690c574 41 extern "C" {
AnnaBridge 145:64910690c574 42 #endif
AnnaBridge 145:64910690c574 43
AnnaBridge 145:64910690c574 44 /* Includes ------------------------------------------------------------------*/
AnnaBridge 145:64910690c574 45 #include "stm32l4xx_hal_def.h"
AnnaBridge 145:64910690c574 46
AnnaBridge 145:64910690c574 47 /** @addtogroup STM32L4xx_HAL_Driver
AnnaBridge 145:64910690c574 48 * @{
AnnaBridge 145:64910690c574 49 */
AnnaBridge 145:64910690c574 50
AnnaBridge 145:64910690c574 51 /** @addtogroup SMARTCARD
AnnaBridge 145:64910690c574 52 * @{
AnnaBridge 145:64910690c574 53 */
AnnaBridge 145:64910690c574 54
AnnaBridge 145:64910690c574 55 /* Exported types ------------------------------------------------------------*/
AnnaBridge 145:64910690c574 56 /** @defgroup SMARTCARD_Exported_Types SMARTCARD Exported Types
AnnaBridge 145:64910690c574 57 * @{
AnnaBridge 145:64910690c574 58 */
AnnaBridge 145:64910690c574 59
AnnaBridge 145:64910690c574 60 /**
AnnaBridge 145:64910690c574 61 * @brief SMARTCARD Init Structure definition
AnnaBridge 145:64910690c574 62 */
AnnaBridge 145:64910690c574 63 typedef struct
AnnaBridge 145:64910690c574 64 {
AnnaBridge 145:64910690c574 65 uint32_t BaudRate; /*!< Configures the SmartCard communication baud rate.
AnnaBridge 145:64910690c574 66 The baud rate register is computed using the following formula:
AnnaBridge 161:aa5281ff4a02 67 Baud Rate Register = ((usart_ker_ckpres) / ((hsmartcard->Init.BaudRate)))
AnnaBridge 161:aa5281ff4a02 68 where usart_ker_ckpres is the USART input clock divided by a prescaler */
AnnaBridge 145:64910690c574 69
AnnaBridge 145:64910690c574 70 uint32_t WordLength; /*!< Specifies the number of data bits transmitted or received in a frame.
AnnaBridge 145:64910690c574 71 This parameter @ref SMARTCARD_Word_Length can only be set to 9 (8 data + 1 parity bits). */
AnnaBridge 145:64910690c574 72
AnnaBridge 145:64910690c574 73 uint32_t StopBits; /*!< Specifies the number of stop bits.
AnnaBridge 145:64910690c574 74 This parameter can be a value of @ref SMARTCARD_Stop_Bits. */
AnnaBridge 145:64910690c574 75
AnnaBridge 145:64910690c574 76 uint16_t Parity; /*!< Specifies the parity mode.
AnnaBridge 145:64910690c574 77 This parameter can be a value of @ref SMARTCARD_Parity
AnnaBridge 145:64910690c574 78 @note The parity is enabled by default (PCE is forced to 1).
AnnaBridge 145:64910690c574 79 Since the WordLength is forced to 8 bits + parity, M is
AnnaBridge 145:64910690c574 80 forced to 1 and the parity bit is the 9th bit. */
AnnaBridge 145:64910690c574 81
AnnaBridge 145:64910690c574 82 uint16_t Mode; /*!< Specifies whether the Receive or Transmit mode is enabled or disabled.
AnnaBridge 145:64910690c574 83 This parameter can be a value of @ref SMARTCARD_Mode */
AnnaBridge 145:64910690c574 84
AnnaBridge 145:64910690c574 85 uint16_t CLKPolarity; /*!< Specifies the steady state of the serial clock.
AnnaBridge 145:64910690c574 86 This parameter can be a value of @ref SMARTCARD_Clock_Polarity */
AnnaBridge 145:64910690c574 87
AnnaBridge 145:64910690c574 88 uint16_t CLKPhase; /*!< Specifies the clock transition on which the bit capture is made.
AnnaBridge 145:64910690c574 89 This parameter can be a value of @ref SMARTCARD_Clock_Phase */
AnnaBridge 145:64910690c574 90
AnnaBridge 145:64910690c574 91 uint16_t CLKLastBit; /*!< Specifies whether the clock pulse corresponding to the last transmitted
AnnaBridge 145:64910690c574 92 data bit (MSB) has to be output on the SCLK pin in synchronous mode.
AnnaBridge 145:64910690c574 93 This parameter can be a value of @ref SMARTCARD_Last_Bit */
AnnaBridge 145:64910690c574 94
AnnaBridge 145:64910690c574 95 uint16_t OneBitSampling; /*!< Specifies whether a single sample or three samples' majority vote is selected.
AnnaBridge 145:64910690c574 96 Selecting the single sample method increases the receiver tolerance to clock
AnnaBridge 145:64910690c574 97 deviations. This parameter can be a value of @ref SMARTCARD_OneBit_Sampling. */
AnnaBridge 145:64910690c574 98
AnnaBridge 161:aa5281ff4a02 99 uint8_t Prescaler; /*!< Specifies the SmartCard Prescaler.
AnnaBridge 161:aa5281ff4a02 100 This parameter can be any value from 0x01 to 0x1F. Prescaler value is multiplied
AnnaBridge 161:aa5281ff4a02 101 by 2 to give the division factor of the source clock frequency */
AnnaBridge 145:64910690c574 102
AnnaBridge 145:64910690c574 103 uint8_t GuardTime; /*!< Specifies the SmartCard Guard Time applied after stop bits. */
AnnaBridge 145:64910690c574 104
AnnaBridge 145:64910690c574 105 uint16_t NACKEnable; /*!< Specifies whether the SmartCard NACK transmission is enabled
AnnaBridge 145:64910690c574 106 in case of parity error.
AnnaBridge 145:64910690c574 107 This parameter can be a value of @ref SMARTCARD_NACK_Enable */
AnnaBridge 145:64910690c574 108
AnnaBridge 145:64910690c574 109 uint32_t TimeOutEnable; /*!< Specifies whether the receiver timeout is enabled.
AnnaBridge 145:64910690c574 110 This parameter can be a value of @ref SMARTCARD_Timeout_Enable*/
AnnaBridge 145:64910690c574 111
AnnaBridge 145:64910690c574 112 uint32_t TimeOutValue; /*!< Specifies the receiver time out value in number of baud blocks:
AnnaBridge 145:64910690c574 113 it is used to implement the Character Wait Time (CWT) and
AnnaBridge 145:64910690c574 114 Block Wait Time (BWT). It is coded over 24 bits. */
AnnaBridge 145:64910690c574 115
AnnaBridge 145:64910690c574 116 uint8_t BlockLength; /*!< Specifies the SmartCard Block Length in T=1 Reception mode.
AnnaBridge 145:64910690c574 117 This parameter can be any value from 0x0 to 0xFF */
AnnaBridge 145:64910690c574 118
AnnaBridge 145:64910690c574 119 uint8_t AutoRetryCount; /*!< Specifies the SmartCard auto-retry count (number of retries in
AnnaBridge 145:64910690c574 120 receive and transmit mode). When set to 0, retransmission is
AnnaBridge 145:64910690c574 121 disabled. Otherwise, its maximum value is 7 (before signalling
AnnaBridge 145:64910690c574 122 an error) */
AnnaBridge 145:64910690c574 123
AnnaBridge 161:aa5281ff4a02 124 #if defined(USART_PRESC_PRESCALER)
AnnaBridge 161:aa5281ff4a02 125 uint32_t ClockPrescaler; /*!< Specifies the prescaler value used to divide the USART clock source.
AnnaBridge 161:aa5281ff4a02 126 This parameter can be a value of @ref SMARTCARD_ClockPrescaler. */
AnnaBridge 161:aa5281ff4a02 127 #endif
AnnaBridge 161:aa5281ff4a02 128
AnnaBridge 145:64910690c574 129 }SMARTCARD_InitTypeDef;
AnnaBridge 145:64910690c574 130
AnnaBridge 145:64910690c574 131 /**
AnnaBridge 145:64910690c574 132 * @brief SMARTCARD advanced features initalization structure definition
AnnaBridge 145:64910690c574 133 */
AnnaBridge 145:64910690c574 134 typedef struct
AnnaBridge 145:64910690c574 135 {
AnnaBridge 145:64910690c574 136 uint32_t AdvFeatureInit; /*!< Specifies which advanced SMARTCARD features is initialized. Several
AnnaBridge 145:64910690c574 137 advanced features may be initialized at the same time. This parameter
AnnaBridge 145:64910690c574 138 can be a value of @ref SMARTCARDEx_Advanced_Features_Initialization_Type */
AnnaBridge 145:64910690c574 139
AnnaBridge 145:64910690c574 140 uint32_t TxPinLevelInvert; /*!< Specifies whether the TX pin active level is inverted.
AnnaBridge 145:64910690c574 141 This parameter can be a value of @ref SMARTCARD_Tx_Inv */
AnnaBridge 145:64910690c574 142
AnnaBridge 145:64910690c574 143 uint32_t RxPinLevelInvert; /*!< Specifies whether the RX pin active level is inverted.
AnnaBridge 145:64910690c574 144 This parameter can be a value of @ref SMARTCARD_Rx_Inv */
AnnaBridge 145:64910690c574 145
AnnaBridge 145:64910690c574 146 uint32_t DataInvert; /*!< Specifies whether data are inverted (positive/direct logic
AnnaBridge 145:64910690c574 147 vs negative/inverted logic).
AnnaBridge 145:64910690c574 148 This parameter can be a value of @ref SMARTCARD_Data_Inv */
AnnaBridge 145:64910690c574 149
AnnaBridge 145:64910690c574 150 uint32_t Swap; /*!< Specifies whether TX and RX pins are swapped.
AnnaBridge 145:64910690c574 151 This parameter can be a value of @ref SMARTCARD_Rx_Tx_Swap */
AnnaBridge 145:64910690c574 152
AnnaBridge 145:64910690c574 153 uint32_t OverrunDisable; /*!< Specifies whether the reception overrun detection is disabled.
AnnaBridge 145:64910690c574 154 This parameter can be a value of @ref SMARTCARD_Overrun_Disable */
AnnaBridge 145:64910690c574 155
AnnaBridge 145:64910690c574 156 uint32_t DMADisableonRxError; /*!< Specifies whether the DMA is disabled in case of reception error.
AnnaBridge 145:64910690c574 157 This parameter can be a value of @ref SMARTCARD_DMA_Disable_on_Rx_Error */
AnnaBridge 145:64910690c574 158
AnnaBridge 145:64910690c574 159 uint32_t MSBFirst; /*!< Specifies whether MSB is sent first on UART line.
AnnaBridge 145:64910690c574 160 This parameter can be a value of @ref SMARTCARD_MSB_First */
AnnaBridge 145:64910690c574 161
AnnaBridge 145:64910690c574 162 uint16_t TxCompletionIndication; /*!< Specifies which transmission completion indication is used: before (when
AnnaBridge 145:64910690c574 163 relevant flag is available) or once guard time period has elapsed.
AnnaBridge 145:64910690c574 164 This parameter can be a value of @ref SMARTCARDEx_Transmission_Completion_Indication. */
AnnaBridge 145:64910690c574 165 }SMARTCARD_AdvFeatureInitTypeDef;
AnnaBridge 145:64910690c574 166
AnnaBridge 145:64910690c574 167 /**
AnnaBridge 145:64910690c574 168 * @brief HAL SMARTCARD State structures definition
AnnaBridge 145:64910690c574 169 * @note HAL SMARTCARD State value is a combination of 2 different substates: gState and RxState.
AnnaBridge 145:64910690c574 170 * - gState contains SMARTCARD state information related to global Handle management
AnnaBridge 145:64910690c574 171 * and also information related to Tx operations.
AnnaBridge 145:64910690c574 172 * gState value coding follow below described bitmap :
AnnaBridge 145:64910690c574 173 * b7-b6 Error information
AnnaBridge 145:64910690c574 174 * 00 : No Error
AnnaBridge 145:64910690c574 175 * 01 : (Not Used)
AnnaBridge 145:64910690c574 176 * 10 : Timeout
AnnaBridge 145:64910690c574 177 * 11 : Error
AnnaBridge 145:64910690c574 178 * b5 IP initilisation status
AnnaBridge 145:64910690c574 179 * 0 : Reset (IP not initialized)
AnnaBridge 145:64910690c574 180 * 1 : Init done (IP not initialized. HAL SMARTCARD Init function already called)
AnnaBridge 145:64910690c574 181 * b4-b3 (not used)
AnnaBridge 145:64910690c574 182 * xx : Should be set to 00
AnnaBridge 145:64910690c574 183 * b2 Intrinsic process state
AnnaBridge 145:64910690c574 184 * 0 : Ready
AnnaBridge 145:64910690c574 185 * 1 : Busy (IP busy with some configuration or internal operations)
AnnaBridge 145:64910690c574 186 * b1 (not used)
AnnaBridge 145:64910690c574 187 * x : Should be set to 0
AnnaBridge 145:64910690c574 188 * b0 Tx state
AnnaBridge 145:64910690c574 189 * 0 : Ready (no Tx operation ongoing)
AnnaBridge 145:64910690c574 190 * 1 : Busy (Tx operation ongoing)
AnnaBridge 145:64910690c574 191 * - RxState contains information related to Rx operations.
AnnaBridge 145:64910690c574 192 * RxState value coding follow below described bitmap :
AnnaBridge 145:64910690c574 193 * b7-b6 (not used)
AnnaBridge 145:64910690c574 194 * xx : Should be set to 00
AnnaBridge 145:64910690c574 195 * b5 IP initilisation status
AnnaBridge 145:64910690c574 196 * 0 : Reset (IP not initialized)
AnnaBridge 145:64910690c574 197 * 1 : Init done (IP not initialized)
AnnaBridge 145:64910690c574 198 * b4-b2 (not used)
AnnaBridge 145:64910690c574 199 * xxx : Should be set to 000
AnnaBridge 145:64910690c574 200 * b1 Rx state
AnnaBridge 145:64910690c574 201 * 0 : Ready (no Rx operation ongoing)
AnnaBridge 145:64910690c574 202 * 1 : Busy (Rx operation ongoing)
AnnaBridge 145:64910690c574 203 * b0 (not used)
AnnaBridge 145:64910690c574 204 * x : Should be set to 0.
AnnaBridge 145:64910690c574 205 */
AnnaBridge 145:64910690c574 206 typedef enum
AnnaBridge 145:64910690c574 207 {
AnnaBridge 145:64910690c574 208 HAL_SMARTCARD_STATE_RESET = 0x00U, /*!< Peripheral is not initialized
AnnaBridge 145:64910690c574 209 Value is allowed for gState and RxState */
AnnaBridge 145:64910690c574 210 HAL_SMARTCARD_STATE_READY = 0x20U, /*!< Peripheral Initialized and ready for use
AnnaBridge 145:64910690c574 211 Value is allowed for gState and RxState */
AnnaBridge 145:64910690c574 212 HAL_SMARTCARD_STATE_BUSY = 0x24U, /*!< an internal process is ongoing
AnnaBridge 145:64910690c574 213 Value is allowed for gState only */
AnnaBridge 145:64910690c574 214 HAL_SMARTCARD_STATE_BUSY_TX = 0x21U, /*!< Data Transmission process is ongoing
AnnaBridge 145:64910690c574 215 Value is allowed for gState only */
AnnaBridge 145:64910690c574 216 HAL_SMARTCARD_STATE_BUSY_RX = 0x22U, /*!< Data Reception process is ongoing
AnnaBridge 145:64910690c574 217 Value is allowed for RxState only */
AnnaBridge 145:64910690c574 218 HAL_SMARTCARD_STATE_BUSY_TX_RX = 0x23U, /*!< Data Transmission and Reception process is ongoing
AnnaBridge 145:64910690c574 219 Not to be used for neither gState nor RxState.
AnnaBridge 145:64910690c574 220 Value is result of combination (Or) between gState and RxState values */
AnnaBridge 145:64910690c574 221 HAL_SMARTCARD_STATE_TIMEOUT = 0xA0U, /*!< Timeout state
AnnaBridge 145:64910690c574 222 Value is allowed for gState only */
AnnaBridge 145:64910690c574 223 HAL_SMARTCARD_STATE_ERROR = 0xE0U /*!< Error
AnnaBridge 145:64910690c574 224 Value is allowed for gState only */
AnnaBridge 145:64910690c574 225 }HAL_SMARTCARD_StateTypeDef;
AnnaBridge 145:64910690c574 226
AnnaBridge 145:64910690c574 227 /**
AnnaBridge 145:64910690c574 228 * @brief HAL SMARTCARD Error Code structure definition
AnnaBridge 145:64910690c574 229 */
AnnaBridge 145:64910690c574 230 typedef enum
AnnaBridge 145:64910690c574 231 {
AnnaBridge 145:64910690c574 232 HAL_SMARTCARD_ERROR_NONE = 0x00, /*!< No error */
AnnaBridge 145:64910690c574 233 HAL_SMARTCARD_ERROR_PE = 0x01, /*!< Parity error */
AnnaBridge 145:64910690c574 234 HAL_SMARTCARD_ERROR_NE = 0x02, /*!< Noise error */
AnnaBridge 145:64910690c574 235 HAL_SMARTCARD_ERROR_FE = 0x04, /*!< frame error */
AnnaBridge 145:64910690c574 236 HAL_SMARTCARD_ERROR_ORE = 0x08, /*!< Overrun error */
AnnaBridge 145:64910690c574 237 HAL_SMARTCARD_ERROR_DMA = 0x10, /*!< DMA transfer error */
AnnaBridge 145:64910690c574 238 HAL_SMARTCARD_ERROR_RTO = 0x20 /*!< Receiver TimeOut error */
AnnaBridge 145:64910690c574 239 }HAL_SMARTCARD_ErrorTypeDef;
AnnaBridge 145:64910690c574 240
AnnaBridge 145:64910690c574 241 /**
AnnaBridge 145:64910690c574 242 * @brief SMARTCARD handle Structure definition
AnnaBridge 145:64910690c574 243 */
AnnaBridge 161:aa5281ff4a02 244 typedef struct __SMARTCARD_HandleTypeDef
AnnaBridge 145:64910690c574 245 {
AnnaBridge 161:aa5281ff4a02 246 USART_TypeDef *Instance; /*!< USART registers base address */
AnnaBridge 145:64910690c574 247
AnnaBridge 161:aa5281ff4a02 248 SMARTCARD_InitTypeDef Init; /*!< SmartCard communication parameters */
AnnaBridge 145:64910690c574 249
AnnaBridge 161:aa5281ff4a02 250 SMARTCARD_AdvFeatureInitTypeDef AdvancedInit; /*!< SmartCard advanced features initialization parameters */
AnnaBridge 161:aa5281ff4a02 251
AnnaBridge 161:aa5281ff4a02 252 uint8_t *pTxBuffPtr; /*!< Pointer to SmartCard Tx transfer Buffer */
AnnaBridge 145:64910690c574 253
AnnaBridge 161:aa5281ff4a02 254 uint16_t TxXferSize; /*!< SmartCard Tx Transfer size */
AnnaBridge 145:64910690c574 255
AnnaBridge 161:aa5281ff4a02 256 __IO uint16_t TxXferCount; /*!< SmartCard Tx Transfer Counter */
AnnaBridge 161:aa5281ff4a02 257
AnnaBridge 161:aa5281ff4a02 258 uint8_t *pRxBuffPtr; /*!< Pointer to SmartCard Rx transfer Buffer */
AnnaBridge 145:64910690c574 259
AnnaBridge 161:aa5281ff4a02 260 uint16_t RxXferSize; /*!< SmartCard Rx Transfer size */
AnnaBridge 145:64910690c574 261
AnnaBridge 161:aa5281ff4a02 262 __IO uint16_t RxXferCount; /*!< SmartCard Rx Transfer Counter */
AnnaBridge 161:aa5281ff4a02 263
AnnaBridge 161:aa5281ff4a02 264 #if defined(USART_CR1_FIFOEN)
AnnaBridge 161:aa5281ff4a02 265 uint16_t NbRxDataToProcess; /*!< Number of data to process during RX ISR execution */
AnnaBridge 145:64910690c574 266
AnnaBridge 161:aa5281ff4a02 267 uint16_t NbTxDataToProcess; /*!< Number of data to process during TX ISR execution */
AnnaBridge 145:64910690c574 268
AnnaBridge 161:aa5281ff4a02 269 uint32_t FifoMode; /*!< Specifies if the FIFO mode is being used.
AnnaBridge 161:aa5281ff4a02 270 This parameter can be a value of @ref SMARTCARDEx_FIFO_mode. */
AnnaBridge 161:aa5281ff4a02 271 #endif
AnnaBridge 145:64910690c574 272
AnnaBridge 161:aa5281ff4a02 273 void (*RxISR)(struct __SMARTCARD_HandleTypeDef *huart); /*!< Function pointer on Rx IRQ handler */
AnnaBridge 145:64910690c574 274
AnnaBridge 161:aa5281ff4a02 275 void (*TxISR)(struct __SMARTCARD_HandleTypeDef *huart); /*!< Function pointer on Tx IRQ handler */
AnnaBridge 161:aa5281ff4a02 276
AnnaBridge 161:aa5281ff4a02 277 DMA_HandleTypeDef *hdmatx; /*!< SmartCard Tx DMA Handle parameters */
AnnaBridge 145:64910690c574 278
AnnaBridge 161:aa5281ff4a02 279 DMA_HandleTypeDef *hdmarx; /*!< SmartCard Rx DMA Handle parameters */
AnnaBridge 161:aa5281ff4a02 280
AnnaBridge 161:aa5281ff4a02 281 HAL_LockTypeDef Lock; /*!< Locking object */
AnnaBridge 145:64910690c574 282
AnnaBridge 161:aa5281ff4a02 283 __IO HAL_SMARTCARD_StateTypeDef gState; /*!< SmartCard state information related to global Handle management
AnnaBridge 161:aa5281ff4a02 284 and also related to Tx operations.
AnnaBridge 161:aa5281ff4a02 285 This parameter can be a value of @ref HAL_SMARTCARD_StateTypeDef */
AnnaBridge 145:64910690c574 286
AnnaBridge 161:aa5281ff4a02 287 __IO HAL_SMARTCARD_StateTypeDef RxState; /*!< SmartCard state information related to Rx operations.
AnnaBridge 161:aa5281ff4a02 288 This parameter can be a value of @ref HAL_SMARTCARD_StateTypeDef */
AnnaBridge 145:64910690c574 289
AnnaBridge 161:aa5281ff4a02 290 uint32_t ErrorCode; /*!< SmartCard Error code */
AnnaBridge 145:64910690c574 291
AnnaBridge 145:64910690c574 292 }SMARTCARD_HandleTypeDef;
AnnaBridge 145:64910690c574 293
AnnaBridge 145:64910690c574 294 /**
AnnaBridge 145:64910690c574 295 * @brief SMARTCARD clock sources
AnnaBridge 145:64910690c574 296 */
AnnaBridge 145:64910690c574 297 typedef enum
AnnaBridge 145:64910690c574 298 {
AnnaBridge 145:64910690c574 299 SMARTCARD_CLOCKSOURCE_PCLK1 = 0x00, /*!< PCLK1 clock source */
AnnaBridge 145:64910690c574 300 SMARTCARD_CLOCKSOURCE_PCLK2 = 0x01, /*!< PCLK2 clock source */
AnnaBridge 145:64910690c574 301 SMARTCARD_CLOCKSOURCE_HSI = 0x02, /*!< HSI clock source */
AnnaBridge 145:64910690c574 302 SMARTCARD_CLOCKSOURCE_SYSCLK = 0x04, /*!< SYSCLK clock source */
AnnaBridge 145:64910690c574 303 SMARTCARD_CLOCKSOURCE_LSE = 0x08, /*!< LSE clock source */
AnnaBridge 145:64910690c574 304 SMARTCARD_CLOCKSOURCE_UNDEFINED = 0x10 /*!< undefined clock source */
AnnaBridge 145:64910690c574 305 }SMARTCARD_ClockSourceTypeDef;
AnnaBridge 145:64910690c574 306
AnnaBridge 145:64910690c574 307 /**
AnnaBridge 145:64910690c574 308 * @}
AnnaBridge 145:64910690c574 309 */
AnnaBridge 145:64910690c574 310
AnnaBridge 145:64910690c574 311 /* Exported constants --------------------------------------------------------*/
AnnaBridge 145:64910690c574 312 /** @defgroup SMARTCARD_Exported_Constants SMARTCARD Exported Constants
AnnaBridge 145:64910690c574 313 * @{
AnnaBridge 145:64910690c574 314 */
AnnaBridge 145:64910690c574 315
AnnaBridge 145:64910690c574 316 /** @defgroup SMARTCARD_Word_Length SMARTCARD Word Length
AnnaBridge 145:64910690c574 317 * @{
AnnaBridge 145:64910690c574 318 */
AnnaBridge 161:aa5281ff4a02 319 #define SMARTCARD_WORDLENGTH_9B USART_CR1_M0 /*!< SMARTCARD frame length */
AnnaBridge 145:64910690c574 320 /**
AnnaBridge 145:64910690c574 321 * @}
AnnaBridge 145:64910690c574 322 */
AnnaBridge 145:64910690c574 323
AnnaBridge 145:64910690c574 324 /** @defgroup SMARTCARD_Stop_Bits SMARTCARD Number of Stop Bits
AnnaBridge 145:64910690c574 325 * @{
AnnaBridge 145:64910690c574 326 */
AnnaBridge 161:aa5281ff4a02 327 #define SMARTCARD_STOPBITS_0_5 USART_CR2_STOP_0 /*!< SMARTCARD frame with 0.5 stop bit */
AnnaBridge 161:aa5281ff4a02 328 #define SMARTCARD_STOPBITS_1_5 USART_CR2_STOP /*!< SMARTCARD frame with 1.5 stop bits */
AnnaBridge 145:64910690c574 329 /**
AnnaBridge 145:64910690c574 330 * @}
AnnaBridge 161:aa5281ff4a02 331 */
AnnaBridge 161:aa5281ff4a02 332
AnnaBridge 145:64910690c574 333 /** @defgroup SMARTCARD_Parity SMARTCARD Parity
AnnaBridge 145:64910690c574 334 * @{
AnnaBridge 145:64910690c574 335 */
AnnaBridge 161:aa5281ff4a02 336 #define SMARTCARD_PARITY_EVEN USART_CR1_PCE /*!< SMARTCARD frame even parity */
AnnaBridge 161:aa5281ff4a02 337 #define SMARTCARD_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS) /*!< SMARTCARD frame odd parity */
AnnaBridge 145:64910690c574 338 /**
AnnaBridge 145:64910690c574 339 * @}
AnnaBridge 145:64910690c574 340 */
AnnaBridge 145:64910690c574 341
AnnaBridge 145:64910690c574 342 /** @defgroup SMARTCARD_Mode SMARTCARD Transfer Mode
AnnaBridge 145:64910690c574 343 * @{
AnnaBridge 145:64910690c574 344 */
AnnaBridge 161:aa5281ff4a02 345 #define SMARTCARD_MODE_RX USART_CR1_RE /*!< SMARTCARD RX mode */
AnnaBridge 161:aa5281ff4a02 346 #define SMARTCARD_MODE_TX USART_CR1_TE /*!< SMARTCARD TX mode */
AnnaBridge 161:aa5281ff4a02 347 #define SMARTCARD_MODE_TX_RX (USART_CR1_TE |USART_CR1_RE) /*!< SMARTCARD RX and TX mode */
AnnaBridge 145:64910690c574 348 /**
AnnaBridge 145:64910690c574 349 * @}
AnnaBridge 145:64910690c574 350 */
AnnaBridge 145:64910690c574 351
AnnaBridge 145:64910690c574 352 /** @defgroup SMARTCARD_Clock_Polarity SMARTCARD Clock Polarity
AnnaBridge 145:64910690c574 353 * @{
AnnaBridge 145:64910690c574 354 */
AnnaBridge 161:aa5281ff4a02 355 #define SMARTCARD_POLARITY_LOW 0x00000000U /*!< SMARTCARD frame low polarity */
AnnaBridge 161:aa5281ff4a02 356 #define SMARTCARD_POLARITY_HIGH USART_CR2_CPOL /*!< SMARTCARD frame high polarity */
AnnaBridge 145:64910690c574 357 /**
AnnaBridge 145:64910690c574 358 * @}
AnnaBridge 145:64910690c574 359 */
AnnaBridge 145:64910690c574 360
AnnaBridge 145:64910690c574 361 /** @defgroup SMARTCARD_Clock_Phase SMARTCARD Clock Phase
AnnaBridge 145:64910690c574 362 * @{
AnnaBridge 145:64910690c574 363 */
AnnaBridge 161:aa5281ff4a02 364 #define SMARTCARD_PHASE_1EDGE 0x00000000U /*!< SMARTCARD frame phase on first clock transition */
AnnaBridge 161:aa5281ff4a02 365 #define SMARTCARD_PHASE_2EDGE USART_CR2_CPHA /*!< SMARTCARD frame phase on second clock transition */
AnnaBridge 145:64910690c574 366 /**
AnnaBridge 145:64910690c574 367 * @}
AnnaBridge 145:64910690c574 368 */
AnnaBridge 145:64910690c574 369
AnnaBridge 145:64910690c574 370 /** @defgroup SMARTCARD_Last_Bit SMARTCARD Last Bit
AnnaBridge 145:64910690c574 371 * @{
AnnaBridge 145:64910690c574 372 */
AnnaBridge 161:aa5281ff4a02 373 #define SMARTCARD_LASTBIT_DISABLE 0x00000000U /*!< SMARTCARD frame last data bit clock pulse not output to SCLK pin */
AnnaBridge 161:aa5281ff4a02 374 #define SMARTCARD_LASTBIT_ENABLE USART_CR2_LBCL /*!< SMARTCARD frame last data bit clock pulse output to SCLK pin */
AnnaBridge 145:64910690c574 375 /**
AnnaBridge 145:64910690c574 376 * @}
AnnaBridge 145:64910690c574 377 */
AnnaBridge 145:64910690c574 378
AnnaBridge 145:64910690c574 379 /** @defgroup SMARTCARD_OneBit_Sampling SMARTCARD One Bit Sampling Method
AnnaBridge 145:64910690c574 380 * @{
AnnaBridge 145:64910690c574 381 */
AnnaBridge 161:aa5281ff4a02 382 #define SMARTCARD_ONE_BIT_SAMPLE_DISABLE 0x00000000U /*!< SMARTCARD frame one-bit sample disabled */
AnnaBridge 161:aa5281ff4a02 383 #define SMARTCARD_ONE_BIT_SAMPLE_ENABLE USART_CR3_ONEBIT /*!< SMARTCARD frame one-bit sample enabled */
AnnaBridge 145:64910690c574 384 /**
AnnaBridge 145:64910690c574 385 * @}
AnnaBridge 145:64910690c574 386 */
AnnaBridge 145:64910690c574 387
AnnaBridge 145:64910690c574 388
AnnaBridge 145:64910690c574 389 /** @defgroup SMARTCARD_NACK_Enable SMARTCARD NACK Enable
AnnaBridge 145:64910690c574 390 * @{
AnnaBridge 145:64910690c574 391 */
AnnaBridge 161:aa5281ff4a02 392 #define SMARTCARD_NACK_DISABLE 0x00000000U /*!< SMARTCARD NACK transmission disabled */
AnnaBridge 161:aa5281ff4a02 393 #define SMARTCARD_NACK_ENABLE USART_CR3_NACK /*!< SMARTCARD NACK transmission enabled */
AnnaBridge 145:64910690c574 394 /**
AnnaBridge 145:64910690c574 395 * @}
AnnaBridge 145:64910690c574 396 */
AnnaBridge 145:64910690c574 397
AnnaBridge 145:64910690c574 398 /** @defgroup SMARTCARD_Timeout_Enable SMARTCARD Timeout Enable
AnnaBridge 145:64910690c574 399 * @{
AnnaBridge 145:64910690c574 400 */
AnnaBridge 161:aa5281ff4a02 401 #define SMARTCARD_TIMEOUT_DISABLE 0x00000000U /*!< SMARTCARD receiver timeout disabled */
AnnaBridge 161:aa5281ff4a02 402 #define SMARTCARD_TIMEOUT_ENABLE USART_CR2_RTOEN /*!< SMARTCARD receiver timeout enabled */
AnnaBridge 145:64910690c574 403 /**
AnnaBridge 145:64910690c574 404 * @}
AnnaBridge 145:64910690c574 405 */
AnnaBridge 145:64910690c574 406
AnnaBridge 161:aa5281ff4a02 407 #if defined(USART_PRESC_PRESCALER)
AnnaBridge 161:aa5281ff4a02 408 /** @defgroup SMARTCARD_ClockPrescaler Clock Prescaler
AnnaBridge 161:aa5281ff4a02 409 * @{
AnnaBridge 161:aa5281ff4a02 410 */
AnnaBridge 161:aa5281ff4a02 411 #define SMARTCARD_PRESCALER_DIV1 0x00000000U /*!< fclk_pres = fclk */
AnnaBridge 161:aa5281ff4a02 412 #define SMARTCARD_PRESCALER_DIV2 0x00000001U /*!< fclk_pres = fclk/2 */
AnnaBridge 161:aa5281ff4a02 413 #define SMARTCARD_PRESCALER_DIV4 0x00000002U /*!< fclk_pres = fclk/4 */
AnnaBridge 161:aa5281ff4a02 414 #define SMARTCARD_PRESCALER_DIV6 0x00000003U /*!< fclk_pres = fclk/6 */
AnnaBridge 161:aa5281ff4a02 415 #define SMARTCARD_PRESCALER_DIV8 0x00000004U /*!< fclk_pres = fclk/8 */
AnnaBridge 161:aa5281ff4a02 416 #define SMARTCARD_PRESCALER_DIV10 0x00000005U /*!< fclk_pres = fclk/10 */
AnnaBridge 161:aa5281ff4a02 417 #define SMARTCARD_PRESCALER_DIV12 0x00000006U /*!< fclk_pres = fclk/12 */
AnnaBridge 161:aa5281ff4a02 418 #define SMARTCARD_PRESCALER_DIV16 0x00000007U /*!< fclk_pres = fclk/16 */
AnnaBridge 161:aa5281ff4a02 419 #define SMARTCARD_PRESCALER_DIV32 0x00000008U /*!< fclk_pres = fclk/32 */
AnnaBridge 161:aa5281ff4a02 420 #define SMARTCARD_PRESCALER_DIV64 0x00000009U /*!< fclk_pres = fclk/64 */
AnnaBridge 161:aa5281ff4a02 421 #define SMARTCARD_PRESCALER_DIV128 0x0000000AU /*!< fclk_pres = fclk/128 */
AnnaBridge 161:aa5281ff4a02 422 #define SMARTCARD_PRESCALER_DIV256 0x0000000BU /*!< fclk_pres = fclk/256 */
AnnaBridge 161:aa5281ff4a02 423
AnnaBridge 161:aa5281ff4a02 424 /**
AnnaBridge 161:aa5281ff4a02 425 * @}
AnnaBridge 161:aa5281ff4a02 426 */
AnnaBridge 161:aa5281ff4a02 427 #endif
AnnaBridge 161:aa5281ff4a02 428
AnnaBridge 145:64910690c574 429 /** @defgroup SMARTCARD_Tx_Inv SMARTCARD advanced feature TX pin active level inversion
AnnaBridge 145:64910690c574 430 * @{
AnnaBridge 145:64910690c574 431 */
AnnaBridge 161:aa5281ff4a02 432 #define SMARTCARD_ADVFEATURE_TXINV_DISABLE 0x00000000U /*!< TX pin active level inversion disable */
AnnaBridge 161:aa5281ff4a02 433 #define SMARTCARD_ADVFEATURE_TXINV_ENABLE USART_CR2_TXINV /*!< TX pin active level inversion enable */
AnnaBridge 145:64910690c574 434 /**
AnnaBridge 145:64910690c574 435 * @}
AnnaBridge 145:64910690c574 436 */
AnnaBridge 145:64910690c574 437
AnnaBridge 145:64910690c574 438 /** @defgroup SMARTCARD_Rx_Inv SMARTCARD advanced feature RX pin active level inversion
AnnaBridge 145:64910690c574 439 * @{
AnnaBridge 145:64910690c574 440 */
AnnaBridge 161:aa5281ff4a02 441 #define SMARTCARD_ADVFEATURE_RXINV_DISABLE 0x00000000U /*!< RX pin active level inversion disable */
AnnaBridge 161:aa5281ff4a02 442 #define SMARTCARD_ADVFEATURE_RXINV_ENABLE USART_CR2_RXINV /*!< RX pin active level inversion enable */
AnnaBridge 145:64910690c574 443 /**
AnnaBridge 145:64910690c574 444 * @}
AnnaBridge 145:64910690c574 445 */
AnnaBridge 145:64910690c574 446
AnnaBridge 145:64910690c574 447 /** @defgroup SMARTCARD_Data_Inv SMARTCARD advanced feature Binary Data inversion
AnnaBridge 145:64910690c574 448 * @{
AnnaBridge 145:64910690c574 449 */
AnnaBridge 161:aa5281ff4a02 450 #define SMARTCARD_ADVFEATURE_DATAINV_DISABLE 0x00000000U /*!< Binary data inversion disable */
AnnaBridge 161:aa5281ff4a02 451 #define SMARTCARD_ADVFEATURE_DATAINV_ENABLE USART_CR2_DATAINV /*!< Binary data inversion enable */
AnnaBridge 145:64910690c574 452 /**
AnnaBridge 145:64910690c574 453 * @}
AnnaBridge 145:64910690c574 454 */
AnnaBridge 145:64910690c574 455
AnnaBridge 145:64910690c574 456 /** @defgroup SMARTCARD_Rx_Tx_Swap SMARTCARD advanced feature RX TX pins swap
AnnaBridge 145:64910690c574 457 * @{
AnnaBridge 145:64910690c574 458 */
AnnaBridge 161:aa5281ff4a02 459 #define SMARTCARD_ADVFEATURE_SWAP_DISABLE 0x00000000U /*!< TX/RX pins swap disable */
AnnaBridge 161:aa5281ff4a02 460 #define SMARTCARD_ADVFEATURE_SWAP_ENABLE USART_CR2_SWAP /*!< TX/RX pins swap enable */
AnnaBridge 145:64910690c574 461 /**
AnnaBridge 145:64910690c574 462 * @}
AnnaBridge 145:64910690c574 463 */
AnnaBridge 145:64910690c574 464
AnnaBridge 145:64910690c574 465 /** @defgroup SMARTCARD_Overrun_Disable SMARTCARD advanced feature Overrun Disable
AnnaBridge 145:64910690c574 466 * @{
AnnaBridge 145:64910690c574 467 */
AnnaBridge 161:aa5281ff4a02 468 #define SMARTCARD_ADVFEATURE_OVERRUN_ENABLE 0x00000000U /*!< RX overrun enable */
AnnaBridge 161:aa5281ff4a02 469 #define SMARTCARD_ADVFEATURE_OVERRUN_DISABLE USART_CR3_OVRDIS /*!< RX overrun disable */
AnnaBridge 145:64910690c574 470 /**
AnnaBridge 145:64910690c574 471 * @}
AnnaBridge 145:64910690c574 472 */
AnnaBridge 145:64910690c574 473
AnnaBridge 145:64910690c574 474 /** @defgroup SMARTCARD_DMA_Disable_on_Rx_Error SMARTCARD advanced feature DMA Disable on Rx Error
AnnaBridge 145:64910690c574 475 * @{
AnnaBridge 145:64910690c574 476 */
AnnaBridge 161:aa5281ff4a02 477 #define SMARTCARD_ADVFEATURE_DMA_ENABLEONRXERROR 0x00000000U /*!< DMA enable on Reception Error */
AnnaBridge 161:aa5281ff4a02 478 #define SMARTCARD_ADVFEATURE_DMA_DISABLEONRXERROR USART_CR3_DDRE /*!< DMA disable on Reception Error */
AnnaBridge 145:64910690c574 479 /**
AnnaBridge 145:64910690c574 480 * @}
AnnaBridge 145:64910690c574 481 */
AnnaBridge 145:64910690c574 482
AnnaBridge 145:64910690c574 483 /** @defgroup SMARTCARD_MSB_First SMARTCARD advanced feature MSB first
AnnaBridge 145:64910690c574 484 * @{
AnnaBridge 145:64910690c574 485 */
AnnaBridge 161:aa5281ff4a02 486 #define SMARTCARD_ADVFEATURE_MSBFIRST_DISABLE 0x00000000U /*!< Most significant bit sent/received first disable */
AnnaBridge 161:aa5281ff4a02 487 #define SMARTCARD_ADVFEATURE_MSBFIRST_ENABLE USART_CR2_MSBFIRST /*!< Most significant bit sent/received first enable */
AnnaBridge 145:64910690c574 488 /**
AnnaBridge 145:64910690c574 489 * @}
AnnaBridge 145:64910690c574 490 */
AnnaBridge 145:64910690c574 491
AnnaBridge 145:64910690c574 492 /** @defgroup SMARTCARD_Request_Parameters SMARTCARD Request Parameters
AnnaBridge 145:64910690c574 493 * @{
AnnaBridge 145:64910690c574 494 */
AnnaBridge 161:aa5281ff4a02 495 #define SMARTCARD_RXDATA_FLUSH_REQUEST USART_RQR_RXFRQ /*!< Receive data flush request */
AnnaBridge 161:aa5281ff4a02 496 #define SMARTCARD_TXDATA_FLUSH_REQUEST USART_RQR_TXFRQ /*!< Transmit data flush request */
AnnaBridge 145:64910690c574 497 /**
AnnaBridge 145:64910690c574 498 * @}
AnnaBridge 145:64910690c574 499 */
AnnaBridge 145:64910690c574 500
AnnaBridge 145:64910690c574 501 /** @defgroup SMARTCARD_Interruption_Mask SMARTCARD interruptions flags mask
AnnaBridge 145:64910690c574 502 * @{
AnnaBridge 145:64910690c574 503 */
AnnaBridge 161:aa5281ff4a02 504 #define SMARTCARD_IT_MASK 0x001FU /*!< SMARTCARD interruptions flags mask */
AnnaBridge 145:64910690c574 505 /**
AnnaBridge 145:64910690c574 506 * @}
AnnaBridge 145:64910690c574 507 */
AnnaBridge 145:64910690c574 508
AnnaBridge 145:64910690c574 509 /**
AnnaBridge 145:64910690c574 510 * @}
AnnaBridge 145:64910690c574 511 */
AnnaBridge 145:64910690c574 512
AnnaBridge 145:64910690c574 513 /* Exported macros -----------------------------------------------------------*/
AnnaBridge 145:64910690c574 514 /** @defgroup SMARTCARD_Exported_Macros SMARTCARD Exported Macros
AnnaBridge 145:64910690c574 515 * @{
AnnaBridge 145:64910690c574 516 */
AnnaBridge 145:64910690c574 517
AnnaBridge 145:64910690c574 518 /** @brief Reset SMARTCARD handle states.
AnnaBridge 161:aa5281ff4a02 519 * @param __HANDLE__ SMARTCARD handle.
AnnaBridge 145:64910690c574 520 * @retval None
AnnaBridge 145:64910690c574 521 */
AnnaBridge 145:64910690c574 522 #define __HAL_SMARTCARD_RESET_HANDLE_STATE(__HANDLE__) do{ \
AnnaBridge 145:64910690c574 523 (__HANDLE__)->gState = HAL_SMARTCARD_STATE_RESET; \
AnnaBridge 145:64910690c574 524 (__HANDLE__)->RxState = HAL_SMARTCARD_STATE_RESET; \
AnnaBridge 145:64910690c574 525 } while(0)
AnnaBridge 145:64910690c574 526
AnnaBridge 145:64910690c574 527 /** @brief Flush the Smartcard Data registers.
AnnaBridge 161:aa5281ff4a02 528 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 145:64910690c574 529 * @retval None
AnnaBridge 145:64910690c574 530 */
AnnaBridge 145:64910690c574 531 #define __HAL_SMARTCARD_FLUSH_DRREGISTER(__HANDLE__) \
AnnaBridge 145:64910690c574 532 do{ \
AnnaBridge 145:64910690c574 533 SET_BIT((__HANDLE__)->Instance->RQR, SMARTCARD_RXDATA_FLUSH_REQUEST); \
AnnaBridge 145:64910690c574 534 SET_BIT((__HANDLE__)->Instance->RQR, SMARTCARD_TXDATA_FLUSH_REQUEST); \
AnnaBridge 145:64910690c574 535 } while(0)
AnnaBridge 145:64910690c574 536
AnnaBridge 145:64910690c574 537 /** @brief Clear the specified SMARTCARD pending flag.
AnnaBridge 161:aa5281ff4a02 538 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 161:aa5281ff4a02 539 * @param __FLAG__ specifies the flag to check.
AnnaBridge 145:64910690c574 540 * This parameter can be any combination of the following values:
AnnaBridge 145:64910690c574 541 * @arg @ref SMARTCARD_CLEAR_PEF Parity error clear flag
AnnaBridge 145:64910690c574 542 * @arg @ref SMARTCARD_CLEAR_FEF Framing error clear flag
AnnaBridge 145:64910690c574 543 * @arg @ref SMARTCARD_CLEAR_NEF Noise detected clear flag
AnnaBridge 145:64910690c574 544 * @arg @ref SMARTCARD_CLEAR_OREF OverRun error clear flag
AnnaBridge 145:64910690c574 545 * @arg @ref SMARTCARD_CLEAR_IDLEF Idle line detected clear flag
AnnaBridge 145:64910690c574 546 * @arg @ref SMARTCARD_CLEAR_TCF Transmission complete clear flag
AnnaBridge 161:aa5281ff4a02 547 * @arg @ref SMARTCARD_CLEAR_TCBGTF Transmission complete before guard time clear flag
AnnaBridge 145:64910690c574 548 * @arg @ref SMARTCARD_CLEAR_RTOF Receiver timeout clear flag
AnnaBridge 145:64910690c574 549 * @arg @ref SMARTCARD_CLEAR_EOBF End of block clear flag
AnnaBridge 161:aa5281ff4a02 550 * @arg @ref SMARTCARD_CLEAR_TXFECF TXFIFO empty Clear flag
AnnaBridge 145:64910690c574 551 * @retval None
AnnaBridge 145:64910690c574 552 */
AnnaBridge 145:64910690c574 553 #define __HAL_SMARTCARD_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
AnnaBridge 145:64910690c574 554
AnnaBridge 145:64910690c574 555 /** @brief Clear the SMARTCARD PE pending flag.
AnnaBridge 161:aa5281ff4a02 556 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 145:64910690c574 557 * @retval None
AnnaBridge 145:64910690c574 558 */
AnnaBridge 145:64910690c574 559 #define __HAL_SMARTCARD_CLEAR_PEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_PEF)
AnnaBridge 145:64910690c574 560
AnnaBridge 145:64910690c574 561
AnnaBridge 145:64910690c574 562 /** @brief Clear the SMARTCARD FE pending flag.
AnnaBridge 161:aa5281ff4a02 563 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 145:64910690c574 564 * @retval None
AnnaBridge 145:64910690c574 565 */
AnnaBridge 145:64910690c574 566 #define __HAL_SMARTCARD_CLEAR_FEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_FEF)
AnnaBridge 145:64910690c574 567
AnnaBridge 145:64910690c574 568 /** @brief Clear the SMARTCARD NE pending flag.
AnnaBridge 161:aa5281ff4a02 569 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 145:64910690c574 570 * @retval None
AnnaBridge 145:64910690c574 571 */
AnnaBridge 145:64910690c574 572 #define __HAL_SMARTCARD_CLEAR_NEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_NEF)
AnnaBridge 145:64910690c574 573
AnnaBridge 145:64910690c574 574 /** @brief Clear the SMARTCARD ORE pending flag.
AnnaBridge 161:aa5281ff4a02 575 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 145:64910690c574 576 * @retval None
AnnaBridge 145:64910690c574 577 */
AnnaBridge 145:64910690c574 578 #define __HAL_SMARTCARD_CLEAR_OREFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_OREF)
AnnaBridge 145:64910690c574 579
AnnaBridge 145:64910690c574 580 /** @brief Clear the SMARTCARD IDLE pending flag.
AnnaBridge 161:aa5281ff4a02 581 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 145:64910690c574 582 * @retval None
AnnaBridge 145:64910690c574 583 */
AnnaBridge 145:64910690c574 584 #define __HAL_SMARTCARD_CLEAR_IDLEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_IDLEF)
AnnaBridge 145:64910690c574 585
AnnaBridge 145:64910690c574 586 /** @brief Check whether the specified Smartcard flag is set or not.
AnnaBridge 161:aa5281ff4a02 587 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 161:aa5281ff4a02 588 * @param __FLAG__ specifies the flag to check.
AnnaBridge 145:64910690c574 589 * This parameter can be one of the following values:
AnnaBridge 145:64910690c574 590 * @arg @ref SMARTCARD_FLAG_TCBGT Transmission complete before guard time flag (when flag available)
AnnaBridge 145:64910690c574 591 * @arg @ref SMARTCARD_FLAG_REACK Receive enable acknowledge flag
AnnaBridge 145:64910690c574 592 * @arg @ref SMARTCARD_FLAG_TEACK Transmit enable acknowledge flag
AnnaBridge 145:64910690c574 593 * @arg @ref SMARTCARD_FLAG_BUSY Busy flag
AnnaBridge 145:64910690c574 594 * @arg @ref SMARTCARD_FLAG_EOBF End of block flag
AnnaBridge 145:64910690c574 595 * @arg @ref SMARTCARD_FLAG_RTOF Receiver timeout flag
AnnaBridge 145:64910690c574 596 * @arg @ref SMARTCARD_FLAG_TXE Transmit data register empty flag
AnnaBridge 161:aa5281ff4a02 597 * @arg @ref SMARTCARD_FLAG_TXFNF TXFIFO not full flag
AnnaBridge 145:64910690c574 598 * @arg @ref SMARTCARD_FLAG_TC Transmission complete flag
AnnaBridge 145:64910690c574 599 * @arg @ref SMARTCARD_FLAG_RXNE Receive data register not empty flag
AnnaBridge 161:aa5281ff4a02 600 * @arg @ref SMARTCARD_FLAG_RXFNE RXFIFO not empty flag
AnnaBridge 145:64910690c574 601 * @arg @ref SMARTCARD_FLAG_IDLE Idle line detection flag
AnnaBridge 145:64910690c574 602 * @arg @ref SMARTCARD_FLAG_ORE Overrun error flag
AnnaBridge 145:64910690c574 603 * @arg @ref SMARTCARD_FLAG_NE Noise error flag
AnnaBridge 145:64910690c574 604 * @arg @ref SMARTCARD_FLAG_FE Framing error flag
AnnaBridge 145:64910690c574 605 * @arg @ref SMARTCARD_FLAG_PE Parity error flag
AnnaBridge 161:aa5281ff4a02 606 * @arg @ref SMARTCARD_FLAG_TXFE TXFIFO Empty flag
AnnaBridge 161:aa5281ff4a02 607 * @arg @ref SMARTCARD_FLAG_RXFF RXFIFO Full flag
AnnaBridge 161:aa5281ff4a02 608 * @arg @ref SMARTCARD_FLAG_RXFT SMARTCARD RXFIFO threshold flag
AnnaBridge 161:aa5281ff4a02 609 * @arg @ref SMARTCARD_FLAG_TXFT SMARTCARD TXFIFO threshold flag
AnnaBridge 145:64910690c574 610 * @retval The new state of __FLAG__ (TRUE or FALSE).
AnnaBridge 145:64910690c574 611 */
AnnaBridge 145:64910690c574 612 #define __HAL_SMARTCARD_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__))
AnnaBridge 145:64910690c574 613
AnnaBridge 145:64910690c574 614 /** @brief Enable the specified SmartCard interrupt.
AnnaBridge 161:aa5281ff4a02 615 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 161:aa5281ff4a02 616 * @param __INTERRUPT__ specifies the SMARTCARD interrupt to enable.
AnnaBridge 145:64910690c574 617 * This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 618 * @arg @ref SMARTCARD_IT_EOB End of block interrupt
AnnaBridge 161:aa5281ff4a02 619 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt
AnnaBridge 161:aa5281ff4a02 620 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt
AnnaBridge 161:aa5281ff4a02 621 * @arg @ref SMARTCARD_IT_TXFNF TX FIFO not full interruption
AnnaBridge 161:aa5281ff4a02 622 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt
AnnaBridge 161:aa5281ff4a02 623 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time interrupt (when interruption available)
AnnaBridge 161:aa5281ff4a02 624 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt
AnnaBridge 161:aa5281ff4a02 625 * @arg @ref SMARTCARD_IT_RXFNE RXFIFO not empty interruption
AnnaBridge 161:aa5281ff4a02 626 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt
AnnaBridge 161:aa5281ff4a02 627 * @arg @ref SMARTCARD_IT_PE Parity error interrupt
AnnaBridge 161:aa5281ff4a02 628 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error)
AnnaBridge 161:aa5281ff4a02 629 * @arg @ref SMARTCARD_IT_RXFF RXFIFO full interruption
AnnaBridge 161:aa5281ff4a02 630 * @arg @ref SMARTCARD_IT_TXFE TXFIFO empty interruption
AnnaBridge 161:aa5281ff4a02 631 * @arg @ref SMARTCARD_IT_RXFT RXFIFO threshold reached interruption
AnnaBridge 161:aa5281ff4a02 632 * @arg @ref SMARTCARD_IT_TXFT TXFIFO threshold reached interruption
AnnaBridge 145:64910690c574 633 * @retval None
AnnaBridge 145:64910690c574 634 */
AnnaBridge 145:64910690c574 635 #define __HAL_SMARTCARD_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1)? ((__HANDLE__)->Instance->CR1 |= (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \
AnnaBridge 145:64910690c574 636 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2)? ((__HANDLE__)->Instance->CR2 |= (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \
AnnaBridge 145:64910690c574 637 ((__HANDLE__)->Instance->CR3 |= (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))))
AnnaBridge 145:64910690c574 638
AnnaBridge 145:64910690c574 639 /** @brief Disable the specified SmartCard interrupt.
AnnaBridge 161:aa5281ff4a02 640 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 161:aa5281ff4a02 641 * @param __INTERRUPT__ specifies the SMARTCARD interrupt to disable.
AnnaBridge 145:64910690c574 642 * This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 643 * @arg @ref SMARTCARD_IT_EOB End of block interrupt
AnnaBridge 161:aa5281ff4a02 644 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt
AnnaBridge 161:aa5281ff4a02 645 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt
AnnaBridge 161:aa5281ff4a02 646 * @arg @ref SMARTCARD_IT_TXFNF TX FIFO not full interruption
AnnaBridge 161:aa5281ff4a02 647 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt
AnnaBridge 161:aa5281ff4a02 648 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time interrupt (when interruption available)
AnnaBridge 161:aa5281ff4a02 649 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt
AnnaBridge 161:aa5281ff4a02 650 * @arg @ref SMARTCARD_IT_RXFNE RXFIFO not empty interruption
AnnaBridge 161:aa5281ff4a02 651 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt
AnnaBridge 161:aa5281ff4a02 652 * @arg @ref SMARTCARD_IT_PE Parity error interrupt
AnnaBridge 161:aa5281ff4a02 653 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error)
AnnaBridge 161:aa5281ff4a02 654 * @arg @ref SMARTCARD_IT_RXFF RXFIFO full interruption
AnnaBridge 161:aa5281ff4a02 655 * @arg @ref SMARTCARD_IT_TXFE TXFIFO empty interruption
AnnaBridge 161:aa5281ff4a02 656 * @arg @ref SMARTCARD_IT_RXFT RXFIFO threshold reached interruption
AnnaBridge 161:aa5281ff4a02 657 * @arg @ref SMARTCARD_IT_TXFT TXFIFO threshold reached interruption
AnnaBridge 145:64910690c574 658 * @retval None
AnnaBridge 145:64910690c574 659 */
AnnaBridge 145:64910690c574 660 #define __HAL_SMARTCARD_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1)? ((__HANDLE__)->Instance->CR1 &= ~ (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \
AnnaBridge 145:64910690c574 661 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2)? ((__HANDLE__)->Instance->CR2 &= ~ (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \
AnnaBridge 145:64910690c574 662 ((__HANDLE__)->Instance->CR3 &= ~ (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))))
AnnaBridge 145:64910690c574 663
AnnaBridge 145:64910690c574 664
AnnaBridge 145:64910690c574 665 /** @brief Check whether the specified SmartCard interrupt has occurred or not.
AnnaBridge 161:aa5281ff4a02 666 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 161:aa5281ff4a02 667 * @param __INTERRUPT__ specifies the SMARTCARD interrupt to check.
AnnaBridge 145:64910690c574 668 * This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 669 * @arg @ref SMARTCARD_IT_EOB End of block interrupt
AnnaBridge 161:aa5281ff4a02 670 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt
AnnaBridge 161:aa5281ff4a02 671 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt
AnnaBridge 161:aa5281ff4a02 672 * @arg @ref SMARTCARD_IT_TXFNF TX FIFO not full interruption
AnnaBridge 161:aa5281ff4a02 673 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt
AnnaBridge 161:aa5281ff4a02 674 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time interrupt (when interruption available)
AnnaBridge 161:aa5281ff4a02 675 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt
AnnaBridge 161:aa5281ff4a02 676 * @arg @ref SMARTCARD_IT_RXFNE RXFIFO not empty interruption
AnnaBridge 161:aa5281ff4a02 677 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt
AnnaBridge 161:aa5281ff4a02 678 * @arg @ref SMARTCARD_IT_PE Parity error interrupt
AnnaBridge 161:aa5281ff4a02 679 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error)
AnnaBridge 161:aa5281ff4a02 680 * @arg @ref SMARTCARD_IT_RXFF RXFIFO full interruption
AnnaBridge 161:aa5281ff4a02 681 * @arg @ref SMARTCARD_IT_TXFE TXFIFO empty interruption
AnnaBridge 161:aa5281ff4a02 682 * @arg @ref SMARTCARD_IT_RXFT RXFIFO threshold reached interruption
AnnaBridge 161:aa5281ff4a02 683 * @arg @ref SMARTCARD_IT_TXFT TXFIFO threshold reached interruption
AnnaBridge 161:aa5281ff4a02 684 * @retval The new state of __INTERRUPT__ (SET or RESET).
AnnaBridge 145:64910690c574 685 */
AnnaBridge 161:aa5281ff4a02 686 #define __HAL_SMARTCARD_GET_IT(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISR & (0x01U << ((__INTERRUPT__)>> 0x08U))) != RESET) ? SET : RESET)
AnnaBridge 145:64910690c574 687
AnnaBridge 145:64910690c574 688 /** @brief Check whether the specified SmartCard interrupt source is enabled or not.
AnnaBridge 161:aa5281ff4a02 689 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 161:aa5281ff4a02 690 * @param __INTERRUPT__ specifies the SMARTCARD interrupt source to check.
AnnaBridge 145:64910690c574 691 * This parameter can be one of the following values:
AnnaBridge 161:aa5281ff4a02 692 * @arg @ref SMARTCARD_IT_EOB End of block interrupt
AnnaBridge 161:aa5281ff4a02 693 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt
AnnaBridge 161:aa5281ff4a02 694 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt
AnnaBridge 161:aa5281ff4a02 695 * @arg @ref SMARTCARD_IT_TXFNF TX FIFO not full interruption
AnnaBridge 161:aa5281ff4a02 696 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt
AnnaBridge 161:aa5281ff4a02 697 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time interrupt (when interruption available)
AnnaBridge 161:aa5281ff4a02 698 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt
AnnaBridge 161:aa5281ff4a02 699 * @arg @ref SMARTCARD_IT_RXFNE RXFIFO not empty interruption
AnnaBridge 161:aa5281ff4a02 700 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt
AnnaBridge 161:aa5281ff4a02 701 * @arg @ref SMARTCARD_IT_PE Parity error interrupt
AnnaBridge 161:aa5281ff4a02 702 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error)
AnnaBridge 161:aa5281ff4a02 703 * @arg @ref SMARTCARD_IT_RXFF RXFIFO full interruption
AnnaBridge 161:aa5281ff4a02 704 * @arg @ref SMARTCARD_IT_TXFE TXFIFO empty interruption
AnnaBridge 161:aa5281ff4a02 705 * @arg @ref SMARTCARD_IT_RXFT RXFIFO threshold reached interruption
AnnaBridge 161:aa5281ff4a02 706 * @arg @ref SMARTCARD_IT_TXFT TXFIFO threshold reached interruption
AnnaBridge 161:aa5281ff4a02 707 * @retval The new state of __INTERRUPT__ (SET or RESET).
AnnaBridge 145:64910690c574 708 */
AnnaBridge 161:aa5281ff4a02 709 #define __HAL_SMARTCARD_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((((uint8_t)(__INTERRUPT__)) >> 0x05U) == 0x01U)? (__HANDLE__)->Instance->CR1 : \
AnnaBridge 161:aa5281ff4a02 710 (((((uint8_t)(__INTERRUPT__)) >> 0x05U) == 0x01U)? (__HANDLE__)->Instance->CR2 : \
AnnaBridge 161:aa5281ff4a02 711 (__HANDLE__)->Instance->CR3)) & (0x01U << (((uint16_t)(__INTERRUPT__)) & SMARTCARD_IT_MASK))) != RESET) ? SET : RESET)
AnnaBridge 145:64910690c574 712
AnnaBridge 145:64910690c574 713
AnnaBridge 145:64910690c574 714 /** @brief Clear the specified SMARTCARD ISR flag, in setting the proper ICR register flag.
AnnaBridge 161:aa5281ff4a02 715 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 161:aa5281ff4a02 716 * @param __IT_CLEAR__ specifies the interrupt clear register flag that needs to be set
AnnaBridge 145:64910690c574 717 * to clear the corresponding interrupt.
AnnaBridge 145:64910690c574 718 * This parameter can be one of the following values:
AnnaBridge 145:64910690c574 719 * @arg @ref SMARTCARD_CLEAR_PEF Parity error clear flag
AnnaBridge 145:64910690c574 720 * @arg @ref SMARTCARD_CLEAR_FEF Framing error clear flag
AnnaBridge 145:64910690c574 721 * @arg @ref SMARTCARD_CLEAR_NEF Noise detected clear flag
AnnaBridge 145:64910690c574 722 * @arg @ref SMARTCARD_CLEAR_OREF OverRun error clear flag
AnnaBridge 145:64910690c574 723 * @arg @ref SMARTCARD_CLEAR_IDLEF Idle line detection clear flag
AnnaBridge 161:aa5281ff4a02 724 * @arg @ref SMARTCARD_CLEAR_TXFECF TXFIFO empty Clear Flag
AnnaBridge 145:64910690c574 725 * @arg @ref SMARTCARD_CLEAR_TCF Transmission complete clear flag
AnnaBridge 145:64910690c574 726 * @arg @ref SMARTCARD_CLEAR_TCBGTF Transmission complete before guard time clear flag (when flag available)
AnnaBridge 145:64910690c574 727 * @arg @ref SMARTCARD_CLEAR_RTOF Receiver timeout clear flag
AnnaBridge 145:64910690c574 728 * @arg @ref SMARTCARD_CLEAR_EOBF End of block clear flag
AnnaBridge 145:64910690c574 729 * @retval None
AnnaBridge 145:64910690c574 730 */
AnnaBridge 161:aa5281ff4a02 731 #define __HAL_SMARTCARD_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR |= (uint32_t)(__IT_CLEAR__))
AnnaBridge 145:64910690c574 732
AnnaBridge 145:64910690c574 733 /** @brief Set a specific SMARTCARD request flag.
AnnaBridge 161:aa5281ff4a02 734 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 161:aa5281ff4a02 735 * @param __REQ__ specifies the request flag to set
AnnaBridge 145:64910690c574 736 * This parameter can be one of the following values:
AnnaBridge 145:64910690c574 737 * @arg @ref SMARTCARD_RXDATA_FLUSH_REQUEST Receive data flush Request
AnnaBridge 145:64910690c574 738 * @arg @ref SMARTCARD_TXDATA_FLUSH_REQUEST Transmit data flush Request
AnnaBridge 145:64910690c574 739 *
AnnaBridge 145:64910690c574 740 * @retval None
AnnaBridge 145:64910690c574 741 */
AnnaBridge 145:64910690c574 742 #define __HAL_SMARTCARD_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__))
AnnaBridge 145:64910690c574 743
AnnaBridge 145:64910690c574 744 /** @brief Enable the SMARTCARD one bit sample method.
AnnaBridge 161:aa5281ff4a02 745 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 145:64910690c574 746 * @retval None
AnnaBridge 145:64910690c574 747 */
AnnaBridge 145:64910690c574 748 #define __HAL_SMARTCARD_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT)
AnnaBridge 145:64910690c574 749
AnnaBridge 145:64910690c574 750 /** @brief Disable the SMARTCARD one bit sample method.
AnnaBridge 161:aa5281ff4a02 751 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 145:64910690c574 752 * @retval None
AnnaBridge 145:64910690c574 753 */
AnnaBridge 145:64910690c574 754 #define __HAL_SMARTCARD_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= (uint32_t)~((uint32_t)USART_CR3_ONEBIT))
AnnaBridge 145:64910690c574 755
AnnaBridge 145:64910690c574 756 /** @brief Enable the USART associated to the SMARTCARD Handle.
AnnaBridge 161:aa5281ff4a02 757 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 145:64910690c574 758 * @retval None
AnnaBridge 145:64910690c574 759 */
AnnaBridge 145:64910690c574 760 #define __HAL_SMARTCARD_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE)
AnnaBridge 145:64910690c574 761
AnnaBridge 145:64910690c574 762 /** @brief Disable the USART associated to the SMARTCARD Handle
AnnaBridge 161:aa5281ff4a02 763 * @param __HANDLE__ specifies the SMARTCARD Handle.
AnnaBridge 145:64910690c574 764 * @retval None
AnnaBridge 145:64910690c574 765 */
AnnaBridge 145:64910690c574 766 #define __HAL_SMARTCARD_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE)
AnnaBridge 145:64910690c574 767
AnnaBridge 145:64910690c574 768 /**
AnnaBridge 145:64910690c574 769 * @}
AnnaBridge 145:64910690c574 770 */
AnnaBridge 145:64910690c574 771
AnnaBridge 145:64910690c574 772 /* Private macros -------------------------------------------------------------*/
AnnaBridge 145:64910690c574 773 /** @defgroup SMARTCARD_Private_Macros SMARTCARD Private Macros
AnnaBridge 145:64910690c574 774 * @{
AnnaBridge 145:64910690c574 775 */
AnnaBridge 145:64910690c574 776
AnnaBridge 145:64910690c574 777 /** @brief Check the Baud rate range.
AnnaBridge 145:64910690c574 778 * @note The maximum Baud Rate is derived from the maximum clock on L4 (80 MHz)
AnnaBridge 145:64910690c574 779 * divided by the oversampling used on the SMARTCARD (i.e. 16).
AnnaBridge 161:aa5281ff4a02 780 * @param __BAUDRATE__ Baud rate set by the configuration function.
AnnaBridge 145:64910690c574 781 * @retval Test result (TRUE or FALSE)
AnnaBridge 145:64910690c574 782 */
AnnaBridge 145:64910690c574 783 #define IS_SMARTCARD_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 5000001)
AnnaBridge 145:64910690c574 784
AnnaBridge 145:64910690c574 785 /** @brief Check the block length range.
AnnaBridge 145:64910690c574 786 * @note The maximum SMARTCARD block length is 0xFF.
AnnaBridge 161:aa5281ff4a02 787 * @param __LENGTH__ block length.
AnnaBridge 145:64910690c574 788 * @retval Test result (TRUE or FALSE)
AnnaBridge 145:64910690c574 789 */
AnnaBridge 161:aa5281ff4a02 790 #define IS_SMARTCARD_BLOCKLENGTH(__LENGTH__) ((__LENGTH__) <= 0xFFU)
AnnaBridge 145:64910690c574 791
AnnaBridge 145:64910690c574 792 /** @brief Check the receiver timeout value.
AnnaBridge 145:64910690c574 793 * @note The maximum SMARTCARD receiver timeout value is 0xFFFFFF.
AnnaBridge 161:aa5281ff4a02 794 * @param __TIMEOUTVALUE__ receiver timeout value.
AnnaBridge 145:64910690c574 795 * @retval Test result (TRUE or FALSE)
AnnaBridge 145:64910690c574 796 */
AnnaBridge 161:aa5281ff4a02 797 #define IS_SMARTCARD_TIMEOUT_VALUE(__TIMEOUTVALUE__) ((__TIMEOUTVALUE__) <= 0xFFFFFFU)
AnnaBridge 145:64910690c574 798
AnnaBridge 145:64910690c574 799 /** @brief Check the SMARTCARD autoretry counter value.
AnnaBridge 145:64910690c574 800 * @note The maximum number of retransmissions is 0x7.
AnnaBridge 161:aa5281ff4a02 801 * @param __COUNT__ number of retransmissions.
AnnaBridge 145:64910690c574 802 * @retval Test result (TRUE or FALSE)
AnnaBridge 145:64910690c574 803 */
AnnaBridge 161:aa5281ff4a02 804 #define IS_SMARTCARD_AUTORETRY_COUNT(__COUNT__) ((__COUNT__) <= 0x7U)
AnnaBridge 145:64910690c574 805
AnnaBridge 145:64910690c574 806 /**
AnnaBridge 145:64910690c574 807 * @brief Ensure that SMARTCARD frame length is valid.
AnnaBridge 161:aa5281ff4a02 808 * @param __LENGTH__ SMARTCARD frame length.
AnnaBridge 145:64910690c574 809 * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid)
AnnaBridge 145:64910690c574 810 */
AnnaBridge 145:64910690c574 811 #define IS_SMARTCARD_WORD_LENGTH(__LENGTH__) ((__LENGTH__) == SMARTCARD_WORDLENGTH_9B)
AnnaBridge 145:64910690c574 812
AnnaBridge 145:64910690c574 813 /**
AnnaBridge 145:64910690c574 814 * @brief Ensure that SMARTCARD frame number of stop bits is valid.
AnnaBridge 161:aa5281ff4a02 815 * @param __STOPBITS__ SMARTCARD frame number of stop bits.
AnnaBridge 145:64910690c574 816 * @retval SET (__STOPBITS__ is valid) or RESET (__STOPBITS__ is invalid)
AnnaBridge 145:64910690c574 817 */
AnnaBridge 145:64910690c574 818 #define IS_SMARTCARD_STOPBITS(__STOPBITS__) (((__STOPBITS__) == SMARTCARD_STOPBITS_0_5) ||\
AnnaBridge 145:64910690c574 819 ((__STOPBITS__) == SMARTCARD_STOPBITS_1_5))
AnnaBridge 145:64910690c574 820
AnnaBridge 145:64910690c574 821 /**
AnnaBridge 145:64910690c574 822 * @brief Ensure that SMARTCARD frame parity is valid.
AnnaBridge 161:aa5281ff4a02 823 * @param __PARITY__ SMARTCARD frame parity.
AnnaBridge 145:64910690c574 824 * @retval SET (__PARITY__ is valid) or RESET (__PARITY__ is invalid)
AnnaBridge 145:64910690c574 825 */
AnnaBridge 145:64910690c574 826 #define IS_SMARTCARD_PARITY(__PARITY__) (((__PARITY__) == SMARTCARD_PARITY_EVEN) || \
AnnaBridge 145:64910690c574 827 ((__PARITY__) == SMARTCARD_PARITY_ODD))
AnnaBridge 145:64910690c574 828
AnnaBridge 145:64910690c574 829 /**
AnnaBridge 145:64910690c574 830 * @brief Ensure that SMARTCARD communication mode is valid.
AnnaBridge 161:aa5281ff4a02 831 * @param __MODE__ SMARTCARD communication mode.
AnnaBridge 145:64910690c574 832 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
AnnaBridge 145:64910690c574 833 */
AnnaBridge 161:aa5281ff4a02 834 #define IS_SMARTCARD_MODE(__MODE__) ((((__MODE__) & 0xFFF3U) == 0x00U) && ((__MODE__) != 0x00U))
AnnaBridge 145:64910690c574 835
AnnaBridge 145:64910690c574 836 /**
AnnaBridge 145:64910690c574 837 * @brief Ensure that SMARTCARD frame polarity is valid.
AnnaBridge 161:aa5281ff4a02 838 * @param __CPOL__ SMARTCARD frame polarity.
AnnaBridge 145:64910690c574 839 * @retval SET (__CPOL__ is valid) or RESET (__CPOL__ is invalid)
AnnaBridge 145:64910690c574 840 */
AnnaBridge 145:64910690c574 841 #define IS_SMARTCARD_POLARITY(__CPOL__) (((__CPOL__) == SMARTCARD_POLARITY_LOW) || ((__CPOL__) == SMARTCARD_POLARITY_HIGH))
AnnaBridge 145:64910690c574 842
AnnaBridge 145:64910690c574 843 /**
AnnaBridge 145:64910690c574 844 * @brief Ensure that SMARTCARD frame phase is valid.
AnnaBridge 161:aa5281ff4a02 845 * @param __CPHA__ SMARTCARD frame phase.
AnnaBridge 145:64910690c574 846 * @retval SET (__CPHA__ is valid) or RESET (__CPHA__ is invalid)
AnnaBridge 145:64910690c574 847 */
AnnaBridge 145:64910690c574 848 #define IS_SMARTCARD_PHASE(__CPHA__) (((__CPHA__) == SMARTCARD_PHASE_1EDGE) || ((__CPHA__) == SMARTCARD_PHASE_2EDGE))
AnnaBridge 145:64910690c574 849
AnnaBridge 145:64910690c574 850 /**
AnnaBridge 145:64910690c574 851 * @brief Ensure that SMARTCARD frame last bit clock pulse setting is valid.
AnnaBridge 161:aa5281ff4a02 852 * @param __LASTBIT__ SMARTCARD frame last bit clock pulse setting.
AnnaBridge 145:64910690c574 853 * @retval SET (__LASTBIT__ is valid) or RESET (__LASTBIT__ is invalid)
AnnaBridge 145:64910690c574 854 */
AnnaBridge 145:64910690c574 855 #define IS_SMARTCARD_LASTBIT(__LASTBIT__) (((__LASTBIT__) == SMARTCARD_LASTBIT_DISABLE) || \
AnnaBridge 145:64910690c574 856 ((__LASTBIT__) == SMARTCARD_LASTBIT_ENABLE))
AnnaBridge 145:64910690c574 857
AnnaBridge 145:64910690c574 858 /**
AnnaBridge 145:64910690c574 859 * @brief Ensure that SMARTCARD frame sampling is valid.
AnnaBridge 161:aa5281ff4a02 860 * @param __ONEBIT__ SMARTCARD frame sampling.
AnnaBridge 145:64910690c574 861 * @retval SET (__ONEBIT__ is valid) or RESET (__ONEBIT__ is invalid)
AnnaBridge 145:64910690c574 862 */
AnnaBridge 145:64910690c574 863 #define IS_SMARTCARD_ONE_BIT_SAMPLE(__ONEBIT__) (((__ONEBIT__) == SMARTCARD_ONE_BIT_SAMPLE_DISABLE) || \
AnnaBridge 145:64910690c574 864 ((__ONEBIT__) == SMARTCARD_ONE_BIT_SAMPLE_ENABLE))
AnnaBridge 145:64910690c574 865
AnnaBridge 145:64910690c574 866 /**
AnnaBridge 145:64910690c574 867 * @brief Ensure that SMARTCARD NACK transmission setting is valid.
AnnaBridge 161:aa5281ff4a02 868 * @param __NACK__ SMARTCARD NACK transmission setting.
AnnaBridge 145:64910690c574 869 * @retval SET (__NACK__ is valid) or RESET (__NACK__ is invalid)
AnnaBridge 145:64910690c574 870 */
AnnaBridge 145:64910690c574 871 #define IS_SMARTCARD_NACK(__NACK__) (((__NACK__) == SMARTCARD_NACK_ENABLE) || \
AnnaBridge 145:64910690c574 872 ((__NACK__) == SMARTCARD_NACK_DISABLE))
AnnaBridge 145:64910690c574 873
AnnaBridge 145:64910690c574 874 /**
AnnaBridge 145:64910690c574 875 * @brief Ensure that SMARTCARD receiver timeout setting is valid.
AnnaBridge 161:aa5281ff4a02 876 * @param __TIMEOUT__ SMARTCARD receiver timeout setting.
AnnaBridge 145:64910690c574 877 * @retval SET (__TIMEOUT__ is valid) or RESET (__TIMEOUT__ is invalid)
AnnaBridge 145:64910690c574 878 */
AnnaBridge 145:64910690c574 879 #define IS_SMARTCARD_TIMEOUT(__TIMEOUT__) (((__TIMEOUT__) == SMARTCARD_TIMEOUT_DISABLE) || \
AnnaBridge 145:64910690c574 880 ((__TIMEOUT__) == SMARTCARD_TIMEOUT_ENABLE))
AnnaBridge 145:64910690c574 881
AnnaBridge 145:64910690c574 882 /**
AnnaBridge 161:aa5281ff4a02 883 * @brief Ensure that SMARTCARD clock Prescaler is valid.
AnnaBridge 161:aa5281ff4a02 884 * @param __CLOCKPRESCALER__ SMARTCARD clock Prescaler value.
AnnaBridge 161:aa5281ff4a02 885 * @retval SET (__CLOCKPRESCALER__ is valid) or RESET (__CLOCKPRESCALER__ is invalid)
AnnaBridge 161:aa5281ff4a02 886 */
AnnaBridge 161:aa5281ff4a02 887 #define IS_SMARTCARD_CLOCKPRESCALER(__CLOCKPRESCALER__) (((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV1) || \
AnnaBridge 161:aa5281ff4a02 888 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV2) || \
AnnaBridge 161:aa5281ff4a02 889 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV4) || \
AnnaBridge 161:aa5281ff4a02 890 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV6) || \
AnnaBridge 161:aa5281ff4a02 891 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV8) || \
AnnaBridge 161:aa5281ff4a02 892 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV10) || \
AnnaBridge 161:aa5281ff4a02 893 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV12) || \
AnnaBridge 161:aa5281ff4a02 894 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV16) || \
AnnaBridge 161:aa5281ff4a02 895 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV32) || \
AnnaBridge 161:aa5281ff4a02 896 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV64) || \
AnnaBridge 161:aa5281ff4a02 897 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV128) || \
AnnaBridge 161:aa5281ff4a02 898 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV256))
AnnaBridge 161:aa5281ff4a02 899
AnnaBridge 161:aa5281ff4a02 900 /**
AnnaBridge 161:aa5281ff4a02 901 * @brief Ensure that SMARTCARD FIFO mode is valid.
AnnaBridge 161:aa5281ff4a02 902 * @param __STATE__ SMARTCARD FIFO mode.
AnnaBridge 161:aa5281ff4a02 903 * @retval SET (__STATE__ is valid) or RESET (__STATE__ is invalid)
AnnaBridge 161:aa5281ff4a02 904 */
AnnaBridge 161:aa5281ff4a02 905 #define IS_SMARTCARD_FIFOMODE_STATE(__STATE__) (((__STATE__) == SMARTCARD_FIFOMODE_DISABLE ) || \
AnnaBridge 161:aa5281ff4a02 906 ((__STATE__) == SMARTCARD_FIFOMODE_ENABLE))
AnnaBridge 161:aa5281ff4a02 907
AnnaBridge 161:aa5281ff4a02 908 /**
AnnaBridge 161:aa5281ff4a02 909 * @brief Ensure that SMARTCARD TXFIFO threshold level is valid.
AnnaBridge 161:aa5281ff4a02 910 * @param __THRESHOLD__ SMARTCARD TXFIFO threshold level.
AnnaBridge 161:aa5281ff4a02 911 * @retval SET (__THRESHOLD__ is valid) or RESET (__THRESHOLD__ is invalid)
AnnaBridge 161:aa5281ff4a02 912 */
AnnaBridge 161:aa5281ff4a02 913 #define IS_SMARTCARD_TXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_1_8) || \
AnnaBridge 161:aa5281ff4a02 914 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_1_4) || \
AnnaBridge 161:aa5281ff4a02 915 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_1_2) || \
AnnaBridge 161:aa5281ff4a02 916 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_3_4) || \
AnnaBridge 161:aa5281ff4a02 917 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_7_8) || \
AnnaBridge 161:aa5281ff4a02 918 ((__THRESHOLD__) == SMARTCARD_TXFIFO_THRESHOLD_8_8))
AnnaBridge 161:aa5281ff4a02 919
AnnaBridge 161:aa5281ff4a02 920 /**
AnnaBridge 161:aa5281ff4a02 921 * @brief Ensure that SMARTCARD RXFIFO threshold level is valid.
AnnaBridge 161:aa5281ff4a02 922 * @param __THRESHOLD__ SMARTCARD RXFIFO threshold level.
AnnaBridge 161:aa5281ff4a02 923 * @retval SET (__THRESHOLD__ is valid) or RESET (__THRESHOLD__ is invalid)
AnnaBridge 161:aa5281ff4a02 924 */
AnnaBridge 161:aa5281ff4a02 925 #define IS_SMARTCARD_RXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_1_8) || \
AnnaBridge 161:aa5281ff4a02 926 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_1_4) || \
AnnaBridge 161:aa5281ff4a02 927 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_1_2) || \
AnnaBridge 161:aa5281ff4a02 928 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_3_4) || \
AnnaBridge 161:aa5281ff4a02 929 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_7_8) || \
AnnaBridge 161:aa5281ff4a02 930 ((__THRESHOLD__) == SMARTCARD_RXFIFO_THRESHOLD_8_8))
AnnaBridge 161:aa5281ff4a02 931
AnnaBridge 161:aa5281ff4a02 932 /**
AnnaBridge 145:64910690c574 933 * @brief Ensure that SMARTCARD advanced features initialization is valid.
AnnaBridge 161:aa5281ff4a02 934 * @param __INIT__ SMARTCARD advanced features initialization.
AnnaBridge 145:64910690c574 935 * @retval SET (__INIT__ is valid) or RESET (__INIT__ is invalid)
AnnaBridge 145:64910690c574 936 */
AnnaBridge 145:64910690c574 937 #define IS_SMARTCARD_ADVFEATURE_INIT(__INIT__) ((__INIT__) <= (SMARTCARD_ADVFEATURE_NO_INIT | \
AnnaBridge 145:64910690c574 938 SMARTCARD_ADVFEATURE_TXINVERT_INIT | \
AnnaBridge 145:64910690c574 939 SMARTCARD_ADVFEATURE_RXINVERT_INIT | \
AnnaBridge 145:64910690c574 940 SMARTCARD_ADVFEATURE_DATAINVERT_INIT | \
AnnaBridge 145:64910690c574 941 SMARTCARD_ADVFEATURE_SWAP_INIT | \
AnnaBridge 145:64910690c574 942 SMARTCARD_ADVFEATURE_RXOVERRUNDISABLE_INIT | \
AnnaBridge 145:64910690c574 943 SMARTCARD_ADVFEATURE_DMADISABLEONERROR_INIT | \
AnnaBridge 145:64910690c574 944 SMARTCARD_ADVFEATURE_MSBFIRST_INIT))
AnnaBridge 145:64910690c574 945
AnnaBridge 145:64910690c574 946 /**
AnnaBridge 145:64910690c574 947 * @brief Ensure that SMARTCARD frame TX inversion setting is valid.
AnnaBridge 161:aa5281ff4a02 948 * @param __TXINV__ SMARTCARD frame TX inversion setting.
AnnaBridge 145:64910690c574 949 * @retval SET (__TXINV__ is valid) or RESET (__TXINV__ is invalid)
AnnaBridge 145:64910690c574 950 */
AnnaBridge 145:64910690c574 951 #define IS_SMARTCARD_ADVFEATURE_TXINV(__TXINV__) (((__TXINV__) == SMARTCARD_ADVFEATURE_TXINV_DISABLE) || \
AnnaBridge 145:64910690c574 952 ((__TXINV__) == SMARTCARD_ADVFEATURE_TXINV_ENABLE))
AnnaBridge 145:64910690c574 953
AnnaBridge 145:64910690c574 954 /**
AnnaBridge 145:64910690c574 955 * @brief Ensure that SMARTCARD frame RX inversion setting is valid.
AnnaBridge 161:aa5281ff4a02 956 * @param __RXINV__ SMARTCARD frame RX inversion setting.
AnnaBridge 145:64910690c574 957 * @retval SET (__RXINV__ is valid) or RESET (__RXINV__ is invalid)
AnnaBridge 145:64910690c574 958 */
AnnaBridge 145:64910690c574 959 #define IS_SMARTCARD_ADVFEATURE_RXINV(__RXINV__) (((__RXINV__) == SMARTCARD_ADVFEATURE_RXINV_DISABLE) || \
AnnaBridge 145:64910690c574 960 ((__RXINV__) == SMARTCARD_ADVFEATURE_RXINV_ENABLE))
AnnaBridge 145:64910690c574 961
AnnaBridge 145:64910690c574 962 /**
AnnaBridge 145:64910690c574 963 * @brief Ensure that SMARTCARD frame data inversion setting is valid.
AnnaBridge 161:aa5281ff4a02 964 * @param __DATAINV__ SMARTCARD frame data inversion setting.
AnnaBridge 145:64910690c574 965 * @retval SET (__DATAINV__ is valid) or RESET (__DATAINV__ is invalid)
AnnaBridge 145:64910690c574 966 */
AnnaBridge 145:64910690c574 967 #define IS_SMARTCARD_ADVFEATURE_DATAINV(__DATAINV__) (((__DATAINV__) == SMARTCARD_ADVFEATURE_DATAINV_DISABLE) || \
AnnaBridge 145:64910690c574 968 ((__DATAINV__) == SMARTCARD_ADVFEATURE_DATAINV_ENABLE))
AnnaBridge 145:64910690c574 969
AnnaBridge 145:64910690c574 970 /**
AnnaBridge 145:64910690c574 971 * @brief Ensure that SMARTCARD frame RX/TX pins swap setting is valid.
AnnaBridge 161:aa5281ff4a02 972 * @param __SWAP__ SMARTCARD frame RX/TX pins swap setting.
AnnaBridge 145:64910690c574 973 * @retval SET (__SWAP__ is valid) or RESET (__SWAP__ is invalid)
AnnaBridge 145:64910690c574 974 */
AnnaBridge 145:64910690c574 975 #define IS_SMARTCARD_ADVFEATURE_SWAP(__SWAP__) (((__SWAP__) == SMARTCARD_ADVFEATURE_SWAP_DISABLE) || \
AnnaBridge 145:64910690c574 976 ((__SWAP__) == SMARTCARD_ADVFEATURE_SWAP_ENABLE))
AnnaBridge 145:64910690c574 977
AnnaBridge 145:64910690c574 978 /**
AnnaBridge 145:64910690c574 979 * @brief Ensure that SMARTCARD frame overrun setting is valid.
AnnaBridge 161:aa5281ff4a02 980 * @param __OVERRUN__ SMARTCARD frame overrun setting.
AnnaBridge 145:64910690c574 981 * @retval SET (__OVERRUN__ is valid) or RESET (__OVERRUN__ is invalid)
AnnaBridge 145:64910690c574 982 */
AnnaBridge 145:64910690c574 983 #define IS_SMARTCARD_OVERRUN(__OVERRUN__) (((__OVERRUN__) == SMARTCARD_ADVFEATURE_OVERRUN_ENABLE) || \
AnnaBridge 145:64910690c574 984 ((__OVERRUN__) == SMARTCARD_ADVFEATURE_OVERRUN_DISABLE))
AnnaBridge 145:64910690c574 985
AnnaBridge 145:64910690c574 986 /**
AnnaBridge 145:64910690c574 987 * @brief Ensure that SMARTCARD DMA enabling or disabling on error setting is valid.
AnnaBridge 161:aa5281ff4a02 988 * @param __DMA__ SMARTCARD DMA enabling or disabling on error setting.
AnnaBridge 145:64910690c574 989 * @retval SET (__DMA__ is valid) or RESET (__DMA__ is invalid)
AnnaBridge 145:64910690c574 990 */
AnnaBridge 145:64910690c574 991 #define IS_SMARTCARD_ADVFEATURE_DMAONRXERROR(__DMA__) (((__DMA__) == SMARTCARD_ADVFEATURE_DMA_ENABLEONRXERROR) || \
AnnaBridge 145:64910690c574 992 ((__DMA__) == SMARTCARD_ADVFEATURE_DMA_DISABLEONRXERROR))
AnnaBridge 145:64910690c574 993
AnnaBridge 145:64910690c574 994 /**
AnnaBridge 145:64910690c574 995 * @brief Ensure that SMARTCARD frame MSB first setting is valid.
AnnaBridge 161:aa5281ff4a02 996 * @param __MSBFIRST__ SMARTCARD frame MSB first setting.
AnnaBridge 145:64910690c574 997 * @retval SET (__MSBFIRST__ is valid) or RESET (__MSBFIRST__ is invalid)
AnnaBridge 145:64910690c574 998 */
AnnaBridge 145:64910690c574 999 #define IS_SMARTCARD_ADVFEATURE_MSBFIRST(__MSBFIRST__) (((__MSBFIRST__) == SMARTCARD_ADVFEATURE_MSBFIRST_DISABLE) || \
AnnaBridge 145:64910690c574 1000 ((__MSBFIRST__) == SMARTCARD_ADVFEATURE_MSBFIRST_ENABLE))
AnnaBridge 145:64910690c574 1001
AnnaBridge 145:64910690c574 1002 /**
AnnaBridge 145:64910690c574 1003 * @brief Ensure that SMARTCARD request parameter is valid.
AnnaBridge 161:aa5281ff4a02 1004 * @param __PARAM__ SMARTCARD request parameter.
AnnaBridge 145:64910690c574 1005 * @retval SET (__PARAM__ is valid) or RESET (__PARAM__ is invalid)
AnnaBridge 145:64910690c574 1006 */
AnnaBridge 145:64910690c574 1007 #define IS_SMARTCARD_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == SMARTCARD_RXDATA_FLUSH_REQUEST) || \
AnnaBridge 145:64910690c574 1008 ((__PARAM__) == SMARTCARD_TXDATA_FLUSH_REQUEST))
AnnaBridge 145:64910690c574 1009
AnnaBridge 145:64910690c574 1010 /**
AnnaBridge 145:64910690c574 1011 * @}
AnnaBridge 145:64910690c574 1012 */
AnnaBridge 145:64910690c574 1013
AnnaBridge 145:64910690c574 1014 /* Include SMARTCARD HAL Extended module */
AnnaBridge 145:64910690c574 1015 #include "stm32l4xx_hal_smartcard_ex.h"
AnnaBridge 145:64910690c574 1016
AnnaBridge 145:64910690c574 1017
AnnaBridge 145:64910690c574 1018 /* Exported functions --------------------------------------------------------*/
AnnaBridge 145:64910690c574 1019 /** @addtogroup SMARTCARD_Exported_Functions
AnnaBridge 145:64910690c574 1020 * @{
AnnaBridge 145:64910690c574 1021 */
AnnaBridge 145:64910690c574 1022
AnnaBridge 145:64910690c574 1023 /* Initialization and de-initialization functions ****************************/
AnnaBridge 145:64910690c574 1024 /** @addtogroup SMARTCARD_Exported_Functions_Group1
AnnaBridge 145:64910690c574 1025 * @{
AnnaBridge 145:64910690c574 1026 */
AnnaBridge 145:64910690c574 1027
AnnaBridge 145:64910690c574 1028 HAL_StatusTypeDef HAL_SMARTCARD_Init(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1029 HAL_StatusTypeDef HAL_SMARTCARD_DeInit(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1030 void HAL_SMARTCARD_MspInit(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1031 void HAL_SMARTCARD_MspDeInit(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1032
AnnaBridge 145:64910690c574 1033 /**
AnnaBridge 145:64910690c574 1034 * @}
AnnaBridge 145:64910690c574 1035 */
AnnaBridge 145:64910690c574 1036
AnnaBridge 145:64910690c574 1037 /* IO operation functions *****************************************************/
AnnaBridge 145:64910690c574 1038 /** @addtogroup SMARTCARD_Exported_Functions_Group2
AnnaBridge 145:64910690c574 1039 * @{
AnnaBridge 145:64910690c574 1040 */
AnnaBridge 145:64910690c574 1041
AnnaBridge 145:64910690c574 1042 HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size, uint32_t Timeout);
AnnaBridge 145:64910690c574 1043 HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size, uint32_t Timeout);
AnnaBridge 145:64910690c574 1044 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
AnnaBridge 145:64910690c574 1045 HAL_StatusTypeDef HAL_SMARTCARD_Receive_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
AnnaBridge 145:64910690c574 1046 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
AnnaBridge 145:64910690c574 1047 HAL_StatusTypeDef HAL_SMARTCARD_Receive_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size);
AnnaBridge 145:64910690c574 1048 /* Transfer Abort functions */
AnnaBridge 145:64910690c574 1049 HAL_StatusTypeDef HAL_SMARTCARD_Abort(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1050 HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1051 HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1052 HAL_StatusTypeDef HAL_SMARTCARD_Abort_IT(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1053 HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit_IT(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1054 HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive_IT(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1055
AnnaBridge 145:64910690c574 1056 void HAL_SMARTCARD_IRQHandler(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1057 void HAL_SMARTCARD_TxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1058 void HAL_SMARTCARD_RxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1059 void HAL_SMARTCARD_ErrorCallback(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1060 void HAL_SMARTCARD_AbortCpltCallback (SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1061 void HAL_SMARTCARD_AbortTransmitCpltCallback (SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1062 void HAL_SMARTCARD_AbortReceiveCpltCallback (SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1063
AnnaBridge 145:64910690c574 1064 /**
AnnaBridge 145:64910690c574 1065 * @}
AnnaBridge 145:64910690c574 1066 */
AnnaBridge 145:64910690c574 1067
AnnaBridge 145:64910690c574 1068 /* Peripheral Control functions ***********************************************/
AnnaBridge 145:64910690c574 1069 /* Peripheral State and Error functions ***************************************/
AnnaBridge 145:64910690c574 1070 /** @addtogroup SMARTCARD_Exported_Functions_Group4
AnnaBridge 145:64910690c574 1071 * @{
AnnaBridge 145:64910690c574 1072 */
AnnaBridge 145:64910690c574 1073
AnnaBridge 145:64910690c574 1074 HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1075 uint32_t HAL_SMARTCARD_GetError(SMARTCARD_HandleTypeDef *hsmartcard);
AnnaBridge 145:64910690c574 1076
AnnaBridge 145:64910690c574 1077 /**
AnnaBridge 145:64910690c574 1078 * @}
AnnaBridge 145:64910690c574 1079 */
AnnaBridge 145:64910690c574 1080
AnnaBridge 145:64910690c574 1081 /**
AnnaBridge 145:64910690c574 1082 * @}
AnnaBridge 145:64910690c574 1083 */
AnnaBridge 145:64910690c574 1084
AnnaBridge 145:64910690c574 1085 /**
AnnaBridge 145:64910690c574 1086 * @}
AnnaBridge 145:64910690c574 1087 */
AnnaBridge 145:64910690c574 1088
AnnaBridge 145:64910690c574 1089 /**
AnnaBridge 145:64910690c574 1090 * @}
AnnaBridge 145:64910690c574 1091 */
AnnaBridge 145:64910690c574 1092
AnnaBridge 145:64910690c574 1093 #ifdef __cplusplus
AnnaBridge 145:64910690c574 1094 }
AnnaBridge 145:64910690c574 1095 #endif
AnnaBridge 145:64910690c574 1096
AnnaBridge 145:64910690c574 1097 #endif /* __STM32L4xx_HAL_SMARTCARD_H */
AnnaBridge 145:64910690c574 1098
AnnaBridge 145:64910690c574 1099 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/