]> git.donarmstrong.com Git - qmk_firmware.git/blob - tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_STM/TARGET_STM32L1/stm32l1xx_hal_tim_ex.c
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
[qmk_firmware.git] / tool / mbed / mbed-sdk / libraries / mbed / targets / cmsis / TARGET_STM / TARGET_STM32L1 / stm32l1xx_hal_tim_ex.c
1 /**
2   ******************************************************************************
3   * @file    stm32l1xx_hal_tim_ex.c
4   * @author  MCD Application Team
5   * @version V1.0.0
6   * @date    5-September-2014
7   * @brief   TIM HAL module driver.
8   *          This file provides firmware functions to manage the following
9   *          functionalities of the Timer extension peripheral:
10   *           + Time Master and Slave synchronization configuration
11   *           + Timer remapping capabilities configuration
12   @verbatim
13   ==============================================================================
14                       ##### TIMER Extended features #####
15   ==============================================================================
16   [..]
17     The Timer Extension features include:
18     (#) Synchronization circuit to control the timer with external signals and to
19         interconnect several timers together.
20     (#) Timer remapping capabilities configuration
21
22   @endverbatim
23   ******************************************************************************
24   * @attention
25   *
26   * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
27   *
28   * Redistribution and use in source and binary forms, with or without modification,
29   * are permitted provided that the following conditions are met:
30   *   1. Redistributions of source code must retain the above copyright notice,
31   *      this list of conditions and the following disclaimer.
32   *   2. Redistributions in binary form must reproduce the above copyright notice,
33   *      this list of conditions and the following disclaimer in the documentation
34   *      and/or other materials provided with the distribution.
35   *   3. Neither the name of STMicroelectronics nor the names of its contributors
36   *      may be used to endorse or promote products derived from this software
37   *      without specific prior written permission.
38   *
39   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
40   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
42   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
43   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
44   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
45   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
46   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
47   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
48   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
49   *
50   ******************************************************************************
51 */
52
53 /* Includes ------------------------------------------------------------------*/
54 #include "stm32l1xx_hal.h"
55
56 /** @addtogroup STM32L1xx_HAL_Driver
57   * @{
58   */
59
60 /** @defgroup TIMEx TIMEx
61   * @brief TIM HAL module driver
62   * @{
63   */
64
65 #ifdef HAL_TIM_MODULE_ENABLED
66
67 /* Private typedef -----------------------------------------------------------*/
68 /* Private define ------------------------------------------------------------*/
69 /* Private macro -------------------------------------------------------------*/
70 /* Private variables ---------------------------------------------------------*/
71 /* Private function prototypes -----------------------------------------------*/
72 /* Private functions ---------------------------------------------------------*/
73
74 /** @defgroup TIMEx_Exported_Functions TIMEx Exported Functions
75   * @{
76   */
77
78 /** @defgroup TIMEx_Exported_Functions_Group1 Peripheral Control functions
79  *  @brief      Peripheral Control functions
80  *
81 @verbatim
82   ==============================================================================
83                     ##### Peripheral Control functions #####
84   ==============================================================================
85   [..]
86     This section provides functions allowing to:
87     (+) Configure the commutation event in case of use of the Hall sensor interface.
88       (+) Configure Complementary channels, break features and dead time.
89       (+) Configure Master synchronization.
90       (+) Configure timer remapping capabilities.
91
92 @endverbatim
93   * @{
94   */
95
96 /**
97   * @brief  Configures the TIM in master mode.
98   * @param  htim: TIM handle.
99   * @param  sMasterConfig: pointer to a TIM_MasterConfigTypeDef structure that
100   *         contains the selected trigger output (TRGO) and the Master/Slave
101   *         mode.
102   * @retval HAL status
103   */
104 HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef * sMasterConfig)
105 {
106   /* Check the parameters */
107   assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance));
108   assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
109   assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
110
111   __HAL_LOCK(htim);
112
113   htim->State = HAL_TIM_STATE_BUSY;
114
115   /* Reset the MMS Bits */
116   htim->Instance->CR2 &= ~TIM_CR2_MMS;
117   /* Select the TRGO source */
118   htim->Instance->CR2 |=  sMasterConfig->MasterOutputTrigger;
119
120   /* Reset the MSM Bit */
121   htim->Instance->SMCR &= ~TIM_SMCR_MSM;
122   /* Set or Reset the MSM Bit */
123   htim->Instance->SMCR |= sMasterConfig->MasterSlaveMode;
124
125   htim->State = HAL_TIM_STATE_READY;
126
127   __HAL_UNLOCK(htim);
128
129   return HAL_OK;
130 }
131
132 /**
133   * @brief  Configures the TIM2/TIM3/TIM9/TIM10/TIM11 Remapping input capabilities.
134   * @param  htim: TIM handle.
135   * @param  Remap: specifies the TIM remapping source.
136   *         This parameter is a combination of the following values depending on TIM instance.
137   *
138   *         For TIM2, the parameter can have the following values:
139   *            @arg TIM_TIM2_ITR1_TIM10_OC:      TIM2 ITR1 input is connected to TIM10 OC
140   *            @arg TIM_TIM2_ITR1_TIM5_TGO:      TIM2 ITR1 input is connected to TIM5 TGO
141   *
142   *         For TIM3, the parameter can have the following values:
143   *            @arg TIM_TIM3_ITR2_TIM11_OC:      TIM3 ITR2 input is connected to TIM11 OC
144   *            @arg TIM_TIM3_ITR2_TIM5_TGO:      TIM3 ITR2 input is connected to TIM5 TGO
145   *
146   *         For TIM9, the parameter is a combination of 2 fields (field1 | field2):
147   *                   field1 can have the following values:
148   *            @arg TIM_TIM9_ITR1_TIM3_TGO:      TIM9 ITR1 input is connected to TIM3 TGO
149   *            @arg TIM_TIM9_ITR1_TS:            TIM9 ITR1 input is connected to touch sensing I/O
150   *                   field2 can have the following values:
151   *            @arg TIM_TIM9_GPIO:               TIM9 Channel1 is connected to GPIO
152   *            @arg TIM_TIM9_LSE:                TIM9 Channel1 is connected to LSE internal clock
153   *            @arg TIM_TIM9_GPIO1:              TIM9 Channel1 is connected to GPIO
154   *            @arg TIM_TIM9_GPIO2:              TIM9 Channel1 is connected to GPIO
155   *
156   *         For TIM10, the parameter is a combination of 3 fields (field1 | field2 | field3):
157   *                   field1 can have the following values:
158   *            @arg TIM_TIM10_TI1RMP:            TIM10 Channel 1 depends on TI1_RMP
159   *            @arg TIM_TIM10_RI:                TIM10 Channel 1 is connected to RI
160   *                   field2 can have the following values:
161   *            @arg TIM_TIM10_ETR_LSE:           TIM10 ETR input is connected to LSE clock
162   *            @arg TIM_TIM10_ETR_TIM9_TGO:      TIM10 ETR input is connected to TIM9 TGO
163   *                   field3 can have the following values:
164   *            @arg TIM_TIM10_GPIO:              TIM10 Channel1 is connected to GPIO
165   *            @arg TIM_TIM10_LSI:               TIM10 Channel1 is connected to LSI internal clock
166   *            @arg TIM_TIM10_LSE:               TIM10 Channel1 is connected to LSE internal clock
167   *            @arg TIM_TIM10_RTC:               TIM10 Channel1 is connected to RTC wakeup interrupt
168   *
169   *         For TIM11, the parameter is a combination of 3 fields (field1 | field2 | field3):
170   *                   field1 can have the following values:
171   *            @arg TIM_TIM11_TI1RMP:            TIM11 Channel 1 depends on TI1_RMP
172   *            @arg TIM_TIM11_RI:                TIM11 Channel 1 is connected to RI
173   *                   field2 can have the following values:
174   *            @arg TIM_TIM11_ETR_LSE:           TIM11 ETR input is connected to LSE clock
175   *            @arg TIM_TIM11_ETR_TIM9_TGO:      TIM11 ETR input is connected to TIM9 TGO 
176   *                   field3 can have the following values:
177   *            @arg TIM_TIM11_GPIO:     TIM11 Channel1 is connected to GPIO           
178   *            @arg TIM_TIM11_MSI:      TIM11 Channel1 is connected to MSI internal clock
179   *            @arg TIM_TIM11_HSE_RTC:  TIM11 Channel1 is connected to HSE_RTC clock
180   *            @arg TIM_TIM11_GPIO1:    TIM11 Channel1 is connected to GPIO
181   *
182   * @retval HAL status
183   */
184 HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap)
185 {
186   __HAL_LOCK(htim);
187
188   /* Check parameters */
189   assert_param(IS_TIM_REMAP_INSTANCE(htim->Instance));
190   assert_param(IS_TIM_REMAP(htim->Instance,Remap));
191
192   /* Set the Timer remapping configuration */
193   htim->Instance->OR = Remap;
194
195   htim->State = HAL_TIM_STATE_READY;
196
197   __HAL_UNLOCK(htim);
198
199   return HAL_OK;
200 }
201
202 /**
203   * @}
204   */
205
206 /** @defgroup TIMEx_Exported_Functions_Group2 Extension Callbacks functions
207  *  @brief   Extension Callbacks functions
208  *
209 @verbatim
210   ==============================================================================
211                     ##### Extension Callbacks functions #####
212   ==============================================================================
213   [..]
214     This section provides Extension TIM callback functions:
215     (+) Timer Commutation callback
216     (+) Timer Break callback
217
218 @endverbatim
219   * @{
220   */
221
222
223 /**
224   * @}
225   */
226
227 /** @defgroup TIMEx_Exported_Functions_Group3 Extension Peripheral State functions
228  *  @brief   Extension Peripheral State functions
229  *
230 @verbatim
231   ==============================================================================
232                 ##### Extension Peripheral State functions #####
233   ==============================================================================
234   [..]
235     This subsection permit to get in run-time the status of the peripheral
236     and the data flow.
237
238 @endverbatim
239   * @{
240   */
241
242
243 /**
244   * @}
245   */
246
247 #endif /* HAL_TIM_MODULE_ENABLED */
248 /**
249   * @}
250   */
251
252 /**
253   * @}
254   */
255
256 /**
257   * @}
258   */
259
260 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/