STM32L486xx HAL User Manual
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32l4xx_hal_smartcard.h 00004 * @author MCD Application Team 00005 * @brief Header file of SMARTCARD HAL module. 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * <h2><center>© COPYRIGHT(c) 2017 STMicroelectronics</center></h2> 00010 * 00011 * Redistribution and use in source and binary forms, with or without modification, 00012 * are permitted provided that the following conditions are met: 00013 * 1. Redistributions of source code must retain the above copyright notice, 00014 * this list of conditions and the following disclaimer. 00015 * 2. Redistributions in binary form must reproduce the above copyright notice, 00016 * this list of conditions and the following disclaimer in the documentation 00017 * and/or other materials provided with the distribution. 00018 * 3. Neither the name of STMicroelectronics nor the names of its contributors 00019 * may be used to endorse or promote products derived from this software 00020 * without specific prior written permission. 00021 * 00022 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00023 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00024 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00025 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 00026 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00027 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00028 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00029 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00030 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00031 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00032 * 00033 ****************************************************************************** 00034 */ 00035 00036 /* Define to prevent recursive inclusion -------------------------------------*/ 00037 #ifndef __STM32L4xx_HAL_SMARTCARD_H 00038 #define __STM32L4xx_HAL_SMARTCARD_H 00039 00040 #ifdef __cplusplus 00041 extern "C" { 00042 #endif 00043 00044 /* Includes ------------------------------------------------------------------*/ 00045 #include "stm32l4xx_hal_def.h" 00046 00047 /** @addtogroup STM32L4xx_HAL_Driver 00048 * @{ 00049 */ 00050 00051 /** @addtogroup SMARTCARD 00052 * @{ 00053 */ 00054 00055 /* Exported types ------------------------------------------------------------*/ 00056 /** @defgroup SMARTCARD_Exported_Types SMARTCARD Exported Types 00057 * @{ 00058 */ 00059 00060 /** 00061 * @brief SMARTCARD Init Structure definition 00062 */ 00063 typedef struct 00064 { 00065 uint32_t BaudRate; /*!< Configures the SmartCard communication baud rate. 00066 The baud rate register is computed using the following formula: 00067 Baud Rate Register = ((usart_ker_ckpres) / ((hsmartcard->Init.BaudRate))) 00068 where usart_ker_ckpres is the USART input clock divided by a prescaler */ 00069 00070 uint32_t WordLength; /*!< Specifies the number of data bits transmitted or received in a frame. 00071 This parameter @ref SMARTCARD_Word_Length can only be set to 9 (8 data + 1 parity bits). */ 00072 00073 uint32_t StopBits; /*!< Specifies the number of stop bits. 00074 This parameter can be a value of @ref SMARTCARD_Stop_Bits. */ 00075 00076 uint16_t Parity; /*!< Specifies the parity mode. 00077 This parameter can be a value of @ref SMARTCARD_Parity 00078 @note The parity is enabled by default (PCE is forced to 1). 00079 Since the WordLength is forced to 8 bits + parity, M is 00080 forced to 1 and the parity bit is the 9th bit. */ 00081 00082 uint16_t Mode; /*!< Specifies whether the Receive or Transmit mode is enabled or disabled. 00083 This parameter can be a value of @ref SMARTCARD_Mode */ 00084 00085 uint16_t CLKPolarity; /*!< Specifies the steady state of the serial clock. 00086 This parameter can be a value of @ref SMARTCARD_Clock_Polarity */ 00087 00088 uint16_t CLKPhase; /*!< Specifies the clock transition on which the bit capture is made. 00089 This parameter can be a value of @ref SMARTCARD_Clock_Phase */ 00090 00091 uint16_t CLKLastBit; /*!< Specifies whether the clock pulse corresponding to the last transmitted 00092 data bit (MSB) has to be output on the SCLK pin in synchronous mode. 00093 This parameter can be a value of @ref SMARTCARD_Last_Bit */ 00094 00095 uint16_t OneBitSampling; /*!< Specifies whether a single sample or three samples' majority vote is selected. 00096 Selecting the single sample method increases the receiver tolerance to clock 00097 deviations. This parameter can be a value of @ref SMARTCARD_OneBit_Sampling. */ 00098 00099 uint8_t Prescaler; /*!< Specifies the SmartCard Prescaler. 00100 This parameter can be any value from 0x01 to 0x1F. Prescaler value is multiplied 00101 by 2 to give the division factor of the source clock frequency */ 00102 00103 uint8_t GuardTime; /*!< Specifies the SmartCard Guard Time applied after stop bits. */ 00104 00105 uint16_t NACKEnable; /*!< Specifies whether the SmartCard NACK transmission is enabled 00106 in case of parity error. 00107 This parameter can be a value of @ref SMARTCARD_NACK_Enable */ 00108 00109 uint32_t TimeOutEnable; /*!< Specifies whether the receiver timeout is enabled. 00110 This parameter can be a value of @ref SMARTCARD_Timeout_Enable*/ 00111 00112 uint32_t TimeOutValue; /*!< Specifies the receiver time out value in number of baud blocks: 00113 it is used to implement the Character Wait Time (CWT) and 00114 Block Wait Time (BWT). It is coded over 24 bits. */ 00115 00116 uint8_t BlockLength; /*!< Specifies the SmartCard Block Length in T=1 Reception mode. 00117 This parameter can be any value from 0x0 to 0xFF */ 00118 00119 uint8_t AutoRetryCount; /*!< Specifies the SmartCard auto-retry count (number of retries in 00120 receive and transmit mode). When set to 0, retransmission is 00121 disabled. Otherwise, its maximum value is 7 (before signalling 00122 an error) */ 00123 00124 #if defined(USART_PRESC_PRESCALER) 00125 uint32_t ClockPrescaler; /*!< Specifies the prescaler value used to divide the USART clock source. 00126 This parameter can be a value of @ref SMARTCARD_ClockPrescaler. */ 00127 #endif 00128 00129 } SMARTCARD_InitTypeDef; 00130 00131 /** 00132 * @brief SMARTCARD advanced features initalization structure definition 00133 */ 00134 typedef struct 00135 { 00136 uint32_t AdvFeatureInit; /*!< Specifies which advanced SMARTCARD features is initialized. Several 00137 advanced features may be initialized at the same time. This parameter 00138 can be a value of @ref SMARTCARDEx_Advanced_Features_Initialization_Type */ 00139 00140 uint32_t TxPinLevelInvert; /*!< Specifies whether the TX pin active level is inverted. 00141 This parameter can be a value of @ref SMARTCARD_Tx_Inv */ 00142 00143 uint32_t RxPinLevelInvert; /*!< Specifies whether the RX pin active level is inverted. 00144 This parameter can be a value of @ref SMARTCARD_Rx_Inv */ 00145 00146 uint32_t DataInvert; /*!< Specifies whether data are inverted (positive/direct logic 00147 vs negative/inverted logic). 00148 This parameter can be a value of @ref SMARTCARD_Data_Inv */ 00149 00150 uint32_t Swap; /*!< Specifies whether TX and RX pins are swapped. 00151 This parameter can be a value of @ref SMARTCARD_Rx_Tx_Swap */ 00152 00153 uint32_t OverrunDisable; /*!< Specifies whether the reception overrun detection is disabled. 00154 This parameter can be a value of @ref SMARTCARD_Overrun_Disable */ 00155 00156 uint32_t DMADisableonRxError; /*!< Specifies whether the DMA is disabled in case of reception error. 00157 This parameter can be a value of @ref SMARTCARD_DMA_Disable_on_Rx_Error */ 00158 00159 uint32_t MSBFirst; /*!< Specifies whether MSB is sent first on UART line. 00160 This parameter can be a value of @ref SMARTCARD_MSB_First */ 00161 00162 uint16_t TxCompletionIndication; /*!< Specifies which transmission completion indication is used: before (when 00163 relevant flag is available) or once guard time period has elapsed. 00164 This parameter can be a value of @ref SMARTCARDEx_Transmission_Completion_Indication. */ 00165 } SMARTCARD_AdvFeatureInitTypeDef; 00166 00167 /** 00168 * @brief HAL SMARTCARD State structures definition 00169 * @note HAL SMARTCARD State value is a combination of 2 different substates: gState and RxState. 00170 * - gState contains SMARTCARD state information related to global Handle management 00171 * and also information related to Tx operations. 00172 * gState value coding follow below described bitmap : 00173 * b7-b6 Error information 00174 * 00 : No Error 00175 * 01 : (Not Used) 00176 * 10 : Timeout 00177 * 11 : Error 00178 * b5 IP initilisation status 00179 * 0 : Reset (IP not initialized) 00180 * 1 : Init done (IP not initialized. HAL SMARTCARD Init function already called) 00181 * b4-b3 (not used) 00182 * xx : Should be set to 00 00183 * b2 Intrinsic process state 00184 * 0 : Ready 00185 * 1 : Busy (IP busy with some configuration or internal operations) 00186 * b1 (not used) 00187 * x : Should be set to 0 00188 * b0 Tx state 00189 * 0 : Ready (no Tx operation ongoing) 00190 * 1 : Busy (Tx operation ongoing) 00191 * - RxState contains information related to Rx operations. 00192 * RxState value coding follow below described bitmap : 00193 * b7-b6 (not used) 00194 * xx : Should be set to 00 00195 * b5 IP initilisation status 00196 * 0 : Reset (IP not initialized) 00197 * 1 : Init done (IP not initialized) 00198 * b4-b2 (not used) 00199 * xxx : Should be set to 000 00200 * b1 Rx state 00201 * 0 : Ready (no Rx operation ongoing) 00202 * 1 : Busy (Rx operation ongoing) 00203 * b0 (not used) 00204 * x : Should be set to 0. 00205 */ 00206 typedef enum 00207 { 00208 HAL_SMARTCARD_STATE_RESET = 0x00U, /*!< Peripheral is not initialized 00209 Value is allowed for gState and RxState */ 00210 HAL_SMARTCARD_STATE_READY = 0x20U, /*!< Peripheral Initialized and ready for use 00211 Value is allowed for gState and RxState */ 00212 HAL_SMARTCARD_STATE_BUSY = 0x24U, /*!< an internal process is ongoing 00213 Value is allowed for gState only */ 00214 HAL_SMARTCARD_STATE_BUSY_TX = 0x21U, /*!< Data Transmission process is ongoing 00215 Value is allowed for gState only */ 00216 HAL_SMARTCARD_STATE_BUSY_RX = 0x22U, /*!< Data Reception process is ongoing 00217 Value is allowed for RxState only */ 00218 HAL_SMARTCARD_STATE_BUSY_TX_RX = 0x23U, /*!< Data Transmission and Reception process is ongoing 00219 Not to be used for neither gState nor RxState. 00220 Value is result of combination (Or) between gState and RxState values */ 00221 HAL_SMARTCARD_STATE_TIMEOUT = 0xA0U, /*!< Timeout state 00222 Value is allowed for gState only */ 00223 HAL_SMARTCARD_STATE_ERROR = 0xE0U /*!< Error 00224 Value is allowed for gState only */ 00225 } HAL_SMARTCARD_StateTypeDef; 00226 00227 /** 00228 * @brief SMARTCARD handle Structure definition 00229 */ 00230 typedef struct __SMARTCARD_HandleTypeDef 00231 { 00232 USART_TypeDef *Instance; /*!< USART registers base address */ 00233 00234 SMARTCARD_InitTypeDef Init; /*!< SmartCard communication parameters */ 00235 00236 SMARTCARD_AdvFeatureInitTypeDef AdvancedInit; /*!< SmartCard advanced features initialization parameters */ 00237 00238 uint8_t *pTxBuffPtr; /*!< Pointer to SmartCard Tx transfer Buffer */ 00239 00240 uint16_t TxXferSize; /*!< SmartCard Tx Transfer size */ 00241 00242 __IO uint16_t TxXferCount; /*!< SmartCard Tx Transfer Counter */ 00243 00244 uint8_t *pRxBuffPtr; /*!< Pointer to SmartCard Rx transfer Buffer */ 00245 00246 uint16_t RxXferSize; /*!< SmartCard Rx Transfer size */ 00247 00248 __IO uint16_t RxXferCount; /*!< SmartCard Rx Transfer Counter */ 00249 00250 #if defined(USART_CR1_FIFOEN) 00251 uint16_t NbRxDataToProcess; /*!< Number of data to process during RX ISR execution */ 00252 00253 uint16_t NbTxDataToProcess; /*!< Number of data to process during TX ISR execution */ 00254 00255 uint32_t FifoMode; /*!< Specifies if the FIFO mode will be used. 00256 This parameter can be a value of @ref SMARTCARDEx_FIFO_mode. */ 00257 #endif 00258 00259 void (*RxISR)(struct __SMARTCARD_HandleTypeDef *huart); /*!< Function pointer on Rx IRQ handler */ 00260 00261 void (*TxISR)(struct __SMARTCARD_HandleTypeDef *huart); /*!< Function pointer on Tx IRQ handler */ 00262 00263 DMA_HandleTypeDef *hdmatx; /*!< SmartCard Tx DMA Handle parameters */ 00264 00265 DMA_HandleTypeDef *hdmarx; /*!< SmartCard Rx DMA Handle parameters */ 00266 00267 HAL_LockTypeDef Lock; /*!< Locking object */ 00268 00269 __IO HAL_SMARTCARD_StateTypeDef gState; /*!< SmartCard state information related to global Handle management 00270 and also related to Tx operations. 00271 This parameter can be a value of @ref HAL_SMARTCARD_StateTypeDef */ 00272 00273 __IO HAL_SMARTCARD_StateTypeDef RxState; /*!< SmartCard state information related to Rx operations. 00274 This parameter can be a value of @ref HAL_SMARTCARD_StateTypeDef */ 00275 00276 uint32_t ErrorCode; /*!< SmartCard Error code */ 00277 00278 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 00279 void (* TxCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Tx Complete Callback */ 00280 00281 void (* RxCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Rx Complete Callback */ 00282 00283 void (* ErrorCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Error Callback */ 00284 00285 void (* AbortCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Abort Complete Callback */ 00286 00287 void (* AbortTransmitCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Abort Transmit Complete Callback */ 00288 00289 void (* AbortReceiveCpltCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Abort Receive Complete Callback */ 00290 00291 void (* RxFifoFullCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Rx Fifo Full Callback */ 00292 00293 void (* TxFifoEmptyCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Tx Fifo Empty Callback */ 00294 00295 00296 void (* MspInitCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Msp Init callback */ 00297 00298 void (* MspDeInitCallback)(struct __SMARTCARD_HandleTypeDef *hsmartcard); /*!< SMARTCARD Msp DeInit callback */ 00299 #endif /* USE_HAL_SMARTCARD_REGISTER_CALLBACKS */ 00300 00301 } SMARTCARD_HandleTypeDef; 00302 00303 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 00304 /** 00305 * @brief HAL SMARTCARD Callback ID enumeration definition 00306 */ 00307 typedef enum 00308 { 00309 HAL_SMARTCARD_TX_COMPLETE_CB_ID = 0x00U, /*!< SMARTCARD Tx Complete Callback ID */ 00310 HAL_SMARTCARD_RX_COMPLETE_CB_ID = 0x01U, /*!< SMARTCARD Rx Complete Callback ID */ 00311 HAL_SMARTCARD_ERROR_CB_ID = 0x02U, /*!< SMARTCARD Error Callback ID */ 00312 HAL_SMARTCARD_ABORT_COMPLETE_CB_ID = 0x03U, /*!< SMARTCARD Abort Complete Callback ID */ 00313 HAL_SMARTCARD_ABORT_TRANSMIT_COMPLETE_CB_ID = 0x04U, /*!< SMARTCARD Abort Transmit Complete Callback ID */ 00314 HAL_SMARTCARD_ABORT_RECEIVE_COMPLETE_CB_ID = 0x05U, /*!< SMARTCARD Abort Receive Complete Callback ID */ 00315 HAL_SMARTCARD_RX_FIFO_FULL_CB_ID = 0x06U, /*!< SMARTCARD Rx Fifo Full Callback ID */ 00316 HAL_SMARTCARD_TX_FIFO_EMPTY_CB_ID = 0x07U, /*!< SMARTCARD Tx Fifo Empty Callback ID */ 00317 00318 HAL_SMARTCARD_MSPINIT_CB_ID = 0x08U, /*!< SMARTCARD MspInit callback ID */ 00319 HAL_SMARTCARD_MSPDEINIT_CB_ID = 0x09U /*!< SMARTCARD MspDeInit callback ID */ 00320 00321 } HAL_SMARTCARD_CallbackIDTypeDef; 00322 00323 /** 00324 * @brief HAL SMARTCARD Callback pointer definition 00325 */ 00326 typedef void (*pSMARTCARD_CallbackTypeDef)(SMARTCARD_HandleTypeDef *hsmartcard); /*!< pointer to an SMARTCARD callback function */ 00327 00328 #endif /* USE_HAL_SMARTCARD_REGISTER_CALLBACKS */ 00329 00330 /** 00331 * @brief SMARTCARD clock sources 00332 */ 00333 typedef enum 00334 { 00335 SMARTCARD_CLOCKSOURCE_PCLK1 = 0x00, /*!< PCLK1 clock source */ 00336 SMARTCARD_CLOCKSOURCE_PCLK2 = 0x01, /*!< PCLK2 clock source */ 00337 SMARTCARD_CLOCKSOURCE_HSI = 0x02, /*!< HSI clock source */ 00338 SMARTCARD_CLOCKSOURCE_SYSCLK = 0x04, /*!< SYSCLK clock source */ 00339 SMARTCARD_CLOCKSOURCE_LSE = 0x08, /*!< LSE clock source */ 00340 SMARTCARD_CLOCKSOURCE_UNDEFINED = 0x10 /*!< undefined clock source */ 00341 } SMARTCARD_ClockSourceTypeDef; 00342 00343 /** 00344 * @} 00345 */ 00346 00347 /* Exported constants --------------------------------------------------------*/ 00348 /** @defgroup SMARTCARD_Exported_Constants SMARTCARD Exported Constants 00349 * @{ 00350 */ 00351 00352 /** @defgroup SMARTCARD_Error_Definition SMARTCARD Error Code Definition 00353 * @{ 00354 */ 00355 #define HAL_SMARTCARD_ERROR_NONE ((uint32_t)0x00000000U) /*!< No error */ 00356 #define HAL_SMARTCARD_ERROR_PE ((uint32_t)0x00000001U) /*!< Parity error */ 00357 #define HAL_SMARTCARD_ERROR_NE ((uint32_t)0x00000002U) /*!< Noise error */ 00358 #define HAL_SMARTCARD_ERROR_FE ((uint32_t)0x00000004U) /*!< frame error */ 00359 #define HAL_SMARTCARD_ERROR_ORE ((uint32_t)0x00000008U) /*!< Overrun error */ 00360 #define HAL_SMARTCARD_ERROR_DMA ((uint32_t)0x00000010U) /*!< DMA transfer error */ 00361 #define HAL_SMARTCARD_ERROR_RTO ((uint32_t)0x00000020U) /*!< Receiver TimeOut error */ 00362 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 00363 #define HAL_SMARTCARD_ERROR_INVALID_CALLBACK ((uint32_t)0x00000040U) /*!< Invalid Callback error */ 00364 #endif /* USE_HAL_SMARTCARD_REGISTER_CALLBACKS */ 00365 /** 00366 * @} 00367 */ 00368 00369 /** @defgroup SMARTCARD_Word_Length SMARTCARD Word Length 00370 * @{ 00371 */ 00372 #define SMARTCARD_WORDLENGTH_9B USART_CR1_M0 /*!< SMARTCARD frame length */ 00373 /** 00374 * @} 00375 */ 00376 00377 /** @defgroup SMARTCARD_Stop_Bits SMARTCARD Number of Stop Bits 00378 * @{ 00379 */ 00380 #define SMARTCARD_STOPBITS_0_5 USART_CR2_STOP_0 /*!< SMARTCARD frame with 0.5 stop bit */ 00381 #define SMARTCARD_STOPBITS_1_5 USART_CR2_STOP /*!< SMARTCARD frame with 1.5 stop bits */ 00382 /** 00383 * @} 00384 */ 00385 00386 /** @defgroup SMARTCARD_Parity SMARTCARD Parity 00387 * @{ 00388 */ 00389 #define SMARTCARD_PARITY_EVEN USART_CR1_PCE /*!< SMARTCARD frame even parity */ 00390 #define SMARTCARD_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS) /*!< SMARTCARD frame odd parity */ 00391 /** 00392 * @} 00393 */ 00394 00395 /** @defgroup SMARTCARD_Mode SMARTCARD Transfer Mode 00396 * @{ 00397 */ 00398 #define SMARTCARD_MODE_RX USART_CR1_RE /*!< SMARTCARD RX mode */ 00399 #define SMARTCARD_MODE_TX USART_CR1_TE /*!< SMARTCARD TX mode */ 00400 #define SMARTCARD_MODE_TX_RX (USART_CR1_TE |USART_CR1_RE) /*!< SMARTCARD RX and TX mode */ 00401 /** 00402 * @} 00403 */ 00404 00405 /** @defgroup SMARTCARD_Clock_Polarity SMARTCARD Clock Polarity 00406 * @{ 00407 */ 00408 #define SMARTCARD_POLARITY_LOW 0x00000000U /*!< SMARTCARD frame low polarity */ 00409 #define SMARTCARD_POLARITY_HIGH USART_CR2_CPOL /*!< SMARTCARD frame high polarity */ 00410 /** 00411 * @} 00412 */ 00413 00414 /** @defgroup SMARTCARD_Clock_Phase SMARTCARD Clock Phase 00415 * @{ 00416 */ 00417 #define SMARTCARD_PHASE_1EDGE 0x00000000U /*!< SMARTCARD frame phase on first clock transition */ 00418 #define SMARTCARD_PHASE_2EDGE USART_CR2_CPHA /*!< SMARTCARD frame phase on second clock transition */ 00419 /** 00420 * @} 00421 */ 00422 00423 /** @defgroup SMARTCARD_Last_Bit SMARTCARD Last Bit 00424 * @{ 00425 */ 00426 #define SMARTCARD_LASTBIT_DISABLE 0x00000000U /*!< SMARTCARD frame last data bit clock pulse not output to SCLK pin */ 00427 #define SMARTCARD_LASTBIT_ENABLE USART_CR2_LBCL /*!< SMARTCARD frame last data bit clock pulse output to SCLK pin */ 00428 /** 00429 * @} 00430 */ 00431 00432 /** @defgroup SMARTCARD_OneBit_Sampling SMARTCARD One Bit Sampling Method 00433 * @{ 00434 */ 00435 #define SMARTCARD_ONE_BIT_SAMPLE_DISABLE 0x00000000U /*!< SMARTCARD frame one-bit sample disabled */ 00436 #define SMARTCARD_ONE_BIT_SAMPLE_ENABLE USART_CR3_ONEBIT /*!< SMARTCARD frame one-bit sample enabled */ 00437 /** 00438 * @} 00439 */ 00440 00441 00442 /** @defgroup SMARTCARD_NACK_Enable SMARTCARD NACK Enable 00443 * @{ 00444 */ 00445 #define SMARTCARD_NACK_DISABLE 0x00000000U /*!< SMARTCARD NACK transmission disabled */ 00446 #define SMARTCARD_NACK_ENABLE USART_CR3_NACK /*!< SMARTCARD NACK transmission enabled */ 00447 /** 00448 * @} 00449 */ 00450 00451 /** @defgroup SMARTCARD_Timeout_Enable SMARTCARD Timeout Enable 00452 * @{ 00453 */ 00454 #define SMARTCARD_TIMEOUT_DISABLE 0x00000000U /*!< SMARTCARD receiver timeout disabled */ 00455 #define SMARTCARD_TIMEOUT_ENABLE USART_CR2_RTOEN /*!< SMARTCARD receiver timeout enabled */ 00456 /** 00457 * @} 00458 */ 00459 00460 #if defined(USART_PRESC_PRESCALER) 00461 /** @defgroup SMARTCARD_ClockPrescaler Clock Prescaler 00462 * @{ 00463 */ 00464 #define SMARTCARD_PRESCALER_DIV1 0x00000000U /*!< fclk_pres = fclk */ 00465 #define SMARTCARD_PRESCALER_DIV2 0x00000001U /*!< fclk_pres = fclk/2 */ 00466 #define SMARTCARD_PRESCALER_DIV4 0x00000002U /*!< fclk_pres = fclk/4 */ 00467 #define SMARTCARD_PRESCALER_DIV6 0x00000003U /*!< fclk_pres = fclk/6 */ 00468 #define SMARTCARD_PRESCALER_DIV8 0x00000004U /*!< fclk_pres = fclk/8 */ 00469 #define SMARTCARD_PRESCALER_DIV10 0x00000005U /*!< fclk_pres = fclk/10 */ 00470 #define SMARTCARD_PRESCALER_DIV12 0x00000006U /*!< fclk_pres = fclk/12 */ 00471 #define SMARTCARD_PRESCALER_DIV16 0x00000007U /*!< fclk_pres = fclk/16 */ 00472 #define SMARTCARD_PRESCALER_DIV32 0x00000008U /*!< fclk_pres = fclk/32 */ 00473 #define SMARTCARD_PRESCALER_DIV64 0x00000009U /*!< fclk_pres = fclk/64 */ 00474 #define SMARTCARD_PRESCALER_DIV128 0x0000000AU /*!< fclk_pres = fclk/128 */ 00475 #define SMARTCARD_PRESCALER_DIV256 0x0000000BU /*!< fclk_pres = fclk/256 */ 00476 00477 /** 00478 * @} 00479 */ 00480 #endif 00481 00482 /** @defgroup SMARTCARD_Tx_Inv SMARTCARD advanced feature TX pin active level inversion 00483 * @{ 00484 */ 00485 #define SMARTCARD_ADVFEATURE_TXINV_DISABLE 0x00000000U /*!< TX pin active level inversion disable */ 00486 #define SMARTCARD_ADVFEATURE_TXINV_ENABLE USART_CR2_TXINV /*!< TX pin active level inversion enable */ 00487 /** 00488 * @} 00489 */ 00490 00491 /** @defgroup SMARTCARD_Rx_Inv SMARTCARD advanced feature RX pin active level inversion 00492 * @{ 00493 */ 00494 #define SMARTCARD_ADVFEATURE_RXINV_DISABLE 0x00000000U /*!< RX pin active level inversion disable */ 00495 #define SMARTCARD_ADVFEATURE_RXINV_ENABLE USART_CR2_RXINV /*!< RX pin active level inversion enable */ 00496 /** 00497 * @} 00498 */ 00499 00500 /** @defgroup SMARTCARD_Data_Inv SMARTCARD advanced feature Binary Data inversion 00501 * @{ 00502 */ 00503 #define SMARTCARD_ADVFEATURE_DATAINV_DISABLE 0x00000000U /*!< Binary data inversion disable */ 00504 #define SMARTCARD_ADVFEATURE_DATAINV_ENABLE USART_CR2_DATAINV /*!< Binary data inversion enable */ 00505 /** 00506 * @} 00507 */ 00508 00509 /** @defgroup SMARTCARD_Rx_Tx_Swap SMARTCARD advanced feature RX TX pins swap 00510 * @{ 00511 */ 00512 #define SMARTCARD_ADVFEATURE_SWAP_DISABLE 0x00000000U /*!< TX/RX pins swap disable */ 00513 #define SMARTCARD_ADVFEATURE_SWAP_ENABLE USART_CR2_SWAP /*!< TX/RX pins swap enable */ 00514 /** 00515 * @} 00516 */ 00517 00518 /** @defgroup SMARTCARD_Overrun_Disable SMARTCARD advanced feature Overrun Disable 00519 * @{ 00520 */ 00521 #define SMARTCARD_ADVFEATURE_OVERRUN_ENABLE 0x00000000U /*!< RX overrun enable */ 00522 #define SMARTCARD_ADVFEATURE_OVERRUN_DISABLE USART_CR3_OVRDIS /*!< RX overrun disable */ 00523 /** 00524 * @} 00525 */ 00526 00527 /** @defgroup SMARTCARD_DMA_Disable_on_Rx_Error SMARTCARD advanced feature DMA Disable on Rx Error 00528 * @{ 00529 */ 00530 #define SMARTCARD_ADVFEATURE_DMA_ENABLEONRXERROR 0x00000000U /*!< DMA enable on Reception Error */ 00531 #define SMARTCARD_ADVFEATURE_DMA_DISABLEONRXERROR USART_CR3_DDRE /*!< DMA disable on Reception Error */ 00532 /** 00533 * @} 00534 */ 00535 00536 /** @defgroup SMARTCARD_MSB_First SMARTCARD advanced feature MSB first 00537 * @{ 00538 */ 00539 #define SMARTCARD_ADVFEATURE_MSBFIRST_DISABLE 0x00000000U /*!< Most significant bit sent/received first disable */ 00540 #define SMARTCARD_ADVFEATURE_MSBFIRST_ENABLE USART_CR2_MSBFIRST /*!< Most significant bit sent/received first enable */ 00541 /** 00542 * @} 00543 */ 00544 00545 /** @defgroup SMARTCARD_Request_Parameters SMARTCARD Request Parameters 00546 * @{ 00547 */ 00548 #define SMARTCARD_RXDATA_FLUSH_REQUEST USART_RQR_RXFRQ /*!< Receive data flush request */ 00549 #define SMARTCARD_TXDATA_FLUSH_REQUEST USART_RQR_TXFRQ /*!< Transmit data flush request */ 00550 /** 00551 * @} 00552 */ 00553 00554 /** @defgroup SMARTCARD_Interruption_Mask SMARTCARD interruptions flags mask 00555 * @{ 00556 */ 00557 #define SMARTCARD_IT_MASK 0x001FU /*!< SMARTCARD interruptions flags mask */ 00558 /** 00559 * @} 00560 */ 00561 00562 /** 00563 * @} 00564 */ 00565 00566 /* Exported macros -----------------------------------------------------------*/ 00567 /** @defgroup SMARTCARD_Exported_Macros SMARTCARD Exported Macros 00568 * @{ 00569 */ 00570 00571 /** @brief Reset SMARTCARD handle states. 00572 * @param __HANDLE__ SMARTCARD handle. 00573 * @retval None 00574 */ 00575 #if USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1 00576 #define __HAL_SMARTCARD_RESET_HANDLE_STATE(__HANDLE__) do{ \ 00577 (__HANDLE__)->gState = HAL_SMARTCARD_STATE_RESET; \ 00578 (__HANDLE__)->RxState = HAL_SMARTCARD_STATE_RESET; \ 00579 (__HANDLE__)->MspInitCallback = NULL; \ 00580 (__HANDLE__)->MspDeInitCallback = NULL; \ 00581 } while(0U) 00582 #else 00583 #define __HAL_SMARTCARD_RESET_HANDLE_STATE(__HANDLE__) do{ \ 00584 (__HANDLE__)->gState = HAL_SMARTCARD_STATE_RESET; \ 00585 (__HANDLE__)->RxState = HAL_SMARTCARD_STATE_RESET; \ 00586 } while(0U) 00587 #endif /*USE_HAL_SMARTCARD_REGISTER_CALLBACKS */ 00588 00589 /** @brief Flush the Smartcard Data registers. 00590 * @param __HANDLE__ specifies the SMARTCARD Handle. 00591 * @retval None 00592 */ 00593 #define __HAL_SMARTCARD_FLUSH_DRREGISTER(__HANDLE__) \ 00594 do{ \ 00595 SET_BIT((__HANDLE__)->Instance->RQR, SMARTCARD_RXDATA_FLUSH_REQUEST); \ 00596 SET_BIT((__HANDLE__)->Instance->RQR, SMARTCARD_TXDATA_FLUSH_REQUEST); \ 00597 } while(0U) 00598 00599 /** @brief Clear the specified SMARTCARD pending flag. 00600 * @param __HANDLE__ specifies the SMARTCARD Handle. 00601 * @param __FLAG__ specifies the flag to check. 00602 * This parameter can be any combination of the following values: 00603 * @arg @ref SMARTCARD_CLEAR_PEF Parity error clear flag 00604 * @arg @ref SMARTCARD_CLEAR_FEF Framing error clear flag 00605 * @arg @ref SMARTCARD_CLEAR_NEF Noise detected clear flag 00606 * @arg @ref SMARTCARD_CLEAR_OREF OverRun error clear flag 00607 * @arg @ref SMARTCARD_CLEAR_IDLEF Idle line detected clear flag 00608 * @arg @ref SMARTCARD_CLEAR_TCF Transmission complete clear flag 00609 * @arg @ref SMARTCARD_CLEAR_TCBGTF Transmission complete before guard time clear flag 00610 * @arg @ref SMARTCARD_CLEAR_RTOF Receiver timeout clear flag 00611 * @arg @ref SMARTCARD_CLEAR_EOBF End of block clear flag 00612 * @arg @ref SMARTCARD_CLEAR_TXFECF TXFIFO empty Clear flag 00613 * @retval None 00614 */ 00615 #define __HAL_SMARTCARD_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__)) 00616 00617 /** @brief Clear the SMARTCARD PE pending flag. 00618 * @param __HANDLE__ specifies the SMARTCARD Handle. 00619 * @retval None 00620 */ 00621 #define __HAL_SMARTCARD_CLEAR_PEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_PEF) 00622 00623 00624 /** @brief Clear the SMARTCARD FE pending flag. 00625 * @param __HANDLE__ specifies the SMARTCARD Handle. 00626 * @retval None 00627 */ 00628 #define __HAL_SMARTCARD_CLEAR_FEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_FEF) 00629 00630 /** @brief Clear the SMARTCARD NE pending flag. 00631 * @param __HANDLE__ specifies the SMARTCARD Handle. 00632 * @retval None 00633 */ 00634 #define __HAL_SMARTCARD_CLEAR_NEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_NEF) 00635 00636 /** @brief Clear the SMARTCARD ORE pending flag. 00637 * @param __HANDLE__ specifies the SMARTCARD Handle. 00638 * @retval None 00639 */ 00640 #define __HAL_SMARTCARD_CLEAR_OREFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_OREF) 00641 00642 /** @brief Clear the SMARTCARD IDLE pending flag. 00643 * @param __HANDLE__ specifies the SMARTCARD Handle. 00644 * @retval None 00645 */ 00646 #define __HAL_SMARTCARD_CLEAR_IDLEFLAG(__HANDLE__) __HAL_SMARTCARD_CLEAR_FLAG((__HANDLE__), SMARTCARD_CLEAR_IDLEF) 00647 00648 /** @brief Check whether the specified Smartcard flag is set or not. 00649 * @param __HANDLE__ specifies the SMARTCARD Handle. 00650 * @param __FLAG__ specifies the flag to check. 00651 * This parameter can be one of the following values: 00652 * @arg @ref SMARTCARD_FLAG_TCBGT Transmission complete before guard time flag (when flag available) 00653 * @arg @ref SMARTCARD_FLAG_REACK Receive enable acknowledge flag 00654 * @arg @ref SMARTCARD_FLAG_TEACK Transmit enable acknowledge flag 00655 * @arg @ref SMARTCARD_FLAG_BUSY Busy flag 00656 * @arg @ref SMARTCARD_FLAG_EOBF End of block flag 00657 * @arg @ref SMARTCARD_FLAG_RTOF Receiver timeout flag 00658 * @arg @ref SMARTCARD_FLAG_TXE Transmit data register empty flag 00659 * @arg @ref SMARTCARD_FLAG_TXFNF TXFIFO not full flag 00660 * @arg @ref SMARTCARD_FLAG_TC Transmission complete flag 00661 * @arg @ref SMARTCARD_FLAG_RXNE Receive data register not empty flag 00662 * @arg @ref SMARTCARD_FLAG_RXFNE RXFIFO not empty flag 00663 * @arg @ref SMARTCARD_FLAG_IDLE Idle line detection flag 00664 * @arg @ref SMARTCARD_FLAG_ORE Overrun error flag 00665 * @arg @ref SMARTCARD_FLAG_NE Noise error flag 00666 * @arg @ref SMARTCARD_FLAG_FE Framing error flag 00667 * @arg @ref SMARTCARD_FLAG_PE Parity error flag 00668 * @arg @ref SMARTCARD_FLAG_TXFE TXFIFO Empty flag 00669 * @arg @ref SMARTCARD_FLAG_RXFF RXFIFO Full flag 00670 * @arg @ref SMARTCARD_FLAG_RXFT SMARTCARD RXFIFO threshold flag 00671 * @arg @ref SMARTCARD_FLAG_TXFT SMARTCARD TXFIFO threshold flag 00672 * @retval The new state of __FLAG__ (TRUE or FALSE). 00673 */ 00674 #define __HAL_SMARTCARD_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__)) 00675 00676 /** @brief Enable the specified SmartCard interrupt. 00677 * @param __HANDLE__ specifies the SMARTCARD Handle. 00678 * @param __INTERRUPT__ specifies the SMARTCARD interrupt to enable. 00679 * This parameter can be one of the following values: 00680 * @arg @ref SMARTCARD_IT_EOB End of block interrupt 00681 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt 00682 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt 00683 * @arg @ref SMARTCARD_IT_TXFNF TX FIFO not full interruption 00684 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt 00685 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time interrupt (when interruption available) 00686 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt 00687 * @arg @ref SMARTCARD_IT_RXFNE RXFIFO not empty interruption 00688 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt 00689 * @arg @ref SMARTCARD_IT_PE Parity error interrupt 00690 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error) 00691 * @arg @ref SMARTCARD_IT_RXFF RXFIFO full interruption 00692 * @arg @ref SMARTCARD_IT_TXFE TXFIFO empty interruption 00693 * @arg @ref SMARTCARD_IT_RXFT RXFIFO threshold reached interruption 00694 * @arg @ref SMARTCARD_IT_TXFT TXFIFO threshold reached interruption 00695 * @retval None 00696 */ 00697 #define __HAL_SMARTCARD_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1)? ((__HANDLE__)->Instance->CR1 |= (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \ 00698 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2)? ((__HANDLE__)->Instance->CR2 |= (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \ 00699 ((__HANDLE__)->Instance->CR3 |= (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK)))) 00700 00701 /** @brief Disable the specified SmartCard interrupt. 00702 * @param __HANDLE__ specifies the SMARTCARD Handle. 00703 * @param __INTERRUPT__ specifies the SMARTCARD interrupt to disable. 00704 * This parameter can be one of the following values: 00705 * @arg @ref SMARTCARD_IT_EOB End of block interrupt 00706 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt 00707 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt 00708 * @arg @ref SMARTCARD_IT_TXFNF TX FIFO not full interruption 00709 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt 00710 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time interrupt (when interruption available) 00711 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt 00712 * @arg @ref SMARTCARD_IT_RXFNE RXFIFO not empty interruption 00713 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt 00714 * @arg @ref SMARTCARD_IT_PE Parity error interrupt 00715 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error) 00716 * @arg @ref SMARTCARD_IT_RXFF RXFIFO full interruption 00717 * @arg @ref SMARTCARD_IT_TXFE TXFIFO empty interruption 00718 * @arg @ref SMARTCARD_IT_RXFT RXFIFO threshold reached interruption 00719 * @arg @ref SMARTCARD_IT_TXFT TXFIFO threshold reached interruption 00720 * @retval None 00721 */ 00722 #define __HAL_SMARTCARD_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1)? ((__HANDLE__)->Instance->CR1 &= ~ (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \ 00723 ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2)? ((__HANDLE__)->Instance->CR2 &= ~ (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK))): \ 00724 ((__HANDLE__)->Instance->CR3 &= ~ (1U << ((__INTERRUPT__) & SMARTCARD_IT_MASK)))) 00725 00726 00727 /** @brief Check whether the specified SmartCard interrupt has occurred or not. 00728 * @param __HANDLE__ specifies the SMARTCARD Handle. 00729 * @param __INTERRUPT__ specifies the SMARTCARD interrupt to check. 00730 * This parameter can be one of the following values: 00731 * @arg @ref SMARTCARD_IT_EOB End of block interrupt 00732 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt 00733 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt 00734 * @arg @ref SMARTCARD_IT_TXFNF TX FIFO not full interruption 00735 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt 00736 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time interrupt (when interruption available) 00737 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt 00738 * @arg @ref SMARTCARD_IT_RXFNE RXFIFO not empty interruption 00739 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt 00740 * @arg @ref SMARTCARD_IT_PE Parity error interrupt 00741 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error) 00742 * @arg @ref SMARTCARD_IT_RXFF RXFIFO full interruption 00743 * @arg @ref SMARTCARD_IT_TXFE TXFIFO empty interruption 00744 * @arg @ref SMARTCARD_IT_RXFT RXFIFO threshold reached interruption 00745 * @arg @ref SMARTCARD_IT_TXFT TXFIFO threshold reached interruption 00746 * @retval The new state of __INTERRUPT__ (SET or RESET). 00747 */ 00748 #define __HAL_SMARTCARD_GET_IT(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISR & (0x01U << ((__INTERRUPT__)>> 0x08U))) != RESET) ? SET : RESET) 00749 00750 /** @brief Check whether the specified SmartCard interrupt source is enabled or not. 00751 * @param __HANDLE__ specifies the SMARTCARD Handle. 00752 * @param __INTERRUPT__ specifies the SMARTCARD interrupt source to check. 00753 * This parameter can be one of the following values: 00754 * @arg @ref SMARTCARD_IT_EOB End of block interrupt 00755 * @arg @ref SMARTCARD_IT_RTO Receive timeout interrupt 00756 * @arg @ref SMARTCARD_IT_TXE Transmit data register empty interrupt 00757 * @arg @ref SMARTCARD_IT_TXFNF TX FIFO not full interruption 00758 * @arg @ref SMARTCARD_IT_TC Transmission complete interrupt 00759 * @arg @ref SMARTCARD_IT_TCBGT Transmission complete before guard time interrupt (when interruption available) 00760 * @arg @ref SMARTCARD_IT_RXNE Receive data register not empty interrupt 00761 * @arg @ref SMARTCARD_IT_RXFNE RXFIFO not empty interruption 00762 * @arg @ref SMARTCARD_IT_IDLE Idle line detection interrupt 00763 * @arg @ref SMARTCARD_IT_PE Parity error interrupt 00764 * @arg @ref SMARTCARD_IT_ERR Error interrupt(frame error, noise error, overrun error) 00765 * @arg @ref SMARTCARD_IT_RXFF RXFIFO full interruption 00766 * @arg @ref SMARTCARD_IT_TXFE TXFIFO empty interruption 00767 * @arg @ref SMARTCARD_IT_RXFT RXFIFO threshold reached interruption 00768 * @arg @ref SMARTCARD_IT_TXFT TXFIFO threshold reached interruption 00769 * @retval The new state of __INTERRUPT__ (SET or RESET). 00770 */ 00771 #define __HAL_SMARTCARD_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((((uint8_t)(__INTERRUPT__)) >> 0x05U) == 0x01U)? (__HANDLE__)->Instance->CR1 : \ 00772 (((((uint8_t)(__INTERRUPT__)) >> 0x05U) == 0x01U)? (__HANDLE__)->Instance->CR2 : \ 00773 (__HANDLE__)->Instance->CR3)) & (0x01U << (((uint16_t)(__INTERRUPT__)) & SMARTCARD_IT_MASK))) != RESET) ? SET : RESET) 00774 00775 00776 /** @brief Clear the specified SMARTCARD ISR flag, in setting the proper ICR register flag. 00777 * @param __HANDLE__ specifies the SMARTCARD Handle. 00778 * @param __IT_CLEAR__ specifies the interrupt clear register flag that needs to be set 00779 * to clear the corresponding interrupt. 00780 * This parameter can be one of the following values: 00781 * @arg @ref SMARTCARD_CLEAR_PEF Parity error clear flag 00782 * @arg @ref SMARTCARD_CLEAR_FEF Framing error clear flag 00783 * @arg @ref SMARTCARD_CLEAR_NEF Noise detected clear flag 00784 * @arg @ref SMARTCARD_CLEAR_OREF OverRun error clear flag 00785 * @arg @ref SMARTCARD_CLEAR_IDLEF Idle line detection clear flag 00786 * @arg @ref SMARTCARD_CLEAR_TXFECF TXFIFO empty Clear Flag 00787 * @arg @ref SMARTCARD_CLEAR_TCF Transmission complete clear flag 00788 * @arg @ref SMARTCARD_CLEAR_TCBGTF Transmission complete before guard time clear flag (when flag available) 00789 * @arg @ref SMARTCARD_CLEAR_RTOF Receiver timeout clear flag 00790 * @arg @ref SMARTCARD_CLEAR_EOBF End of block clear flag 00791 * @retval None 00792 */ 00793 #define __HAL_SMARTCARD_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR |= (uint32_t)(__IT_CLEAR__)) 00794 00795 /** @brief Set a specific SMARTCARD request flag. 00796 * @param __HANDLE__ specifies the SMARTCARD Handle. 00797 * @param __REQ__ specifies the request flag to set 00798 * This parameter can be one of the following values: 00799 * @arg @ref SMARTCARD_RXDATA_FLUSH_REQUEST Receive data flush Request 00800 * @arg @ref SMARTCARD_TXDATA_FLUSH_REQUEST Transmit data flush Request 00801 * 00802 * @retval None 00803 */ 00804 #define __HAL_SMARTCARD_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__)) 00805 00806 /** @brief Enable the SMARTCARD one bit sample method. 00807 * @param __HANDLE__ specifies the SMARTCARD Handle. 00808 * @retval None 00809 */ 00810 #define __HAL_SMARTCARD_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT) 00811 00812 /** @brief Disable the SMARTCARD one bit sample method. 00813 * @param __HANDLE__ specifies the SMARTCARD Handle. 00814 * @retval None 00815 */ 00816 #define __HAL_SMARTCARD_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= (uint32_t)~((uint32_t)USART_CR3_ONEBIT)) 00817 00818 /** @brief Enable the USART associated to the SMARTCARD Handle. 00819 * @param __HANDLE__ specifies the SMARTCARD Handle. 00820 * @retval None 00821 */ 00822 #define __HAL_SMARTCARD_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE) 00823 00824 /** @brief Disable the USART associated to the SMARTCARD Handle 00825 * @param __HANDLE__ specifies the SMARTCARD Handle. 00826 * @retval None 00827 */ 00828 #define __HAL_SMARTCARD_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE) 00829 00830 /** 00831 * @} 00832 */ 00833 00834 /* Private macros -------------------------------------------------------------*/ 00835 /** @defgroup SMARTCARD_Private_Macros SMARTCARD Private Macros 00836 * @{ 00837 */ 00838 00839 /** @brief Report the SMARTCARD clock source. 00840 * @param __HANDLE__ specifies the SMARTCARD Handle. 00841 * @param __CLOCKSOURCE__ output variable. 00842 * @retval the SMARTCARD clocking source, written in __CLOCKSOURCE__. 00843 */ 00844 #if defined (STM32L432xx) || defined (STM32L442xx) 00845 #define SMARTCARD_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ 00846 do { \ 00847 if((__HANDLE__)->Instance == USART1) \ 00848 { \ 00849 switch(__HAL_RCC_GET_USART1_SOURCE()) \ 00850 { \ 00851 case RCC_USART1CLKSOURCE_PCLK2: \ 00852 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK2; \ 00853 break; \ 00854 case RCC_USART1CLKSOURCE_HSI: \ 00855 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 00856 break; \ 00857 case RCC_USART1CLKSOURCE_SYSCLK: \ 00858 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \ 00859 break; \ 00860 case RCC_USART1CLKSOURCE_LSE: \ 00861 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 00862 break; \ 00863 default: \ 00864 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 00865 break; \ 00866 } \ 00867 } \ 00868 else if((__HANDLE__)->Instance == USART2) \ 00869 { \ 00870 switch(__HAL_RCC_GET_USART2_SOURCE()) \ 00871 { \ 00872 case RCC_USART2CLKSOURCE_PCLK1: \ 00873 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK1; \ 00874 break; \ 00875 case RCC_USART2CLKSOURCE_HSI: \ 00876 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 00877 break; \ 00878 case RCC_USART2CLKSOURCE_SYSCLK: \ 00879 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \ 00880 break; \ 00881 case RCC_USART2CLKSOURCE_LSE: \ 00882 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 00883 break; \ 00884 default: \ 00885 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 00886 break; \ 00887 } \ 00888 } \ 00889 } while(0) 00890 #else 00891 #define SMARTCARD_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ 00892 do { \ 00893 if((__HANDLE__)->Instance == USART1) \ 00894 { \ 00895 switch(__HAL_RCC_GET_USART1_SOURCE()) \ 00896 { \ 00897 case RCC_USART1CLKSOURCE_PCLK2: \ 00898 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK2; \ 00899 break; \ 00900 case RCC_USART1CLKSOURCE_HSI: \ 00901 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 00902 break; \ 00903 case RCC_USART1CLKSOURCE_SYSCLK: \ 00904 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \ 00905 break; \ 00906 case RCC_USART1CLKSOURCE_LSE: \ 00907 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 00908 break; \ 00909 default: \ 00910 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 00911 break; \ 00912 } \ 00913 } \ 00914 else if((__HANDLE__)->Instance == USART2) \ 00915 { \ 00916 switch(__HAL_RCC_GET_USART2_SOURCE()) \ 00917 { \ 00918 case RCC_USART2CLKSOURCE_PCLK1: \ 00919 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK1; \ 00920 break; \ 00921 case RCC_USART2CLKSOURCE_HSI: \ 00922 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 00923 break; \ 00924 case RCC_USART2CLKSOURCE_SYSCLK: \ 00925 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \ 00926 break; \ 00927 case RCC_USART2CLKSOURCE_LSE: \ 00928 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 00929 break; \ 00930 default: \ 00931 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 00932 break; \ 00933 } \ 00934 } \ 00935 else if((__HANDLE__)->Instance == USART3) \ 00936 { \ 00937 switch(__HAL_RCC_GET_USART3_SOURCE()) \ 00938 { \ 00939 case RCC_USART3CLKSOURCE_PCLK1: \ 00940 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK1; \ 00941 break; \ 00942 case RCC_USART3CLKSOURCE_HSI: \ 00943 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \ 00944 break; \ 00945 case RCC_USART3CLKSOURCE_SYSCLK: \ 00946 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \ 00947 break; \ 00948 case RCC_USART3CLKSOURCE_LSE: \ 00949 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \ 00950 break; \ 00951 default: \ 00952 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \ 00953 break; \ 00954 } \ 00955 } \ 00956 } while(0) 00957 #endif /* STM32L432xx || STM32L442xx */ 00958 00959 /** @brief Check the Baud rate range. 00960 * @note The maximum Baud Rate is derived from the maximum clock on L4 (120 MHz) 00961 * divided by the oversampling used on the SMARTCARD (i.e. 16). 00962 * @param __BAUDRATE__ Baud rate set by the configuration function. 00963 * @retval Test result (TRUE or FALSE) 00964 */ 00965 #define IS_SMARTCARD_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 7500001U) 00966 00967 /** @brief Check the block length range. 00968 * @note The maximum SMARTCARD block length is 0xFF. 00969 * @param __LENGTH__ block length. 00970 * @retval Test result (TRUE or FALSE) 00971 */ 00972 #define IS_SMARTCARD_BLOCKLENGTH(__LENGTH__) ((__LENGTH__) <= 0xFFU) 00973 00974 /** @brief Check the receiver timeout value. 00975 * @note The maximum SMARTCARD receiver timeout value is 0xFFFFFF. 00976 * @param __TIMEOUTVALUE__ receiver timeout value. 00977 * @retval Test result (TRUE or FALSE) 00978 */ 00979 #define IS_SMARTCARD_TIMEOUT_VALUE(__TIMEOUTVALUE__) ((__TIMEOUTVALUE__) <= 0xFFFFFFU) 00980 00981 /** @brief Check the SMARTCARD autoretry counter value. 00982 * @note The maximum number of retransmissions is 0x7. 00983 * @param __COUNT__ number of retransmissions. 00984 * @retval Test result (TRUE or FALSE) 00985 */ 00986 #define IS_SMARTCARD_AUTORETRY_COUNT(__COUNT__) ((__COUNT__) <= 0x7U) 00987 00988 /** 00989 * @brief Ensure that SMARTCARD frame length is valid. 00990 * @param __LENGTH__ SMARTCARD frame length. 00991 * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid) 00992 */ 00993 #define IS_SMARTCARD_WORD_LENGTH(__LENGTH__) ((__LENGTH__) == SMARTCARD_WORDLENGTH_9B) 00994 00995 /** 00996 * @brief Ensure that SMARTCARD frame number of stop bits is valid. 00997 * @param __STOPBITS__ SMARTCARD frame number of stop bits. 00998 * @retval SET (__STOPBITS__ is valid) or RESET (__STOPBITS__ is invalid) 00999 */ 01000 #define IS_SMARTCARD_STOPBITS(__STOPBITS__) (((__STOPBITS__) == SMARTCARD_STOPBITS_0_5) ||\ 01001 ((__STOPBITS__) == SMARTCARD_STOPBITS_1_5)) 01002 01003 /** 01004 * @brief Ensure that SMARTCARD frame parity is valid. 01005 * @param __PARITY__ SMARTCARD frame parity. 01006 * @retval SET (__PARITY__ is valid) or RESET (__PARITY__ is invalid) 01007 */ 01008 #define IS_SMARTCARD_PARITY(__PARITY__) (((__PARITY__) == SMARTCARD_PARITY_EVEN) || \ 01009 ((__PARITY__) == SMARTCARD_PARITY_ODD)) 01010 01011 /** 01012 * @brief Ensure that SMARTCARD communication mode is valid. 01013 * @param __MODE__ SMARTCARD communication mode. 01014 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid) 01015 */ 01016 #define IS_SMARTCARD_MODE(__MODE__) ((((__MODE__) & 0xFFF3U) == 0x00U) && ((__MODE__) != 0x00U)) 01017 01018 /** 01019 * @brief Ensure that SMARTCARD frame polarity is valid. 01020 * @param __CPOL__ SMARTCARD frame polarity. 01021 * @retval SET (__CPOL__ is valid) or RESET (__CPOL__ is invalid) 01022 */ 01023 #define IS_SMARTCARD_POLARITY(__CPOL__) (((__CPOL__) == SMARTCARD_POLARITY_LOW) || ((__CPOL__) == SMARTCARD_POLARITY_HIGH)) 01024 01025 /** 01026 * @brief Ensure that SMARTCARD frame phase is valid. 01027 * @param __CPHA__ SMARTCARD frame phase. 01028 * @retval SET (__CPHA__ is valid) or RESET (__CPHA__ is invalid) 01029 */ 01030 #define IS_SMARTCARD_PHASE(__CPHA__) (((__CPHA__) == SMARTCARD_PHASE_1EDGE) || ((__CPHA__) == SMARTCARD_PHASE_2EDGE)) 01031 01032 /** 01033 * @brief Ensure that SMARTCARD frame last bit clock pulse setting is valid. 01034 * @param __LASTBIT__ SMARTCARD frame last bit clock pulse setting. 01035 * @retval SET (__LASTBIT__ is valid) or RESET (__LASTBIT__ is invalid) 01036 */ 01037 #define IS_SMARTCARD_LASTBIT(__LASTBIT__) (((__LASTBIT__) == SMARTCARD_LASTBIT_DISABLE) || \ 01038 ((__LASTBIT__) == SMARTCARD_LASTBIT_ENABLE)) 01039 01040 /** 01041 * @brief Ensure that SMARTCARD frame sampling is valid. 01042 * @param __ONEBIT__ SMARTCARD frame sampling. 01043 * @retval SET (__ONEBIT__ is valid) or RESET (__ONEBIT__ is invalid) 01044 */ 01045 #define IS_SMARTCARD_ONE_BIT_SAMPLE(__ONEBIT__) (((__ONEBIT__) == SMARTCARD_ONE_BIT_SAMPLE_DISABLE) || \ 01046 ((__ONEBIT__) == SMARTCARD_ONE_BIT_SAMPLE_ENABLE)) 01047 01048 /** 01049 * @brief Ensure that SMARTCARD NACK transmission setting is valid. 01050 * @param __NACK__ SMARTCARD NACK transmission setting. 01051 * @retval SET (__NACK__ is valid) or RESET (__NACK__ is invalid) 01052 */ 01053 #define IS_SMARTCARD_NACK(__NACK__) (((__NACK__) == SMARTCARD_NACK_ENABLE) || \ 01054 ((__NACK__) == SMARTCARD_NACK_DISABLE)) 01055 01056 /** 01057 * @brief Ensure that SMARTCARD receiver timeout setting is valid. 01058 * @param __TIMEOUT__ SMARTCARD receiver timeout setting. 01059 * @retval SET (__TIMEOUT__ is valid) or RESET (__TIMEOUT__ is invalid) 01060 */ 01061 #define IS_SMARTCARD_TIMEOUT(__TIMEOUT__) (((__TIMEOUT__) == SMARTCARD_TIMEOUT_DISABLE) || \ 01062 ((__TIMEOUT__) == SMARTCARD_TIMEOUT_ENABLE)) 01063 01064 #if defined(USART_PRESC_PRESCALER) 01065 /** 01066 * @brief Ensure that SMARTCARD clock Prescaler is valid. 01067 * @param __CLOCKPRESCALER__ SMARTCARD clock Prescaler value. 01068 * @retval SET (__CLOCKPRESCALER__ is valid) or RESET (__CLOCKPRESCALER__ is invalid) 01069 */ 01070 #define IS_SMARTCARD_CLOCKPRESCALER(__CLOCKPRESCALER__) (((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV1) || \ 01071 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV2) || \ 01072 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV4) || \ 01073 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV6) || \ 01074 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV8) || \ 01075 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV10) || \ 01076 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV12) || \ 01077 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV16) || \ 01078 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV32) || \ 01079 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV64) || \ 01080 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV128) || \ 01081 ((__CLOCKPRESCALER__) == SMARTCARD_PRESCALER_DIV256)) 01082 #endif 01083 01084 /** 01085 * @brief Ensure that SMARTCARD advanced features initialization is valid. 01086 * @param __INIT__ SMARTCARD advanced features initialization. 01087 * @retval SET (__INIT__ is valid) or RESET (__INIT__ is invalid) 01088 */ 01089 #define IS_SMARTCARD_ADVFEATURE_INIT(__INIT__) ((__INIT__) <= (SMARTCARD_ADVFEATURE_NO_INIT | \ 01090 SMARTCARD_ADVFEATURE_TXINVERT_INIT | \ 01091 SMARTCARD_ADVFEATURE_RXINVERT_INIT | \ 01092 SMARTCARD_ADVFEATURE_DATAINVERT_INIT | \ 01093 SMARTCARD_ADVFEATURE_SWAP_INIT | \ 01094 SMARTCARD_ADVFEATURE_RXOVERRUNDISABLE_INIT | \ 01095 SMARTCARD_ADVFEATURE_DMADISABLEONERROR_INIT | \ 01096 SMARTCARD_ADVFEATURE_MSBFIRST_INIT)) 01097 01098 /** 01099 * @brief Ensure that SMARTCARD frame TX inversion setting is valid. 01100 * @param __TXINV__ SMARTCARD frame TX inversion setting. 01101 * @retval SET (__TXINV__ is valid) or RESET (__TXINV__ is invalid) 01102 */ 01103 #define IS_SMARTCARD_ADVFEATURE_TXINV(__TXINV__) (((__TXINV__) == SMARTCARD_ADVFEATURE_TXINV_DISABLE) || \ 01104 ((__TXINV__) == SMARTCARD_ADVFEATURE_TXINV_ENABLE)) 01105 01106 /** 01107 * @brief Ensure that SMARTCARD frame RX inversion setting is valid. 01108 * @param __RXINV__ SMARTCARD frame RX inversion setting. 01109 * @retval SET (__RXINV__ is valid) or RESET (__RXINV__ is invalid) 01110 */ 01111 #define IS_SMARTCARD_ADVFEATURE_RXINV(__RXINV__) (((__RXINV__) == SMARTCARD_ADVFEATURE_RXINV_DISABLE) || \ 01112 ((__RXINV__) == SMARTCARD_ADVFEATURE_RXINV_ENABLE)) 01113 01114 /** 01115 * @brief Ensure that SMARTCARD frame data inversion setting is valid. 01116 * @param __DATAINV__ SMARTCARD frame data inversion setting. 01117 * @retval SET (__DATAINV__ is valid) or RESET (__DATAINV__ is invalid) 01118 */ 01119 #define IS_SMARTCARD_ADVFEATURE_DATAINV(__DATAINV__) (((__DATAINV__) == SMARTCARD_ADVFEATURE_DATAINV_DISABLE) || \ 01120 ((__DATAINV__) == SMARTCARD_ADVFEATURE_DATAINV_ENABLE)) 01121 01122 /** 01123 * @brief Ensure that SMARTCARD frame RX/TX pins swap setting is valid. 01124 * @param __SWAP__ SMARTCARD frame RX/TX pins swap setting. 01125 * @retval SET (__SWAP__ is valid) or RESET (__SWAP__ is invalid) 01126 */ 01127 #define IS_SMARTCARD_ADVFEATURE_SWAP(__SWAP__) (((__SWAP__) == SMARTCARD_ADVFEATURE_SWAP_DISABLE) || \ 01128 ((__SWAP__) == SMARTCARD_ADVFEATURE_SWAP_ENABLE)) 01129 01130 /** 01131 * @brief Ensure that SMARTCARD frame overrun setting is valid. 01132 * @param __OVERRUN__ SMARTCARD frame overrun setting. 01133 * @retval SET (__OVERRUN__ is valid) or RESET (__OVERRUN__ is invalid) 01134 */ 01135 #define IS_SMARTCARD_OVERRUN(__OVERRUN__) (((__OVERRUN__) == SMARTCARD_ADVFEATURE_OVERRUN_ENABLE) || \ 01136 ((__OVERRUN__) == SMARTCARD_ADVFEATURE_OVERRUN_DISABLE)) 01137 01138 /** 01139 * @brief Ensure that SMARTCARD DMA enabling or disabling on error setting is valid. 01140 * @param __DMA__ SMARTCARD DMA enabling or disabling on error setting. 01141 * @retval SET (__DMA__ is valid) or RESET (__DMA__ is invalid) 01142 */ 01143 #define IS_SMARTCARD_ADVFEATURE_DMAONRXERROR(__DMA__) (((__DMA__) == SMARTCARD_ADVFEATURE_DMA_ENABLEONRXERROR) || \ 01144 ((__DMA__) == SMARTCARD_ADVFEATURE_DMA_DISABLEONRXERROR)) 01145 01146 /** 01147 * @brief Ensure that SMARTCARD frame MSB first setting is valid. 01148 * @param __MSBFIRST__ SMARTCARD frame MSB first setting. 01149 * @retval SET (__MSBFIRST__ is valid) or RESET (__MSBFIRST__ is invalid) 01150 */ 01151 #define IS_SMARTCARD_ADVFEATURE_MSBFIRST(__MSBFIRST__) (((__MSBFIRST__) == SMARTCARD_ADVFEATURE_MSBFIRST_DISABLE) || \ 01152 ((__MSBFIRST__) == SMARTCARD_ADVFEATURE_MSBFIRST_ENABLE)) 01153 01154 /** 01155 * @brief Ensure that SMARTCARD request parameter is valid. 01156 * @param __PARAM__ SMARTCARD request parameter. 01157 * @retval SET (__PARAM__ is valid) or RESET (__PARAM__ is invalid) 01158 */ 01159 #define IS_SMARTCARD_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == SMARTCARD_RXDATA_FLUSH_REQUEST) || \ 01160 ((__PARAM__) == SMARTCARD_TXDATA_FLUSH_REQUEST)) 01161 01162 /** 01163 * @} 01164 */ 01165 01166 /* Include SMARTCARD HAL Extended module */ 01167 #include "stm32l4xx_hal_smartcard_ex.h" 01168 01169 01170 /* Exported functions --------------------------------------------------------*/ 01171 /** @addtogroup SMARTCARD_Exported_Functions 01172 * @{ 01173 */ 01174 01175 /* Initialization and de-initialization functions ****************************/ 01176 /** @addtogroup SMARTCARD_Exported_Functions_Group1 01177 * @{ 01178 */ 01179 01180 HAL_StatusTypeDef HAL_SMARTCARD_Init(SMARTCARD_HandleTypeDef *hsmartcard); 01181 HAL_StatusTypeDef HAL_SMARTCARD_DeInit(SMARTCARD_HandleTypeDef *hsmartcard); 01182 void HAL_SMARTCARD_MspInit(SMARTCARD_HandleTypeDef *hsmartcard); 01183 void HAL_SMARTCARD_MspDeInit(SMARTCARD_HandleTypeDef *hsmartcard); 01184 01185 #if (USE_HAL_SMARTCARD_REGISTER_CALLBACKS == 1) 01186 /* Callbacks Register/UnRegister functions ***********************************/ 01187 HAL_StatusTypeDef HAL_SMARTCARD_RegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard, HAL_SMARTCARD_CallbackIDTypeDef CallbackID, pSMARTCARD_CallbackTypeDef pCallback); 01188 HAL_StatusTypeDef HAL_SMARTCARD_UnRegisterCallback(SMARTCARD_HandleTypeDef *hsmartcard, HAL_SMARTCARD_CallbackIDTypeDef CallbackID); 01189 #endif /* USE_HAL_SMARTCARD_REGISTER_CALLBACKS */ 01190 01191 /** 01192 * @} 01193 */ 01194 01195 /* IO operation functions *****************************************************/ 01196 /** @addtogroup SMARTCARD_Exported_Functions_Group2 01197 * @{ 01198 */ 01199 01200 HAL_StatusTypeDef HAL_SMARTCARD_Transmit(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size, uint32_t Timeout); 01201 HAL_StatusTypeDef HAL_SMARTCARD_Receive(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size, uint32_t Timeout); 01202 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size); 01203 HAL_StatusTypeDef HAL_SMARTCARD_Receive_IT(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size); 01204 HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size); 01205 HAL_StatusTypeDef HAL_SMARTCARD_Receive_DMA(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size); 01206 /* Transfer Abort functions */ 01207 HAL_StatusTypeDef HAL_SMARTCARD_Abort(SMARTCARD_HandleTypeDef *hsmartcard); 01208 HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit(SMARTCARD_HandleTypeDef *hsmartcard); 01209 HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive(SMARTCARD_HandleTypeDef *hsmartcard); 01210 HAL_StatusTypeDef HAL_SMARTCARD_Abort_IT(SMARTCARD_HandleTypeDef *hsmartcard); 01211 HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit_IT(SMARTCARD_HandleTypeDef *hsmartcard); 01212 HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive_IT(SMARTCARD_HandleTypeDef *hsmartcard); 01213 01214 void HAL_SMARTCARD_IRQHandler(SMARTCARD_HandleTypeDef *hsmartcard); 01215 void HAL_SMARTCARD_TxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard); 01216 void HAL_SMARTCARD_RxCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard); 01217 void HAL_SMARTCARD_ErrorCallback(SMARTCARD_HandleTypeDef *hsmartcard); 01218 void HAL_SMARTCARD_AbortCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard); 01219 void HAL_SMARTCARD_AbortTransmitCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard); 01220 void HAL_SMARTCARD_AbortReceiveCpltCallback(SMARTCARD_HandleTypeDef *hsmartcard); 01221 01222 /** 01223 * @} 01224 */ 01225 01226 /* Peripheral State and Error functions ***************************************/ 01227 /** @addtogroup SMARTCARD_Exported_Functions_Group4 01228 * @{ 01229 */ 01230 01231 HAL_SMARTCARD_StateTypeDef HAL_SMARTCARD_GetState(SMARTCARD_HandleTypeDef *hsmartcard); 01232 uint32_t HAL_SMARTCARD_GetError(SMARTCARD_HandleTypeDef *hsmartcard); 01233 01234 /** 01235 * @} 01236 */ 01237 01238 /** 01239 * @} 01240 */ 01241 01242 /** 01243 * @} 01244 */ 01245 01246 /** 01247 * @} 01248 */ 01249 01250 #ifdef __cplusplus 01251 } 01252 #endif 01253 01254 #endif /* __STM32L4xx_HAL_SMARTCARD_H */ 01255 01256 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/