/** | |
****************************************************************************** | |
* @file stm32l1xx_hal_tim_ex.c | |
* @author MCD Application Team | |
* @brief TIM HAL module driver. | |
* This file provides firmware functions to manage the following | |
* functionalities of the Timer Extended peripheral: | |
* + Time Master and Slave synchronization configuration | |
* + Time OCRef clear configuration | |
* + Timer remapping capabilities configuration | |
@verbatim | |
============================================================================== | |
##### TIMER Extended features ##### | |
============================================================================== | |
[..] | |
The Timer Extended features include: | |
(#) Synchronization circuit to control the timer with external signals and to | |
interconnect several timers together. | |
@endverbatim | |
****************************************************************************** | |
* @attention | |
* | |
* <h2><center>© Copyright (c) 2016 STMicroelectronics. | |
* All rights reserved.</center></h2> | |
* | |
* This software component is licensed by ST under BSD 3-Clause license, | |
* the "License"; You may not use this file except in compliance with the | |
* License. You may obtain a copy of the License at: | |
* opensource.org/licenses/BSD-3-Clause | |
* | |
****************************************************************************** | |
*/ | |
/* Includes ------------------------------------------------------------------*/ | |
#include "stm32l1xx_hal.h" | |
/** @addtogroup STM32L1xx_HAL_Driver | |
* @{ | |
*/ | |
/** @defgroup TIMEx TIMEx | |
* @brief TIM Extended HAL module driver | |
* @{ | |
*/ | |
#ifdef HAL_TIM_MODULE_ENABLED | |
/* Private typedef -----------------------------------------------------------*/ | |
/* Private define ------------------------------------------------------------*/ | |
/* Private macro -------------------------------------------------------------*/ | |
/* Private variables ---------------------------------------------------------*/ | |
/* Private function prototypes -----------------------------------------------*/ | |
/* Exported functions --------------------------------------------------------*/ | |
/** @defgroup TIMEx_Exported_Functions TIM Extended Exported Functions | |
* @{ | |
*/ | |
/** @defgroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions | |
* @brief Peripheral Control functions | |
* | |
@verbatim | |
============================================================================== | |
##### Peripheral Control functions ##### | |
============================================================================== | |
[..] | |
This section provides functions allowing to: | |
(+) Configure Master synchronization. | |
(+) Configure timer remapping capabilities. | |
@endverbatim | |
* @{ | |
*/ | |
/** | |
* @brief Configures the TIM in master mode. | |
* @param htim TIM handle. | |
* @param sMasterConfig pointer to a TIM_MasterConfigTypeDef structure that | |
* contains the selected trigger output (TRGO) and the Master/Slave | |
* mode. | |
* @retval HAL status | |
*/ | |
HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, | |
TIM_MasterConfigTypeDef *sMasterConfig) | |
{ | |
uint32_t tmpcr2; | |
uint32_t tmpsmcr; | |
/* Check the parameters */ | |
assert_param(IS_TIM_SYNCHRO_INSTANCE(htim->Instance)); | |
assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); | |
assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); | |
/* Check input state */ | |
__HAL_LOCK(htim); | |
/* Change the handler state */ | |
htim->State = HAL_TIM_STATE_BUSY; | |
/* Get the TIMx CR2 register value */ | |
tmpcr2 = htim->Instance->CR2; | |
/* Get the TIMx SMCR register value */ | |
tmpsmcr = htim->Instance->SMCR; | |
/* Reset the MMS Bits */ | |
tmpcr2 &= ~TIM_CR2_MMS; | |
/* Select the TRGO source */ | |
tmpcr2 |= sMasterConfig->MasterOutputTrigger; | |
/* Reset the MSM Bit */ | |
tmpsmcr &= ~TIM_SMCR_MSM; | |
/* Set master mode */ | |
tmpsmcr |= sMasterConfig->MasterSlaveMode; | |
/* Update TIMx CR2 */ | |
htim->Instance->CR2 = tmpcr2; | |
/* Update TIMx SMCR */ | |
htim->Instance->SMCR = tmpsmcr; | |
/* Change the htim state */ | |
htim->State = HAL_TIM_STATE_READY; | |
__HAL_UNLOCK(htim); | |
return HAL_OK; | |
} | |
/** | |
* @brief Configures the TIMx Remapping input capabilities. | |
* @param htim TIM handle. | |
* @param Remap specifies the TIM remapping source. | |
* | |
* For TIM2, the parameter can have the following values:(see note) | |
* @arg TIM_TIM2_ITR1_TIM10_OC: TIM2 ITR1 input is connected to TIM10 OC | |
* @arg TIM_TIM2_ITR1_TIM5_TGO: TIM2 ITR1 input is connected to TIM5 TGO | |
* | |
* For TIM3, the parameter can have the following values:(see note) | |
* @arg TIM_TIM3_ITR2_TIM11_OC: TIM3 ITR2 input is connected to TIM11 OC | |
* @arg TIM_TIM3_ITR2_TIM5_TGO: TIM3 ITR2 input is connected to TIM5 TGO | |
* | |
* For TIM9, the parameter is a combination of 2 fields (field1 | field2): | |
* | |
* field1 can have the following values:(see note) | |
* @arg TIM_TIM9_ITR1_TIM3_TGO: TIM9 ITR1 input is connected to TIM3 TGO | |
* @arg TIM_TIM9_ITR1_TS: TIM9 ITR1 input is connected to touch sensing I/O | |
* | |
* field2 can have the following values: | |
* @arg TIM_TIM9_GPIO: TIM9 Channel1 is connected to GPIO | |
* @arg TIM_TIM9_LSE: TIM9 Channel1 is connected to LSE internal clock | |
* @arg TIM_TIM9_GPIO1: TIM9 Channel1 is connected to GPIO | |
* @arg TIM_TIM9_GPIO2: TIM9 Channel1 is connected to GPIO | |
* | |
* For TIM10, the parameter is a combination of 3 fields (field1 | field2 | field3): | |
* | |
* field1 can have the following values:(see note) | |
* @arg TIM_TIM10_TI1RMP: TIM10 Channel 1 depends on TI1_RMP | |
* @arg TIM_TIM10_RI: TIM10 Channel 1 is connected to RI | |
* | |
* field2 can have the following values:(see note) | |
* @arg TIM_TIM10_ETR_LSE: TIM10 ETR input is connected to LSE clock | |
* @arg TIM_TIM10_ETR_TIM9_TGO: TIM10 ETR input is connected to TIM9 TGO | |
* | |
* field3 can have the following values: | |
* @arg TIM_TIM10_GPIO: TIM10 Channel1 is connected to GPIO | |
* @arg TIM_TIM10_LSI: TIM10 Channel1 is connected to LSI internal clock | |
* @arg TIM_TIM10_LSE: TIM10 Channel1 is connected to LSE internal clock | |
* @arg TIM_TIM10_RTC: TIM10 Channel1 is connected to RTC wakeup interrupt | |
* | |
* For TIM11, the parameter is a combination of 3 fields (field1 | field2 | field3): | |
* | |
* field1 can have the following values:(see note) | |
* @arg TIM_TIM11_TI1RMP: TIM11 Channel 1 depends on TI1_RMP | |
* @arg TIM_TIM11_RI: TIM11 Channel 1 is connected to RI | |
* | |
* field2 can have the following values:(see note) | |
* @arg TIM_TIM11_ETR_LSE: TIM11 ETR input is connected to LSE clock | |
* @arg TIM_TIM11_ETR_TIM9_TGO: TIM11 ETR input is connected to TIM9 TGO | |
* | |
* field3 can have the following values: | |
* @arg TIM_TIM11_GPIO: TIM11 Channel1 is connected to GPIO | |
* @arg TIM_TIM11_MSI: TIM11 Channel1 is connected to MSI internal clock | |
* @arg TIM_TIM11_HSE_RTC: TIM11 Channel1 is connected to HSE_RTC clock | |
* @arg TIM_TIM11_GPIO1: TIM11 Channel1 is connected to GPIO | |
* | |
* @note Available only in Cat.3, Cat.4,Cat.5 and Cat.6 devices. | |
* | |
* @retval HAL status | |
*/ | |
HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap) | |
{ | |
__HAL_LOCK(htim); | |
/* Check parameters */ | |
assert_param(IS_TIM_REMAP(htim->Instance, Remap)); | |
/* Set the Timer remapping configuration */ | |
WRITE_REG(htim->Instance->OR, Remap); | |
__HAL_UNLOCK(htim); | |
return HAL_OK; | |
} | |
/** | |
* @} | |
*/ | |
/** | |
* @} | |
*/ | |
#endif /* HAL_TIM_MODULE_ENABLED */ | |
/** | |
* @} | |
*/ | |
/** | |
* @} | |
*/ | |
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |