Initial commit
This commit is contained in:
		
							
								
								
									
										197
									
								
								Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_smartcard_ex.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										197
									
								
								Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_smartcard_ex.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,197 @@ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file    stm32f7xx_hal_smartcard_ex.c | ||||
|   * @author  MCD Application Team | ||||
|   * @brief   SMARTCARD HAL module driver. | ||||
|   *          This file provides extended firmware functions to manage the following | ||||
|   *          functionalities of the SmartCard. | ||||
|   *           + Initialization and de-initialization functions | ||||
|   *           + Peripheral Control functions | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * Copyright (c) 2017 STMicroelectronics. | ||||
|   * All rights reserved. | ||||
|   * | ||||
|   * This software is licensed under terms that can be found in the LICENSE file | ||||
|   * in the root directory of this software component. | ||||
|   * If no LICENSE file comes with this software, it is provided AS-IS. | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   @verbatim | ||||
|   ============================================================================= | ||||
|                ##### SMARTCARD peripheral extended features  ##### | ||||
|   ============================================================================= | ||||
|   [..] | ||||
|   The Extended SMARTCARD HAL driver can be used as follows: | ||||
|  | ||||
|     (#) After having configured the SMARTCARD basic features with HAL_SMARTCARD_Init(), | ||||
|         then program SMARTCARD advanced features if required (TX/RX pins swap, TimeOut, | ||||
|         auto-retry counter,...) in the hsmartcard AdvancedInit structure. | ||||
|   @endverbatim | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
|  | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| #include "stm32f7xx_hal.h" | ||||
|  | ||||
| /** @addtogroup STM32F7xx_HAL_Driver | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** @defgroup SMARTCARDEx SMARTCARDEx | ||||
|   * @brief SMARTCARD Extended HAL module driver | ||||
|   * @{ | ||||
|   */ | ||||
| #ifdef HAL_SMARTCARD_MODULE_ENABLED | ||||
|  | ||||
| /* Private typedef -----------------------------------------------------------*/ | ||||
| /* Private define ------------------------------------------------------------*/ | ||||
| /* Private macros ------------------------------------------------------------*/ | ||||
| /* Private variables ---------------------------------------------------------*/ | ||||
| /* Private function prototypes -----------------------------------------------*/ | ||||
| /* Exported functions --------------------------------------------------------*/ | ||||
| /** @defgroup SMARTCARDEx_Exported_Functions  SMARTCARD Extended Exported Functions | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** @defgroup SMARTCARDEx_Exported_Functions_Group1 Extended Peripheral Control functions | ||||
|   * @brief    Extended control functions | ||||
|   * | ||||
| @verbatim | ||||
|   =============================================================================== | ||||
|                       ##### Peripheral Control functions ##### | ||||
|   =============================================================================== | ||||
|   [..] | ||||
|   This subsection provides a set of functions allowing to initialize the SMARTCARD. | ||||
|      (+) HAL_SMARTCARDEx_BlockLength_Config() API allows to configure the Block Length on the fly | ||||
|      (+) HAL_SMARTCARDEx_TimeOut_Config() API allows to configure the receiver timeout value on the fly | ||||
|      (+) HAL_SMARTCARDEx_EnableReceiverTimeOut() API enables the receiver timeout feature | ||||
|      (+) HAL_SMARTCARDEx_DisableReceiverTimeOut() API disables the receiver timeout feature | ||||
|  | ||||
| @endverbatim | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** @brief Update on the fly the SMARTCARD block length in RTOR register. | ||||
|   * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains | ||||
|   *                    the configuration information for the specified SMARTCARD module. | ||||
|   * @param BlockLength SMARTCARD block length (8-bit long at most) | ||||
|   * @retval None | ||||
|   */ | ||||
| void HAL_SMARTCARDEx_BlockLength_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint8_t BlockLength) | ||||
| { | ||||
|   MODIFY_REG(hsmartcard->Instance->RTOR, USART_RTOR_BLEN, ((uint32_t)BlockLength << USART_RTOR_BLEN_Pos)); | ||||
| } | ||||
|  | ||||
| /** @brief Update on the fly the receiver timeout value in RTOR register. | ||||
|   * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains | ||||
|   *                    the configuration information for the specified SMARTCARD module. | ||||
|   * @param TimeOutValue receiver timeout value in number of baud blocks. The timeout | ||||
|   *                     value must be less or equal to 0x0FFFFFFFF. | ||||
|   * @retval None | ||||
|   */ | ||||
| void HAL_SMARTCARDEx_TimeOut_Config(SMARTCARD_HandleTypeDef *hsmartcard, uint32_t TimeOutValue) | ||||
| { | ||||
|   assert_param(IS_SMARTCARD_TIMEOUT_VALUE(hsmartcard->Init.TimeOutValue)); | ||||
|   MODIFY_REG(hsmartcard->Instance->RTOR, USART_RTOR_RTO, TimeOutValue); | ||||
| } | ||||
|  | ||||
| /** @brief Enable the SMARTCARD receiver timeout feature. | ||||
|   * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains | ||||
|   *                    the configuration information for the specified SMARTCARD module. | ||||
|   * @retval HAL status | ||||
|   */ | ||||
| HAL_StatusTypeDef HAL_SMARTCARDEx_EnableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard) | ||||
| { | ||||
|   if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) | ||||
|   { | ||||
|     /* Process Locked */ | ||||
|     __HAL_LOCK(hsmartcard); | ||||
|  | ||||
|     hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; | ||||
|  | ||||
|     /* Set the USART RTOEN bit */ | ||||
|     SET_BIT(hsmartcard->Instance->CR2, USART_CR2_RTOEN); | ||||
|  | ||||
|     hsmartcard->gState = HAL_SMARTCARD_STATE_READY; | ||||
|  | ||||
|     /* Process Unlocked */ | ||||
|     __HAL_UNLOCK(hsmartcard); | ||||
|  | ||||
|     return HAL_OK; | ||||
|   } | ||||
|   else | ||||
|   { | ||||
|     return HAL_BUSY; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** @brief Disable the SMARTCARD receiver timeout feature. | ||||
|   * @param hsmartcard Pointer to a SMARTCARD_HandleTypeDef structure that contains | ||||
|   *                    the configuration information for the specified SMARTCARD module. | ||||
|   * @retval HAL status | ||||
|   */ | ||||
| HAL_StatusTypeDef HAL_SMARTCARDEx_DisableReceiverTimeOut(SMARTCARD_HandleTypeDef *hsmartcard) | ||||
| { | ||||
|   if (hsmartcard->gState == HAL_SMARTCARD_STATE_READY) | ||||
|   { | ||||
|     /* Process Locked */ | ||||
|     __HAL_LOCK(hsmartcard); | ||||
|  | ||||
|     hsmartcard->gState = HAL_SMARTCARD_STATE_BUSY; | ||||
|  | ||||
|     /* Clear the USART RTOEN bit */ | ||||
|     CLEAR_BIT(hsmartcard->Instance->CR2, USART_CR2_RTOEN); | ||||
|  | ||||
|     hsmartcard->gState = HAL_SMARTCARD_STATE_READY; | ||||
|  | ||||
|     /* Process Unlocked */ | ||||
|     __HAL_UNLOCK(hsmartcard); | ||||
|  | ||||
|     return HAL_OK; | ||||
|   } | ||||
|   else | ||||
|   { | ||||
|     return HAL_BUSY; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup SMARTCARDEx_Exported_Functions_Group2 Extended Peripheral IO operation functions | ||||
|   * @brief   SMARTCARD Transmit and Receive functions | ||||
|   * | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup SMARTCARDEx_Private_Functions  SMARTCARD Extended Private Functions | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| #endif /* HAL_SMARTCARD_MODULE_ENABLED */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
		Reference in New Issue
	
	Block a user