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:
<>
Date:
Wed Apr 12 16:07:08 2017 +0100
Revision:
140:97feb9bacc10
Parent:
128:9bcdf88f62b0
Child:
145:64910690c574
Release 140 of the mbed library

Ports for Upcoming Targets

3841: Add nRf52840 target https://github.com/ARMmbed/mbed-os/pull/3841
3992: Introducing UBLOX_C030 platform. https://github.com/ARMmbed/mbed-os/pull/3992

Fixes and Changes

3951: [NUCLEO_F303ZE] Correct ARDUINO pin https://github.com/ARMmbed/mbed-os/pull/3951
4021: Fixing a macro to detect when RTOS was in use for the NRF52840_DK https://github.com/ARMmbed/mbed-os/pull/4021
3979: KW24D: Add missing SPI defines and Arduino connector definitions https://github.com/ARMmbed/mbed-os/pull/3979
3990: UBLOX_C027: construct a ticker-based wait, rather than calling wait_ms(), in the https://github.com/ARMmbed/mbed-os/pull/3990
4003: Fixed OBOE in async serial tx for NRF52 target, fixes #4002 https://github.com/ARMmbed/mbed-os/pull/4003
4012: STM32: Correct I2C master error handling https://github.com/ARMmbed/mbed-os/pull/4012
4020: NUCLEO_L011K4 remove unsupported tool chain files https://github.com/ARMmbed/mbed-os/pull/4020
4065: K66F: Move bss section to m_data_2 Section https://github.com/ARMmbed/mbed-os/pull/4065
4014: Issue 3763: Reduce heap allocation in the GCC linker file https://github.com/ARMmbed/mbed-os/pull/4014
4030: [STM32L0] reduce IAR heap and stack size for small targets https://github.com/ARMmbed/mbed-os/pull/4030
4109: NUCLEO_L476RG : minor serial pin update https://github.com/ARMmbed/mbed-os/pull/4109
3982: Ticker - kl25z bugfix for handling events in the past https://github.com/ARMmbed/mbed-os/pull/3982

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 122:f9eeca106725 1 /**
Kojto 122:f9eeca106725 2 ******************************************************************************
Kojto 122:f9eeca106725 3 * @file stm32l4xx_hal_smartcard_ex.h
Kojto 122:f9eeca106725 4 * @author MCD Application Team
Kojto 122:f9eeca106725 5 * @version V1.5.1
Kojto 122:f9eeca106725 6 * @date 31-May-2016
Kojto 122:f9eeca106725 7 * @brief Header file of SMARTCARD HAL Extended module.
Kojto 122:f9eeca106725 8 ******************************************************************************
Kojto 122:f9eeca106725 9 * @attention
Kojto 122:f9eeca106725 10 *
Kojto 122:f9eeca106725 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
Kojto 122:f9eeca106725 12 *
Kojto 122:f9eeca106725 13 * Redistribution and use in source and binary forms, with or without modification,
Kojto 122:f9eeca106725 14 * are permitted provided that the following conditions are met:
Kojto 122:f9eeca106725 15 * 1. Redistributions of source code must retain the above copyright notice,
Kojto 122:f9eeca106725 16 * this list of conditions and the following disclaimer.
Kojto 122:f9eeca106725 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
Kojto 122:f9eeca106725 18 * this list of conditions and the following disclaimer in the documentation
Kojto 122:f9eeca106725 19 * and/or other materials provided with the distribution.
Kojto 122:f9eeca106725 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Kojto 122:f9eeca106725 21 * may be used to endorse or promote products derived from this software
Kojto 122:f9eeca106725 22 * without specific prior written permission.
Kojto 122:f9eeca106725 23 *
Kojto 122:f9eeca106725 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Kojto 122:f9eeca106725 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Kojto 122:f9eeca106725 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Kojto 122:f9eeca106725 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Kojto 122:f9eeca106725 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Kojto 122:f9eeca106725 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Kojto 122:f9eeca106725 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Kojto 122:f9eeca106725 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Kojto 122:f9eeca106725 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Kojto 122:f9eeca106725 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Kojto 122:f9eeca106725 34 *
Kojto 122:f9eeca106725 35 ******************************************************************************
Kojto 122:f9eeca106725 36 */
Kojto 122:f9eeca106725 37
Kojto 122:f9eeca106725 38 /* Define to prevent recursive inclusion -------------------------------------*/
Kojto 122:f9eeca106725 39 #ifndef __STM32L4xx_HAL_SMARTCARD_EX_H
Kojto 122:f9eeca106725 40 #define __STM32L4xx_HAL_SMARTCARD_EX_H
Kojto 122:f9eeca106725 41
Kojto 122:f9eeca106725 42 #ifdef __cplusplus
Kojto 122:f9eeca106725 43 extern "C" {
Kojto 122:f9eeca106725 44 #endif
Kojto 122:f9eeca106725 45
Kojto 122:f9eeca106725 46 /* Includes ------------------------------------------------------------------*/
Kojto 122:f9eeca106725 47 #include "stm32l4xx_hal_def.h"
Kojto 122:f9eeca106725 48
Kojto 122:f9eeca106725 49 /** @addtogroup STM32L4xx_HAL_Driver
Kojto 122:f9eeca106725 50 * @{
Kojto 122:f9eeca106725 51 */
Kojto 122:f9eeca106725 52
Kojto 122:f9eeca106725 53 /** @addtogroup SMARTCARDEx
Kojto 122:f9eeca106725 54 * @{
Kojto 122:f9eeca106725 55 */
Kojto 122:f9eeca106725 56
Kojto 122:f9eeca106725 57 /* Exported types ------------------------------------------------------------*/
Kojto 122:f9eeca106725 58 /* Exported constants --------------------------------------------------------*/
Kojto 122:f9eeca106725 59
Kojto 122:f9eeca106725 60 /** @addtogroup SMARTCARDEx_Exported_Constants SMARTCARD Extended Exported Constants
Kojto 122:f9eeca106725 61 * @{
Kojto 122:f9eeca106725 62 */
Kojto 122:f9eeca106725 63
Kojto 122:f9eeca106725 64 /** @defgroup SMARTCARDEx_Transmission_Completion_Indication SMARTCARD Transmission Completion Indication
Kojto 122:f9eeca106725 65 * @{
Kojto 122:f9eeca106725 66 */
Kojto 122:f9eeca106725 67 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx)
Kojto 122:f9eeca106725 68 #define SMARTCARD_TCBGT SMARTCARD_IT_TCBGT /*!< SMARTCARD transmission complete before guard time */
Kojto 122:f9eeca106725 69 #endif /* defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) */
Kojto 122:f9eeca106725 70 #define SMARTCARD_TC SMARTCARD_IT_TC /*!< SMARTCARD transmission complete (flag raised when guard time has elapsed) */
Kojto 122:f9eeca106725 71 /**
Kojto 122:f9eeca106725 72 * @}
Kojto 122:f9eeca106725 73 */
Kojto 122:f9eeca106725 74
Kojto 122:f9eeca106725 75 /** @defgroup SMARTCARDEx_Advanced_Features_Initialization_Type SMARTCARD advanced feature initialization type
Kojto 122:f9eeca106725 76 * @{
Kojto 122:f9eeca106725 77 */
Kojto 122:f9eeca106725 78 #define SMARTCARD_ADVFEATURE_NO_INIT ((uint32_t)0x00000000) /*!< No advanced feature initialization */
Kojto 122:f9eeca106725 79 #define SMARTCARD_ADVFEATURE_TXINVERT_INIT ((uint32_t)0x00000001) /*!< TX pin active level inversion */
Kojto 122:f9eeca106725 80 #define SMARTCARD_ADVFEATURE_RXINVERT_INIT ((uint32_t)0x00000002) /*!< RX pin active level inversion */
Kojto 122:f9eeca106725 81 #define SMARTCARD_ADVFEATURE_DATAINVERT_INIT ((uint32_t)0x00000004) /*!< Binary data inversion */
Kojto 122:f9eeca106725 82 #define SMARTCARD_ADVFEATURE_SWAP_INIT ((uint32_t)0x00000008) /*!< TX/RX pins swap */
Kojto 122:f9eeca106725 83 #define SMARTCARD_ADVFEATURE_RXOVERRUNDISABLE_INIT ((uint32_t)0x00000010) /*!< RX overrun disable */
Kojto 122:f9eeca106725 84 #define SMARTCARD_ADVFEATURE_DMADISABLEONERROR_INIT ((uint32_t)0x00000020) /*!< DMA disable on Reception Error */
Kojto 122:f9eeca106725 85 #define SMARTCARD_ADVFEATURE_MSBFIRST_INIT ((uint32_t)0x00000080) /*!< Most significant bit sent/received first */
Kojto 122:f9eeca106725 86 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx)
Kojto 122:f9eeca106725 87 #define SMARTCARD_ADVFEATURE_TXCOMPLETION ((uint32_t)0x00000100) /*!< TX completion indication before of after guard time */
Kojto 122:f9eeca106725 88 #endif /* defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) */
Kojto 122:f9eeca106725 89 /**
Kojto 122:f9eeca106725 90 * @}
Kojto 122:f9eeca106725 91 */
Kojto 122:f9eeca106725 92
Kojto 122:f9eeca106725 93
Kojto 122:f9eeca106725 94
Kojto 122:f9eeca106725 95
Kojto 122:f9eeca106725 96 /** @defgroup SMARTCARDEx_Flags SMARTCARD Flags
Kojto 122:f9eeca106725 97 * Elements values convention: 0xXXXX
Kojto 122:f9eeca106725 98 * - 0xXXXX : Flag mask in the ISR register
Kojto 122:f9eeca106725 99 * @{
Kojto 122:f9eeca106725 100 */
Kojto 122:f9eeca106725 101 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx)
Kojto 122:f9eeca106725 102 #define SMARTCARD_FLAG_TCBGT USART_ISR_TCBGT /*!< SMARTCARD transmission complete before guard time completion */
Kojto 122:f9eeca106725 103 #endif /* defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) */
Kojto 122:f9eeca106725 104 #define SMARTCARD_FLAG_REACK USART_ISR_REACK /*!< SMARTCARD receive enable acknowledge flag */
Kojto 122:f9eeca106725 105 #define SMARTCARD_FLAG_TEACK USART_ISR_TEACK /*!< SMARTCARD transmit enable acknowledge flag */
Kojto 122:f9eeca106725 106 #define SMARTCARD_FLAG_BUSY USART_ISR_BUSY /*!< SMARTCARD busy flag */
Kojto 122:f9eeca106725 107 #define SMARTCARD_FLAG_EOBF USART_ISR_EOBF /*!< SMARTCARD end of block flag */
Kojto 122:f9eeca106725 108 #define SMARTCARD_FLAG_RTOF USART_ISR_RTOF /*!< SMARTCARD receiver timeout flag */
Kojto 122:f9eeca106725 109 #define SMARTCARD_FLAG_TXE USART_ISR_TXE /*!< SMARTCARD transmit data register empty */
Kojto 122:f9eeca106725 110 #define SMARTCARD_FLAG_TC USART_ISR_TC /*!< SMARTCARD transmission complete */
Kojto 122:f9eeca106725 111 #define SMARTCARD_FLAG_RXNE USART_ISR_RXNE /*!< SMARTCARD read data register not empty */
Kojto 122:f9eeca106725 112 #define SMARTCARD_FLAG_IDLE USART_ISR_IDLE /*!< SMARTCARD idle line detection */
Kojto 122:f9eeca106725 113 #define SMARTCARD_FLAG_ORE USART_ISR_ORE /*!< SMARTCARD overrun error */
Kojto 122:f9eeca106725 114 #define SMARTCARD_FLAG_NE USART_ISR_NE /*!< SMARTCARD noise error */
Kojto 122:f9eeca106725 115 #define SMARTCARD_FLAG_FE USART_ISR_FE /*!< SMARTCARD frame error */
Kojto 122:f9eeca106725 116 #define SMARTCARD_FLAG_PE USART_ISR_PE /*!< SMARTCARD parity error */
Kojto 122:f9eeca106725 117 /**
Kojto 122:f9eeca106725 118 * @}
Kojto 122:f9eeca106725 119 */
Kojto 122:f9eeca106725 120
Kojto 122:f9eeca106725 121 /** @defgroup SMARTCARDEx_Interrupt_definition SMARTCARD Interrupts Definition
Kojto 122:f9eeca106725 122 * Elements values convention: 000ZZZZZ0XXYYYYYb
Kojto 122:f9eeca106725 123 * - YYYYY : Interrupt source position in the XX register (5 bits)
Kojto 122:f9eeca106725 124 * - XX : Interrupt source register (2 bits)
Kojto 122:f9eeca106725 125 * - 01: CR1 register
Kojto 122:f9eeca106725 126 * - 10: CR2 register
Kojto 122:f9eeca106725 127 * - 11: CR3 register
Kojto 122:f9eeca106725 128 * - ZZZZZ : Flag position in the ISR register(5 bits)
Kojto 122:f9eeca106725 129 * @{
Kojto 122:f9eeca106725 130 */
Kojto 122:f9eeca106725 131 #define SMARTCARD_IT_PE ((uint16_t)0x0028) /*!< SMARTCARD parity error interruption */
Kojto 122:f9eeca106725 132 #define SMARTCARD_IT_TXE ((uint16_t)0x0727) /*!< SMARTCARD transmit data register empty interruption */
Kojto 122:f9eeca106725 133 #define SMARTCARD_IT_TC ((uint16_t)0x0626) /*!< SMARTCARD transmission complete interruption */
Kojto 122:f9eeca106725 134 #define SMARTCARD_IT_RXNE ((uint16_t)0x0525) /*!< SMARTCARD read data register not empty interruption */
Kojto 122:f9eeca106725 135 #define SMARTCARD_IT_IDLE ((uint16_t)0x0424) /*!< SMARTCARD idle line detection interruption */
Kojto 122:f9eeca106725 136
Kojto 122:f9eeca106725 137 #define SMARTCARD_IT_ERR ((uint16_t)0x0060) /*!< SMARTCARD error interruption */
Kojto 122:f9eeca106725 138 #define SMARTCARD_IT_ORE ((uint16_t)0x0300) /*!< SMARTCARD overrun error interruption */
Kojto 122:f9eeca106725 139 #define SMARTCARD_IT_NE ((uint16_t)0x0200) /*!< SMARTCARD noise error interruption */
Kojto 122:f9eeca106725 140 #define SMARTCARD_IT_FE ((uint16_t)0x0100) /*!< SMARTCARD frame error interruption */
Kojto 122:f9eeca106725 141
Kojto 122:f9eeca106725 142 #define SMARTCARD_IT_EOB ((uint16_t)0x0C3B) /*!< SMARTCARD end of block interruption */
Kojto 122:f9eeca106725 143 #define SMARTCARD_IT_RTO ((uint16_t)0x0B3A) /*!< SMARTCARD receiver timeout interruption */
Kojto 122:f9eeca106725 144
Kojto 122:f9eeca106725 145 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx)
Kojto 122:f9eeca106725 146 #define SMARTCARD_IT_TCBGT ((uint16_t)0x1978) /*!< SMARTCARD transmission complete before guard time completion interruption */
Kojto 122:f9eeca106725 147 #endif /* defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) */
Kojto 122:f9eeca106725 148 /**
Kojto 122:f9eeca106725 149 * @}
Kojto 122:f9eeca106725 150 */
Kojto 122:f9eeca106725 151
Kojto 122:f9eeca106725 152 /** @defgroup SMARTCARDEx_IT_CLEAR_Flags SMARTCARD Interruption Clear Flags
Kojto 122:f9eeca106725 153 * @{
Kojto 122:f9eeca106725 154 */
Kojto 122:f9eeca106725 155 #define SMARTCARD_CLEAR_PEF USART_ICR_PECF /*!< SMARTCARD parity error clear flag */
Kojto 122:f9eeca106725 156 #define SMARTCARD_CLEAR_FEF USART_ICR_FECF /*!< SMARTCARD framing error clear flag */
Kojto 122:f9eeca106725 157 #define SMARTCARD_CLEAR_NEF USART_ICR_NCF /*!< SMARTCARD noise detected clear flag */
Kojto 122:f9eeca106725 158 #define SMARTCARD_CLEAR_OREF USART_ICR_ORECF /*!< SMARTCARD overrun error clear flag */
Kojto 122:f9eeca106725 159 #define SMARTCARD_CLEAR_IDLEF USART_ICR_IDLECF /*!< SMARTCARD idle line detected clear flag */
Kojto 122:f9eeca106725 160 #define SMARTCARD_CLEAR_TCF USART_ICR_TCCF /*!< SMARTCARD transmission complete clear flag */
Kojto 122:f9eeca106725 161 #if defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx)
Kojto 122:f9eeca106725 162 #define SMARTCARD_CLEAR_TCBGTF USART_ICR_TCBGTCF /*!< SMARTCARD transmission complete before guard time completion clear flag */
Kojto 122:f9eeca106725 163 #endif /* defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx) */
Kojto 122:f9eeca106725 164 #define SMARTCARD_CLEAR_RTOF USART_ICR_RTOCF /*!< SMARTCARD receiver time out clear flag */
Kojto 122:f9eeca106725 165 #define SMARTCARD_CLEAR_EOBF USART_ICR_EOBCF /*!< SMARTCARD end of block clear flag */
Kojto 122:f9eeca106725 166 /**
Kojto 122:f9eeca106725 167 * @}
Kojto 122:f9eeca106725 168 */
Kojto 122:f9eeca106725 169
Kojto 122:f9eeca106725 170 /**
Kojto 122:f9eeca106725 171 * @}
Kojto 122:f9eeca106725 172 */
Kojto 122:f9eeca106725 173 /* Exported macros -----------------------------------------------------------*/
Kojto 122:f9eeca106725 174 /* Private macros ------------------------------------------------------------*/
Kojto 122:f9eeca106725 175 /** @defgroup SMARTCARDEx_Private_Macros SMARTCARD Extended Private Macros
Kojto 122:f9eeca106725 176 * @{
Kojto 122:f9eeca106725 177 */
Kojto 122:f9eeca106725 178
Kojto 122:f9eeca106725 179 /** @brief Report the SMARTCARD clock source.
Kojto 122:f9eeca106725 180 * @param __HANDLE__: specifies the SMARTCARD Handle.
Kojto 122:f9eeca106725 181 * @param __CLOCKSOURCE__: output variable.
Kojto 122:f9eeca106725 182 * @retval the SMARTCARD clocking source, written in __CLOCKSOURCE__.
Kojto 122:f9eeca106725 183 */
Kojto 122:f9eeca106725 184 #if defined (STM32L432xx) || defined (STM32L442xx)
Kojto 122:f9eeca106725 185 #define SMARTCARD_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
Kojto 122:f9eeca106725 186 do { \
Kojto 122:f9eeca106725 187 if((__HANDLE__)->Instance == USART1) \
Kojto 122:f9eeca106725 188 { \
Kojto 122:f9eeca106725 189 switch(__HAL_RCC_GET_USART1_SOURCE()) \
Kojto 122:f9eeca106725 190 { \
Kojto 122:f9eeca106725 191 case RCC_USART1CLKSOURCE_PCLK2: \
Kojto 122:f9eeca106725 192 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK2; \
Kojto 122:f9eeca106725 193 break; \
Kojto 122:f9eeca106725 194 case RCC_USART1CLKSOURCE_HSI: \
Kojto 122:f9eeca106725 195 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \
Kojto 122:f9eeca106725 196 break; \
Kojto 122:f9eeca106725 197 case RCC_USART1CLKSOURCE_SYSCLK: \
Kojto 122:f9eeca106725 198 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \
Kojto 122:f9eeca106725 199 break; \
Kojto 122:f9eeca106725 200 case RCC_USART1CLKSOURCE_LSE: \
Kojto 122:f9eeca106725 201 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \
Kojto 122:f9eeca106725 202 break; \
Kojto 122:f9eeca106725 203 default: \
Kojto 122:f9eeca106725 204 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \
Kojto 122:f9eeca106725 205 break; \
Kojto 122:f9eeca106725 206 } \
Kojto 122:f9eeca106725 207 } \
Kojto 122:f9eeca106725 208 else if((__HANDLE__)->Instance == USART2) \
Kojto 122:f9eeca106725 209 { \
Kojto 122:f9eeca106725 210 switch(__HAL_RCC_GET_USART2_SOURCE()) \
Kojto 122:f9eeca106725 211 { \
Kojto 122:f9eeca106725 212 case RCC_USART2CLKSOURCE_PCLK1: \
Kojto 122:f9eeca106725 213 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK1; \
Kojto 122:f9eeca106725 214 break; \
Kojto 122:f9eeca106725 215 case RCC_USART2CLKSOURCE_HSI: \
Kojto 122:f9eeca106725 216 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \
Kojto 122:f9eeca106725 217 break; \
Kojto 122:f9eeca106725 218 case RCC_USART2CLKSOURCE_SYSCLK: \
Kojto 122:f9eeca106725 219 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \
Kojto 122:f9eeca106725 220 break; \
Kojto 122:f9eeca106725 221 case RCC_USART2CLKSOURCE_LSE: \
Kojto 122:f9eeca106725 222 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \
Kojto 122:f9eeca106725 223 break; \
Kojto 122:f9eeca106725 224 default: \
Kojto 122:f9eeca106725 225 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \
Kojto 122:f9eeca106725 226 break; \
Kojto 122:f9eeca106725 227 } \
Kojto 122:f9eeca106725 228 } \
Kojto 122:f9eeca106725 229 } while(0)
Kojto 122:f9eeca106725 230 #else
Kojto 122:f9eeca106725 231 #define SMARTCARD_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
Kojto 122:f9eeca106725 232 do { \
Kojto 122:f9eeca106725 233 if((__HANDLE__)->Instance == USART1) \
Kojto 122:f9eeca106725 234 { \
Kojto 122:f9eeca106725 235 switch(__HAL_RCC_GET_USART1_SOURCE()) \
Kojto 122:f9eeca106725 236 { \
Kojto 122:f9eeca106725 237 case RCC_USART1CLKSOURCE_PCLK2: \
Kojto 122:f9eeca106725 238 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK2; \
Kojto 122:f9eeca106725 239 break; \
Kojto 122:f9eeca106725 240 case RCC_USART1CLKSOURCE_HSI: \
Kojto 122:f9eeca106725 241 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \
Kojto 122:f9eeca106725 242 break; \
Kojto 122:f9eeca106725 243 case RCC_USART1CLKSOURCE_SYSCLK: \
Kojto 122:f9eeca106725 244 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \
Kojto 122:f9eeca106725 245 break; \
Kojto 122:f9eeca106725 246 case RCC_USART1CLKSOURCE_LSE: \
Kojto 122:f9eeca106725 247 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \
Kojto 122:f9eeca106725 248 break; \
Kojto 122:f9eeca106725 249 default: \
Kojto 122:f9eeca106725 250 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \
Kojto 122:f9eeca106725 251 break; \
Kojto 122:f9eeca106725 252 } \
Kojto 122:f9eeca106725 253 } \
Kojto 122:f9eeca106725 254 else if((__HANDLE__)->Instance == USART2) \
Kojto 122:f9eeca106725 255 { \
Kojto 122:f9eeca106725 256 switch(__HAL_RCC_GET_USART2_SOURCE()) \
Kojto 122:f9eeca106725 257 { \
Kojto 122:f9eeca106725 258 case RCC_USART2CLKSOURCE_PCLK1: \
Kojto 122:f9eeca106725 259 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK1; \
Kojto 122:f9eeca106725 260 break; \
Kojto 122:f9eeca106725 261 case RCC_USART2CLKSOURCE_HSI: \
Kojto 122:f9eeca106725 262 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \
Kojto 122:f9eeca106725 263 break; \
Kojto 122:f9eeca106725 264 case RCC_USART2CLKSOURCE_SYSCLK: \
Kojto 122:f9eeca106725 265 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \
Kojto 122:f9eeca106725 266 break; \
Kojto 122:f9eeca106725 267 case RCC_USART2CLKSOURCE_LSE: \
Kojto 122:f9eeca106725 268 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \
Kojto 122:f9eeca106725 269 break; \
Kojto 122:f9eeca106725 270 default: \
Kojto 122:f9eeca106725 271 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \
Kojto 122:f9eeca106725 272 break; \
Kojto 122:f9eeca106725 273 } \
Kojto 122:f9eeca106725 274 } \
Kojto 122:f9eeca106725 275 else if((__HANDLE__)->Instance == USART3) \
Kojto 122:f9eeca106725 276 { \
Kojto 122:f9eeca106725 277 switch(__HAL_RCC_GET_USART3_SOURCE()) \
Kojto 122:f9eeca106725 278 { \
Kojto 122:f9eeca106725 279 case RCC_USART3CLKSOURCE_PCLK1: \
Kojto 122:f9eeca106725 280 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_PCLK1; \
Kojto 122:f9eeca106725 281 break; \
Kojto 122:f9eeca106725 282 case RCC_USART3CLKSOURCE_HSI: \
Kojto 122:f9eeca106725 283 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_HSI; \
Kojto 122:f9eeca106725 284 break; \
Kojto 122:f9eeca106725 285 case RCC_USART3CLKSOURCE_SYSCLK: \
Kojto 122:f9eeca106725 286 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_SYSCLK; \
Kojto 122:f9eeca106725 287 break; \
Kojto 122:f9eeca106725 288 case RCC_USART3CLKSOURCE_LSE: \
Kojto 122:f9eeca106725 289 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_LSE; \
Kojto 122:f9eeca106725 290 break; \
Kojto 122:f9eeca106725 291 default: \
Kojto 122:f9eeca106725 292 (__CLOCKSOURCE__) = SMARTCARD_CLOCKSOURCE_UNDEFINED; \
Kojto 122:f9eeca106725 293 break; \
Kojto 122:f9eeca106725 294 } \
Kojto 122:f9eeca106725 295 } \
Kojto 122:f9eeca106725 296 } while(0)
Kojto 122:f9eeca106725 297 #endif /* STM32L432xx || STM32L442xx */
Kojto 122:f9eeca106725 298
Kojto 122:f9eeca106725 299 /** @brief Set the Transmission Completion flag
Kojto 122:f9eeca106725 300 * @param __HANDLE__: specifies the SMARTCARD Handle.
Kojto 122:f9eeca106725 301 * @note If TCBGT (Transmission Complete Before Guard Time) flag is not available or if
Kojto 122:f9eeca106725 302 * AdvancedInit.TxCompletionIndication is not already filled, the latter is forced
Kojto 122:f9eeca106725 303 * to SMARTCARD_TC (transmission completion indication when guard time has elapsed).
Kojto 122:f9eeca106725 304 * @retval None
Kojto 122:f9eeca106725 305 */
Kojto 122:f9eeca106725 306 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx)
Kojto 122:f9eeca106725 307 #define SMARTCARD_TRANSMISSION_COMPLETION_SETTING(__HANDLE__) \
Kojto 122:f9eeca106725 308 do { \
Kojto 122:f9eeca106725 309 (__HANDLE__)->AdvancedInit.TxCompletionIndication = SMARTCARD_TC; \
Kojto 122:f9eeca106725 310 } while(0)
Kojto 122:f9eeca106725 311 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx)
Kojto 122:f9eeca106725 312 #define SMARTCARD_TRANSMISSION_COMPLETION_SETTING(__HANDLE__) \
Kojto 122:f9eeca106725 313 do { \
Kojto 122:f9eeca106725 314 if (HAL_IS_BIT_CLR((__HANDLE__)->AdvancedInit.AdvFeatureInit, SMARTCARD_ADVFEATURE_TXCOMPLETION)) \
Kojto 122:f9eeca106725 315 { \
Kojto 122:f9eeca106725 316 (__HANDLE__)->AdvancedInit.TxCompletionIndication = SMARTCARD_TC; \
Kojto 122:f9eeca106725 317 } \
Kojto 122:f9eeca106725 318 else \
Kojto 122:f9eeca106725 319 { \
Kojto 122:f9eeca106725 320 assert_param(IS_SMARTCARD_TRANSMISSION_COMPLETION((__HANDLE__)->AdvancedInit.TxCompletionIndication)); \
Kojto 122:f9eeca106725 321 } \
Kojto 122:f9eeca106725 322 } while(0)
Kojto 122:f9eeca106725 323 #endif
Kojto 122:f9eeca106725 324
Kojto 122:f9eeca106725 325 /** @brief Return the transmission completion flag.
Kojto 122:f9eeca106725 326 * @param __HANDLE__: specifies the SMARTCARD Handle.
Kojto 122:f9eeca106725 327 * @note Based on AdvancedInit.TxCompletionIndication setting, return TC or TCBGT flag.
Kojto 122:f9eeca106725 328 * When TCBGT flag (Transmission Complete Before Guard Time) is not available, TC flag is
Kojto 122:f9eeca106725 329 * reported.
Kojto 122:f9eeca106725 330 * @retval Transmission completion flag
Kojto 122:f9eeca106725 331 */
Kojto 122:f9eeca106725 332 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx)
Kojto 122:f9eeca106725 333 #define SMARTCARD_TRANSMISSION_COMPLETION_FLAG(__HANDLE__) (SMARTCARD_FLAG_TC)
Kojto 122:f9eeca106725 334 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx)
Kojto 122:f9eeca106725 335 #define SMARTCARD_TRANSMISSION_COMPLETION_FLAG(__HANDLE__) \
Kojto 122:f9eeca106725 336 (((__HANDLE__)->AdvancedInit.TxCompletionIndication == SMARTCARD_TC) ? (SMARTCARD_FLAG_TC) : (SMARTCARD_FLAG_TCBGT))
Kojto 122:f9eeca106725 337 #endif
Kojto 122:f9eeca106725 338
Kojto 122:f9eeca106725 339
Kojto 122:f9eeca106725 340 /**
Kojto 122:f9eeca106725 341 * @brief Ensure that SMARTCARD frame transmission completion used flag is valid.
Kojto 122:f9eeca106725 342 * @param __TXCOMPLETE__: SMARTCARD frame transmission completion used flag.
Kojto 122:f9eeca106725 343 * @retval SET (__TXCOMPLETE__ is valid) or RESET (__TXCOMPLETE__ is invalid)
Kojto 122:f9eeca106725 344 */
Kojto 122:f9eeca106725 345 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx)
Kojto 122:f9eeca106725 346 #define IS_SMARTCARD_TRANSMISSION_COMPLETION(__TXCOMPLETE__) ((__TXCOMPLETE__) == SMARTCARD_TC)
Kojto 122:f9eeca106725 347 #elif defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || defined (STM32L442xx) || defined (STM32L443xx)
Kojto 122:f9eeca106725 348 #define IS_SMARTCARD_TRANSMISSION_COMPLETION(__TXCOMPLETE__) (((__TXCOMPLETE__) == SMARTCARD_TCBGT) ||\
Kojto 122:f9eeca106725 349 ((__TXCOMPLETE__) == SMARTCARD_TC))
Kojto 122:f9eeca106725 350 #endif
Kojto 122:f9eeca106725 351
Kojto 122:f9eeca106725 352 /**
Kojto 122:f9eeca106725 353 * @}
Kojto 122:f9eeca106725 354 */
Kojto 122:f9eeca106725 355
Kojto 122:f9eeca106725 356 /* Exported functions --------------------------------------------------------*/
Kojto 122:f9eeca106725 357 /** @addtogroup SMARTCARDEx_Exported_Functions
Kojto 122:f9eeca106725 358 * @{
Kojto 122:f9eeca106725 359 */
Kojto 122:f9eeca106725 360
Kojto 122:f9eeca106725 361 /* Initialization and de-initialization functions ****************************/
Kojto 122:f9eeca106725 362 /* IO operation methods *******************************************************/
Kojto 122:f9eeca106725 363
Kojto 122:f9eeca106725 364 /** @addtogroup SMARTCARDEx_Exported_Functions_Group1
Kojto 122:f9eeca106725 365 * @{
Kojto 122:f9eeca106725 366 */
Kojto 122:f9eeca106725 367
Kojto 122:f9eeca106725 368 /* Peripheral Control functions ***********************************************/
Kojto 122:f9eeca106725 369 void HAL_SMARTCARDEx_BlockLength_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t BlockLength);
Kojto 122:f9eeca106725 370 void HAL_SMARTCARDEx_TimeOut_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t TimeOutValue);
Kojto 122:f9eeca106725 371 HAL_StatusTypeDef HAL_SMARTCARDEx_EnableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard);
Kojto 122:f9eeca106725 372 HAL_StatusTypeDef HAL_SMARTCARDEx_DisableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard);
Kojto 122:f9eeca106725 373
Kojto 122:f9eeca106725 374 /**
Kojto 122:f9eeca106725 375 * @}
Kojto 122:f9eeca106725 376 */
Kojto 122:f9eeca106725 377
Kojto 122:f9eeca106725 378 /**
Kojto 122:f9eeca106725 379 * @}
Kojto 122:f9eeca106725 380 */
Kojto 122:f9eeca106725 381
Kojto 122:f9eeca106725 382
Kojto 122:f9eeca106725 383 /* Private functions ---------------------------------------------------------*/
Kojto 122:f9eeca106725 384
Kojto 122:f9eeca106725 385 /**
Kojto 122:f9eeca106725 386 * @}
Kojto 122:f9eeca106725 387 */
Kojto 122:f9eeca106725 388
Kojto 122:f9eeca106725 389 /**
Kojto 122:f9eeca106725 390 * @}
Kojto 122:f9eeca106725 391 */
Kojto 122:f9eeca106725 392
Kojto 122:f9eeca106725 393 #ifdef __cplusplus
Kojto 122:f9eeca106725 394 }
Kojto 122:f9eeca106725 395 #endif
Kojto 122:f9eeca106725 396
Kojto 122:f9eeca106725 397 #endif /* __STM32L4xx_HAL_SMARTCARD_EX_H */
Kojto 122:f9eeca106725 398
Kojto 122:f9eeca106725 399 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/