]> git.gir.st - tmk_keyboard.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
[tmk_keyboard.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****/
Imprint / Impressum