comparison Common/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_tim.h @ 160:e3ca52b8e7fa

Merge with FlipDisplay
author heinrichsweikamp
date Thu, 07 Mar 2019 15:06:43 +0100
parents c78bcbd5deda
children
comparison
equal deleted inserted replaced
80:cc2bb7bb8456 160:e3ca52b8e7fa
1 /**
2 ******************************************************************************
3 * @file stm32f4xx_ll_tim.h
4 * @author MCD Application Team
5 * @brief Header file of TIM LL module.
6 ******************************************************************************
7 * @attention
8 *
9 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
10 *
11 * Redistribution and use in source and binary forms, with or without modification,
12 * are permitted provided that the following conditions are met:
13 * 1. Redistributions of source code must retain the above copyright notice,
14 * this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright notice,
16 * this list of conditions and the following disclaimer in the documentation
17 * and/or other materials provided with the distribution.
18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 *
33 ******************************************************************************
34 */
35
36 /* Define to prevent recursive inclusion -------------------------------------*/
37 #ifndef __STM32F4xx_LL_TIM_H
38 #define __STM32F4xx_LL_TIM_H
39
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43
44 /* Includes ------------------------------------------------------------------*/
45 #include "stm32f4xx.h"
46
47 /** @addtogroup STM32F4xx_LL_Driver
48 * @{
49 */
50
51 #if defined (TIM1) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM5) || defined (TIM6) || defined (TIM7) || defined (TIM8) || defined (TIM9) || defined (TIM10) || defined (TIM11) || defined (TIM12) || defined (TIM13) || defined (TIM14)
52
53 /** @defgroup TIM_LL TIM
54 * @{
55 */
56
57 /* Private types -------------------------------------------------------------*/
58 /* Private variables ---------------------------------------------------------*/
59 /** @defgroup TIM_LL_Private_Variables TIM Private Variables
60 * @{
61 */
62 static const uint8_t OFFSET_TAB_CCMRx[] =
63 {
64 0x00U, /* 0: TIMx_CH1 */
65 0x00U, /* 1: TIMx_CH1N */
66 0x00U, /* 2: TIMx_CH2 */
67 0x00U, /* 3: TIMx_CH2N */
68 0x04U, /* 4: TIMx_CH3 */
69 0x04U, /* 5: TIMx_CH3N */
70 0x04U /* 6: TIMx_CH4 */
71 };
72
73 static const uint8_t SHIFT_TAB_OCxx[] =
74 {
75 0U, /* 0: OC1M, OC1FE, OC1PE */
76 0U, /* 1: - NA */
77 8U, /* 2: OC2M, OC2FE, OC2PE */
78 0U, /* 3: - NA */
79 0U, /* 4: OC3M, OC3FE, OC3PE */
80 0U, /* 5: - NA */
81 8U /* 6: OC4M, OC4FE, OC4PE */
82 };
83
84 static const uint8_t SHIFT_TAB_ICxx[] =
85 {
86 0U, /* 0: CC1S, IC1PSC, IC1F */
87 0U, /* 1: - NA */
88 8U, /* 2: CC2S, IC2PSC, IC2F */
89 0U, /* 3: - NA */
90 0U, /* 4: CC3S, IC3PSC, IC3F */
91 0U, /* 5: - NA */
92 8U /* 6: CC4S, IC4PSC, IC4F */
93 };
94
95 static const uint8_t SHIFT_TAB_CCxP[] =
96 {
97 0U, /* 0: CC1P */
98 2U, /* 1: CC1NP */
99 4U, /* 2: CC2P */
100 6U, /* 3: CC2NP */
101 8U, /* 4: CC3P */
102 10U, /* 5: CC3NP */
103 12U /* 6: CC4P */
104 };
105
106 static const uint8_t SHIFT_TAB_OISx[] =
107 {
108 0U, /* 0: OIS1 */
109 1U, /* 1: OIS1N */
110 2U, /* 2: OIS2 */
111 3U, /* 3: OIS2N */
112 4U, /* 4: OIS3 */
113 5U, /* 5: OIS3N */
114 6U /* 6: OIS4 */
115 };
116 /**
117 * @}
118 */
119
120
121 /* Private constants ---------------------------------------------------------*/
122 /** @defgroup TIM_LL_Private_Constants TIM Private Constants
123 * @{
124 */
125
126
127 /* Remap mask definitions */
128 #define TIMx_OR_RMP_SHIFT 16U
129 #define TIMx_OR_RMP_MASK 0x0000FFFFU
130 #define TIM2_OR_RMP_MASK (TIM_OR_ITR1_RMP << TIMx_OR_RMP_SHIFT)
131 #define TIM5_OR_RMP_MASK (TIM_OR_TI4_RMP << TIMx_OR_RMP_SHIFT)
132 #define TIM11_OR_RMP_MASK (TIM_OR_TI1_RMP << TIMx_OR_RMP_SHIFT)
133
134 /* Mask used to set the TDG[x:0] of the DTG bits of the TIMx_BDTR register */
135 #define DT_DELAY_1 ((uint8_t)0x7FU)
136 #define DT_DELAY_2 ((uint8_t)0x3FU)
137 #define DT_DELAY_3 ((uint8_t)0x1FU)
138 #define DT_DELAY_4 ((uint8_t)0x1FU)
139
140 /* Mask used to set the DTG[7:5] bits of the DTG bits of the TIMx_BDTR register */
141 #define DT_RANGE_1 ((uint8_t)0x00U)
142 #define DT_RANGE_2 ((uint8_t)0x80U)
143 #define DT_RANGE_3 ((uint8_t)0xC0U)
144 #define DT_RANGE_4 ((uint8_t)0xE0U)
145
146
147 /**
148 * @}
149 */
150
151 /* Private macros ------------------------------------------------------------*/
152 /** @defgroup TIM_LL_Private_Macros TIM Private Macros
153 * @{
154 */
155 /** @brief Convert channel id into channel index.
156 * @param __CHANNEL__ This parameter can be one of the following values:
157 * @arg @ref LL_TIM_CHANNEL_CH1
158 * @arg @ref LL_TIM_CHANNEL_CH1N
159 * @arg @ref LL_TIM_CHANNEL_CH2
160 * @arg @ref LL_TIM_CHANNEL_CH2N
161 * @arg @ref LL_TIM_CHANNEL_CH3
162 * @arg @ref LL_TIM_CHANNEL_CH3N
163 * @arg @ref LL_TIM_CHANNEL_CH4
164 * @retval none
165 */
166 #define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \
167 (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\
168 ((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\
169 ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\
170 ((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\
171 ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\
172 ((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U : 6U)
173
174 /** @brief Calculate the deadtime sampling period(in ps).
175 * @param __TIMCLK__ timer input clock frequency (in Hz).
176 * @param __CKD__ This parameter can be one of the following values:
177 * @arg @ref LL_TIM_CLOCKDIVISION_DIV1
178 * @arg @ref LL_TIM_CLOCKDIVISION_DIV2
179 * @arg @ref LL_TIM_CLOCKDIVISION_DIV4
180 * @retval none
181 */
182 #define TIM_CALC_DTS(__TIMCLK__, __CKD__) \
183 (((__CKD__) == LL_TIM_CLOCKDIVISION_DIV1) ? ((uint64_t)1000000000000U/(__TIMCLK__)) : \
184 ((__CKD__) == LL_TIM_CLOCKDIVISION_DIV2) ? ((uint64_t)1000000000000U/((__TIMCLK__) >> 1U)) : \
185 ((uint64_t)1000000000000U/((__TIMCLK__) >> 2U)))
186 /**
187 * @}
188 */
189
190
191 /* Exported types ------------------------------------------------------------*/
192 #if defined(USE_FULL_LL_DRIVER)
193 /** @defgroup TIM_LL_ES_INIT TIM Exported Init structure
194 * @{
195 */
196
197 /**
198 * @brief TIM Time Base configuration structure definition.
199 */
200 typedef struct
201 {
202 uint16_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock.
203 This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
204
205 This feature can be modified afterwards using unitary function @ref LL_TIM_SetPrescaler().*/
206
207 uint32_t CounterMode; /*!< Specifies the counter mode.
208 This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE.
209
210 This feature can be modified afterwards using unitary function @ref LL_TIM_SetCounterMode().*/
211
212 uint32_t Autoreload; /*!< Specifies the auto reload value to be loaded into the active
213 Auto-Reload Register at the next update event.
214 This parameter must be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
215 Some timer instances may support 32 bits counters. In that case this parameter must be a number between 0x0000 and 0xFFFFFFFF.
216
217 This feature can be modified afterwards using unitary function @ref LL_TIM_SetAutoReload().*/
218
219 uint32_t ClockDivision; /*!< Specifies the clock division.
220 This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION.
221
222 This feature can be modified afterwards using unitary function @ref LL_TIM_SetClockDivision().*/
223
224 uint8_t RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter
225 reaches zero, an update event is generated and counting restarts
226 from the RCR value (N).
227 This means in PWM mode that (N+1) corresponds to:
228 - the number of PWM periods in edge-aligned mode
229 - the number of half PWM period in center-aligned mode
230 This parameter must be a number between 0x00 and 0xFF.
231
232 This feature can be modified afterwards using unitary function @ref LL_TIM_SetRepetitionCounter().*/
233 } LL_TIM_InitTypeDef;
234
235 /**
236 * @brief TIM Output Compare configuration structure definition.
237 */
238 typedef struct
239 {
240 uint32_t OCMode; /*!< Specifies the output mode.
241 This parameter can be a value of @ref TIM_LL_EC_OCMODE.
242
243 This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetMode().*/
244
245 uint32_t OCState; /*!< Specifies the TIM Output Compare state.
246 This parameter can be a value of @ref TIM_LL_EC_OCSTATE.
247
248 This feature can be modified afterwards using unitary functions @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/
249
250 uint32_t OCNState; /*!< Specifies the TIM complementary Output Compare state.
251 This parameter can be a value of @ref TIM_LL_EC_OCSTATE.
252
253 This feature can be modified afterwards using unitary functions @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/
254
255 uint32_t CompareValue; /*!< Specifies the Compare value to be loaded into the Capture Compare Register.
256 This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
257
258 This feature can be modified afterwards using unitary function LL_TIM_OC_SetCompareCHx (x=1..6).*/
259
260 uint32_t OCPolarity; /*!< Specifies the output polarity.
261 This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY.
262
263 This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetPolarity().*/
264
265 uint32_t OCNPolarity; /*!< Specifies the complementary output polarity.
266 This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY.
267
268 This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetPolarity().*/
269
270
271 uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state.
272 This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE.
273
274 This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetIdleState().*/
275
276 uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state.
277 This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE.
278
279 This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetIdleState().*/
280 } LL_TIM_OC_InitTypeDef;
281
282 /**
283 * @brief TIM Input Capture configuration structure definition.
284 */
285
286 typedef struct
287 {
288
289 uint32_t ICPolarity; /*!< Specifies the active edge of the input signal.
290 This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
291
292 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/
293
294 uint32_t ICActiveInput; /*!< Specifies the input.
295 This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
296
297 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/
298
299 uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler.
300 This parameter can be a value of @ref TIM_LL_EC_ICPSC.
301
302 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/
303
304 uint32_t ICFilter; /*!< Specifies the input capture filter.
305 This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
306
307 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/
308 } LL_TIM_IC_InitTypeDef;
309
310
311 /**
312 * @brief TIM Encoder interface configuration structure definition.
313 */
314 typedef struct
315 {
316 uint32_t EncoderMode; /*!< Specifies the encoder resolution (x2 or x4).
317 This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE.
318
319 This feature can be modified afterwards using unitary function @ref LL_TIM_SetEncoderMode().*/
320
321 uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input.
322 This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
323
324 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/
325
326 uint32_t IC1ActiveInput; /*!< Specifies the TI1 input source
327 This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
328
329 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/
330
331 uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value.
332 This parameter can be a value of @ref TIM_LL_EC_ICPSC.
333
334 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/
335
336 uint32_t IC1Filter; /*!< Specifies the TI1 input filter.
337 This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
338
339 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/
340
341 uint32_t IC2Polarity; /*!< Specifies the active edge of TI2 input.
342 This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
343
344 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/
345
346 uint32_t IC2ActiveInput; /*!< Specifies the TI2 input source
347 This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
348
349 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/
350
351 uint32_t IC2Prescaler; /*!< Specifies the TI2 input prescaler value.
352 This parameter can be a value of @ref TIM_LL_EC_ICPSC.
353
354 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/
355
356 uint32_t IC2Filter; /*!< Specifies the TI2 input filter.
357 This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
358
359 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/
360
361 } LL_TIM_ENCODER_InitTypeDef;
362
363 /**
364 * @brief TIM Hall sensor interface configuration structure definition.
365 */
366 typedef struct
367 {
368
369 uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input.
370 This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
371
372 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/
373
374 uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value.
375 Prescaler must be set to get a maximum counter period longer than the
376 time interval between 2 consecutive changes on the Hall inputs.
377 This parameter can be a value of @ref TIM_LL_EC_ICPSC.
378
379 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/
380
381 uint32_t IC1Filter; /*!< Specifies the TI1 input filter.
382 This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
383
384 This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/
385
386 uint32_t CommutationDelay; /*!< Specifies the compare value to be loaded into the Capture Compare Register.
387 A positive pulse (TRGO event) is generated with a programmable delay every time
388 a change occurs on the Hall inputs.
389 This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF.
390
391 This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetCompareCH2().*/
392 } LL_TIM_HALLSENSOR_InitTypeDef;
393
394 /**
395 * @brief BDTR (Break and Dead Time) structure definition
396 */
397 typedef struct
398 {
399 uint32_t OSSRState; /*!< Specifies the Off-State selection used in Run mode.
400 This parameter can be a value of @ref TIM_LL_EC_OSSR
401
402 This feature can be modified afterwards using unitary function @ref LL_TIM_SetOffStates()
403
404 @note This bit-field cannot be modified as long as LOCK level 2 has been programmed. */
405
406 uint32_t OSSIState; /*!< Specifies the Off-State used in Idle state.
407 This parameter can be a value of @ref TIM_LL_EC_OSSI
408
409 This feature can be modified afterwards using unitary function @ref LL_TIM_SetOffStates()
410
411 @note This bit-field cannot be modified as long as LOCK level 2 has been programmed. */
412
413 uint32_t LockLevel; /*!< Specifies the LOCK level parameters.
414 This parameter can be a value of @ref TIM_LL_EC_LOCKLEVEL
415
416 @note The LOCK bits can be written only once after the reset. Once the TIMx_BDTR register
417 has been written, their content is frozen until the next reset.*/
418
419 uint8_t DeadTime; /*!< Specifies the delay time between the switching-off and the
420 switching-on of the outputs.
421 This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF.
422
423 This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetDeadTime()
424
425 @note This bit-field can not be modified as long as LOCK level 1, 2 or 3 has been programmed. */
426
427 uint16_t BreakState; /*!< Specifies whether the TIM Break input is enabled or not.
428 This parameter can be a value of @ref TIM_LL_EC_BREAK_ENABLE
429
430 This feature can be modified afterwards using unitary functions @ref LL_TIM_EnableBRK() or @ref LL_TIM_DisableBRK()
431
432 @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */
433
434 uint32_t BreakPolarity; /*!< Specifies the TIM Break Input pin polarity.
435 This parameter can be a value of @ref TIM_LL_EC_BREAK_POLARITY
436
437 This feature can be modified afterwards using unitary function @ref LL_TIM_ConfigBRK()
438
439 @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */
440
441 uint32_t AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled or not.
442 This parameter can be a value of @ref TIM_LL_EC_AUTOMATICOUTPUT_ENABLE
443
444 This feature can be modified afterwards using unitary functions @ref LL_TIM_EnableAutomaticOutput() or @ref LL_TIM_DisableAutomaticOutput()
445
446 @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */
447 } LL_TIM_BDTR_InitTypeDef;
448
449 /**
450 * @}
451 */
452 #endif /* USE_FULL_LL_DRIVER */
453
454 /* Exported constants --------------------------------------------------------*/
455 /** @defgroup TIM_LL_Exported_Constants TIM Exported Constants
456 * @{
457 */
458
459 /** @defgroup TIM_LL_EC_GET_FLAG Get Flags Defines
460 * @brief Flags defines which can be used with LL_TIM_ReadReg function.
461 * @{
462 */
463 #define LL_TIM_SR_UIF TIM_SR_UIF /*!< Update interrupt flag */
464 #define LL_TIM_SR_CC1IF TIM_SR_CC1IF /*!< Capture/compare 1 interrupt flag */
465 #define LL_TIM_SR_CC2IF TIM_SR_CC2IF /*!< Capture/compare 2 interrupt flag */
466 #define LL_TIM_SR_CC3IF TIM_SR_CC3IF /*!< Capture/compare 3 interrupt flag */
467 #define LL_TIM_SR_CC4IF TIM_SR_CC4IF /*!< Capture/compare 4 interrupt flag */
468 #define LL_TIM_SR_COMIF TIM_SR_COMIF /*!< COM interrupt flag */
469 #define LL_TIM_SR_TIF TIM_SR_TIF /*!< Trigger interrupt flag */
470 #define LL_TIM_SR_BIF TIM_SR_BIF /*!< Break interrupt flag */
471 #define LL_TIM_SR_CC1OF TIM_SR_CC1OF /*!< Capture/Compare 1 overcapture flag */
472 #define LL_TIM_SR_CC2OF TIM_SR_CC2OF /*!< Capture/Compare 2 overcapture flag */
473 #define LL_TIM_SR_CC3OF TIM_SR_CC3OF /*!< Capture/Compare 3 overcapture flag */
474 #define LL_TIM_SR_CC4OF TIM_SR_CC4OF /*!< Capture/Compare 4 overcapture flag */
475 /**
476 * @}
477 */
478
479 #if defined(USE_FULL_LL_DRIVER)
480 /** @defgroup TIM_LL_EC_BREAK_ENABLE Break Enable
481 * @{
482 */
483 #define LL_TIM_BREAK_DISABLE 0x00000000U /*!< Break function disabled */
484 #define LL_TIM_BREAK_ENABLE TIM_BDTR_BKE /*!< Break function enabled */
485 /**
486 * @}
487 */
488
489 /** @defgroup TIM_LL_EC_AUTOMATICOUTPUT_ENABLE Automatic output enable
490 * @{
491 */
492 #define LL_TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U /*!< MOE can be set only by software */
493 #define LL_TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE /*!< MOE can be set by software or automatically at the next update event */
494 /**
495 * @}
496 */
497 #endif /* USE_FULL_LL_DRIVER */
498
499 /** @defgroup TIM_LL_EC_IT IT Defines
500 * @brief IT defines which can be used with LL_TIM_ReadReg and LL_TIM_WriteReg functions.
501 * @{
502 */
503 #define LL_TIM_DIER_UIE TIM_DIER_UIE /*!< Update interrupt enable */
504 #define LL_TIM_DIER_CC1IE TIM_DIER_CC1IE /*!< Capture/compare 1 interrupt enable */
505 #define LL_TIM_DIER_CC2IE TIM_DIER_CC2IE /*!< Capture/compare 2 interrupt enable */
506 #define LL_TIM_DIER_CC3IE TIM_DIER_CC3IE /*!< Capture/compare 3 interrupt enable */
507 #define LL_TIM_DIER_CC4IE TIM_DIER_CC4IE /*!< Capture/compare 4 interrupt enable */
508 #define LL_TIM_DIER_COMIE TIM_DIER_COMIE /*!< COM interrupt enable */
509 #define LL_TIM_DIER_TIE TIM_DIER_TIE /*!< Trigger interrupt enable */
510 #define LL_TIM_DIER_BIE TIM_DIER_BIE /*!< Break interrupt enable */
511 /**
512 * @}
513 */
514
515 /** @defgroup TIM_LL_EC_UPDATESOURCE Update Source
516 * @{
517 */
518 #define LL_TIM_UPDATESOURCE_REGULAR 0x00000000U /*!< Counter overflow/underflow, Setting the UG bit or Update generation through the slave mode controller generates an update request */
519 #define LL_TIM_UPDATESOURCE_COUNTER TIM_CR1_URS /*!< Only counter overflow/underflow generates an update request */
520 /**
521 * @}
522 */
523
524 /** @defgroup TIM_LL_EC_ONEPULSEMODE One Pulse Mode
525 * @{
526 */
527 #define LL_TIM_ONEPULSEMODE_SINGLE TIM_CR1_OPM /*!< Counter is not stopped at update event */
528 #define LL_TIM_ONEPULSEMODE_REPETITIVE 0x00000000U /*!< Counter stops counting at the next update event */
529 /**
530 * @}
531 */
532
533 /** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode
534 * @{
535 */
536 #define LL_TIM_COUNTERMODE_UP 0x00000000U /*!<Counter used as upcounter */
537 #define LL_TIM_COUNTERMODE_DOWN TIM_CR1_DIR /*!< Counter used as downcounter */
538 #define LL_TIM_COUNTERMODE_CENTER_UP TIM_CR1_CMS_0 /*!< The counter counts up and down alternatively. Output compare interrupt flags of output channels are set only when the counter is counting down. */
539 #define LL_TIM_COUNTERMODE_CENTER_DOWN TIM_CR1_CMS_1 /*!<The counter counts up and down alternatively. Output compare interrupt flags of output channels are set only when the counter is counting up */
540 #define LL_TIM_COUNTERMODE_CENTER_UP_DOWN TIM_CR1_CMS /*!< The counter counts up and down alternatively. Output compare interrupt flags of output channels are set only when the counter is counting up or down. */
541 /**
542 * @}
543 */
544
545 /** @defgroup TIM_LL_EC_CLOCKDIVISION Clock Division
546 * @{
547 */
548 #define LL_TIM_CLOCKDIVISION_DIV1 0x00000000U /*!< tDTS=tCK_INT */
549 #define LL_TIM_CLOCKDIVISION_DIV2 TIM_CR1_CKD_0 /*!< tDTS=2*tCK_INT */
550 #define LL_TIM_CLOCKDIVISION_DIV4 TIM_CR1_CKD_1 /*!< tDTS=4*tCK_INT */
551 /**
552 * @}
553 */
554
555 /** @defgroup TIM_LL_EC_COUNTERDIRECTION Counter Direction
556 * @{
557 */
558 #define LL_TIM_COUNTERDIRECTION_UP 0x00000000U /*!< Timer counter counts up */
559 #define LL_TIM_COUNTERDIRECTION_DOWN TIM_CR1_DIR /*!< Timer counter counts down */
560 /**
561 * @}
562 */
563
564 /** @defgroup TIM_LL_EC_CCUPDATESOURCE Capture Compare Update Source
565 * @{
566 */
567 #define LL_TIM_CCUPDATESOURCE_COMG_ONLY 0x00000000U /*!< Capture/compare control bits are updated by setting the COMG bit only */
568 #define LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI TIM_CR2_CCUS /*!< Capture/compare control bits are updated by setting the COMG bit or when a rising edge occurs on trigger input (TRGI) */
569 /**
570 * @}
571 */
572
573 /** @defgroup TIM_LL_EC_CCDMAREQUEST Capture Compare DMA Request
574 * @{
575 */
576 #define LL_TIM_CCDMAREQUEST_CC 0x00000000U /*!< CCx DMA request sent when CCx event occurs */
577 #define LL_TIM_CCDMAREQUEST_UPDATE TIM_CR2_CCDS /*!< CCx DMA requests sent when update event occurs */
578 /**
579 * @}
580 */
581
582 /** @defgroup TIM_LL_EC_LOCKLEVEL Lock Level
583 * @{
584 */
585 #define LL_TIM_LOCKLEVEL_OFF 0x00000000U /*!< LOCK OFF - No bit is write protected */
586 #define LL_TIM_LOCKLEVEL_1 TIM_BDTR_LOCK_0 /*!< LOCK Level 1 */
587 #define LL_TIM_LOCKLEVEL_2 TIM_BDTR_LOCK_1 /*!< LOCK Level 2 */
588 #define LL_TIM_LOCKLEVEL_3 TIM_BDTR_LOCK /*!< LOCK Level 3 */
589 /**
590 * @}
591 */
592
593 /** @defgroup TIM_LL_EC_CHANNEL Channel
594 * @{
595 */
596 #define LL_TIM_CHANNEL_CH1 TIM_CCER_CC1E /*!< Timer input/output channel 1 */
597 #define LL_TIM_CHANNEL_CH1N TIM_CCER_CC1NE /*!< Timer complementary output channel 1 */
598 #define LL_TIM_CHANNEL_CH2 TIM_CCER_CC2E /*!< Timer input/output channel 2 */
599 #define LL_TIM_CHANNEL_CH2N TIM_CCER_CC2NE /*!< Timer complementary output channel 2 */
600 #define LL_TIM_CHANNEL_CH3 TIM_CCER_CC3E /*!< Timer input/output channel 3 */
601 #define LL_TIM_CHANNEL_CH3N TIM_CCER_CC3NE /*!< Timer complementary output channel 3 */
602 #define LL_TIM_CHANNEL_CH4 TIM_CCER_CC4E /*!< Timer input/output channel 4 */
603 /**
604 * @}
605 */
606
607 #if defined(USE_FULL_LL_DRIVER)
608 /** @defgroup TIM_LL_EC_OCSTATE Output Configuration State
609 * @{
610 */
611 #define LL_TIM_OCSTATE_DISABLE 0x00000000U /*!< OCx is not active */
612 #define LL_TIM_OCSTATE_ENABLE TIM_CCER_CC1E /*!< OCx signal is output on the corresponding output pin */
613 /**
614 * @}
615 */
616 #endif /* USE_FULL_LL_DRIVER */
617
618 /** @defgroup TIM_LL_EC_OCMODE Output Configuration Mode
619 * @{
620 */
621 #define LL_TIM_OCMODE_FROZEN 0x00000000U /*!<The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the output channel level */
622 #define LL_TIM_OCMODE_ACTIVE TIM_CCMR1_OC1M_0 /*!<OCyREF is forced high on compare match*/
623 #define LL_TIM_OCMODE_INACTIVE TIM_CCMR1_OC1M_1 /*!<OCyREF is forced low on compare match*/
624 #define LL_TIM_OCMODE_TOGGLE (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!<OCyREF toggles on compare match*/
625 #define LL_TIM_OCMODE_FORCED_INACTIVE TIM_CCMR1_OC1M_2 /*!<OCyREF is forced low*/
626 #define LL_TIM_OCMODE_FORCED_ACTIVE (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0) /*!<OCyREF is forced high*/
627 #define LL_TIM_OCMODE_PWM1 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1) /*!<In upcounting, channel y is active as long as TIMx_CNT<TIMx_CCRy else inactive. In downcounting, channel y is inactive as long as TIMx_CNT>TIMx_CCRy else active.*/
628 #define LL_TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!<In upcounting, channel y is inactive as long as TIMx_CNT<TIMx_CCRy else active. In downcounting, channel y is active as long as TIMx_CNT>TIMx_CCRy else inactive*/
629 /**
630 * @}
631 */
632
633 /** @defgroup TIM_LL_EC_OCPOLARITY Output Configuration Polarity
634 * @{
635 */
636 #define LL_TIM_OCPOLARITY_HIGH 0x00000000U /*!< OCxactive high*/
637 #define LL_TIM_OCPOLARITY_LOW TIM_CCER_CC1P /*!< OCxactive low*/
638 /**
639 * @}
640 */
641
642 /** @defgroup TIM_LL_EC_OCIDLESTATE Output Configuration Idle State
643 * @{
644 */
645 #define LL_TIM_OCIDLESTATE_LOW 0x00000000U /*!<OCx=0 (after a dead-time if OC is implemented) when MOE=0*/
646 #define LL_TIM_OCIDLESTATE_HIGH TIM_CR2_OIS1 /*!<OCx=1 (after a dead-time if OC is implemented) when MOE=0*/
647 /**
648 * @}
649 */
650
651
652 /** @defgroup TIM_LL_EC_ACTIVEINPUT Active Input Selection
653 * @{
654 */
655 #define LL_TIM_ACTIVEINPUT_DIRECTTI (TIM_CCMR1_CC1S_0 << 16U) /*!< ICx is mapped on TIx */
656 #define LL_TIM_ACTIVEINPUT_INDIRECTTI (TIM_CCMR1_CC1S_1 << 16U) /*!< ICx is mapped on TIy */
657 #define LL_TIM_ACTIVEINPUT_TRC (TIM_CCMR1_CC1S << 16U) /*!< ICx is mapped on TRC */
658 /**
659 * @}
660 */
661
662 /** @defgroup TIM_LL_EC_ICPSC Input Configuration Prescaler
663 * @{
664 */
665 #define LL_TIM_ICPSC_DIV1 0x00000000U /*!< No prescaler, capture is done each time an edge is detected on the capture input */
666 #define LL_TIM_ICPSC_DIV2 (TIM_CCMR1_IC1PSC_0 << 16U) /*!< Capture is done once every 2 events */
667 #define LL_TIM_ICPSC_DIV4 (TIM_CCMR1_IC1PSC_1 << 16U) /*!< Capture is done once every 4 events */
668 #define LL_TIM_ICPSC_DIV8 (TIM_CCMR1_IC1PSC << 16U) /*!< Capture is done once every 8 events */
669 /**
670 * @}
671 */
672
673 /** @defgroup TIM_LL_EC_IC_FILTER Input Configuration Filter
674 * @{
675 */
676 #define LL_TIM_IC_FILTER_FDIV1 0x00000000U /*!< No filter, sampling is done at fDTS */
677 #define LL_TIM_IC_FILTER_FDIV1_N2 (TIM_CCMR1_IC1F_0 << 16U) /*!< fSAMPLING=fCK_INT, N=2 */
678 #define LL_TIM_IC_FILTER_FDIV1_N4 (TIM_CCMR1_IC1F_1 << 16U) /*!< fSAMPLING=fCK_INT, N=4 */
679 #define LL_TIM_IC_FILTER_FDIV1_N8 ((TIM_CCMR1_IC1F_1 | TIM_CCMR1_IC1F_0) << 16U) /*!< fSAMPLING=fCK_INT, N=8 */
680 #define LL_TIM_IC_FILTER_FDIV2_N6 (TIM_CCMR1_IC1F_2 << 16U) /*!< fSAMPLING=fDTS/2, N=6 */
681 #define LL_TIM_IC_FILTER_FDIV2_N8 ((TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_0) << 16U) /*!< fSAMPLING=fDTS/2, N=8 */
682 #define LL_TIM_IC_FILTER_FDIV4_N6 ((TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_1) << 16U) /*!< fSAMPLING=fDTS/4, N=6 */
683 #define LL_TIM_IC_FILTER_FDIV4_N8 ((TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_1 | TIM_CCMR1_IC1F_0) << 16U) /*!< fSAMPLING=fDTS/4, N=8 */
684 #define LL_TIM_IC_FILTER_FDIV8_N6 (TIM_CCMR1_IC1F_3 << 16U) /*!< fSAMPLING=fDTS/8, N=6 */
685 #define LL_TIM_IC_FILTER_FDIV8_N8 ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_0) << 16U) /*!< fSAMPLING=fDTS/8, N=8 */
686 #define LL_TIM_IC_FILTER_FDIV16_N5 ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_1) << 16U) /*!< fSAMPLING=fDTS/16, N=5 */
687 #define LL_TIM_IC_FILTER_FDIV16_N6 ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_1 | TIM_CCMR1_IC1F_0) << 16U) /*!< fSAMPLING=fDTS/16, N=6 */
688 #define LL_TIM_IC_FILTER_FDIV16_N8 ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_2) << 16U) /*!< fSAMPLING=fDTS/16, N=8 */
689 #define LL_TIM_IC_FILTER_FDIV32_N5 ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_0) << 16U) /*!< fSAMPLING=fDTS/32, N=5 */
690 #define LL_TIM_IC_FILTER_FDIV32_N6 ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_1) << 16U) /*!< fSAMPLING=fDTS/32, N=6 */
691 #define LL_TIM_IC_FILTER_FDIV32_N8 (TIM_CCMR1_IC1F << 16U) /*!< fSAMPLING=fDTS/32, N=8 */
692 /**
693 * @}
694 */
695
696 /** @defgroup TIM_LL_EC_IC_POLARITY Input Configuration Polarity
697 * @{
698 */
699 #define LL_TIM_IC_POLARITY_RISING 0x00000000U /*!< The circuit is sensitive to TIxFP1 rising edge, TIxFP1 is not inverted */
700 #define LL_TIM_IC_POLARITY_FALLING TIM_CCER_CC1P /*!< The circuit is sensitive to TIxFP1 falling edge, TIxFP1 is inverted */
701 #define LL_TIM_IC_POLARITY_BOTHEDGE (TIM_CCER_CC1P | TIM_CCER_CC1NP) /*!< The circuit is sensitive to both TIxFP1 rising and falling edges, TIxFP1 is not inverted */
702 /**
703 * @}
704 */
705
706 /** @defgroup TIM_LL_EC_CLOCKSOURCE Clock Source
707 * @{
708 */
709 #define LL_TIM_CLOCKSOURCE_INTERNAL 0x00000000U /*!< The timer is clocked by the internal clock provided from the RCC */
710 #define LL_TIM_CLOCKSOURCE_EXT_MODE1 (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< Counter counts at each rising or falling edge on a selected inpu t*/
711 #define LL_TIM_CLOCKSOURCE_EXT_MODE2 TIM_SMCR_ECE /*!< Counter counts at each rising or falling edge on the external trigger input ETR */
712 /**
713 * @}
714 */
715
716 /** @defgroup TIM_LL_EC_ENCODERMODE Encoder Mode
717 * @{
718 */
719 #define LL_TIM_ENCODERMODE_X2_TI1 TIM_SMCR_SMS_0 /*!< Encoder mode 1 - Counter counts up/down on TI2FP2 edge depending on TI1FP1 level */
720 #define LL_TIM_ENCODERMODE_X2_TI2 TIM_SMCR_SMS_1 /*!< Encoder mode 2 - Counter counts up/down on TI1FP1 edge depending on TI2FP2 level */
721 #define LL_TIM_ENCODERMODE_X4_TI12 (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input l */
722 /**
723 * @}
724 */
725
726 /** @defgroup TIM_LL_EC_TRGO Trigger Output
727 * @{
728 */
729 #define LL_TIM_TRGO_RESET 0x00000000U /*!< UG bit from the TIMx_EGR register is used as trigger output */
730 #define LL_TIM_TRGO_ENABLE TIM_CR2_MMS_0 /*!< Counter Enable signal (CNT_EN) is used as trigger output */
731 #define LL_TIM_TRGO_UPDATE TIM_CR2_MMS_1 /*!< Update event is used as trigger output */
732 #define LL_TIM_TRGO_CC1IF (TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< CC1 capture or a compare match is used as trigger output */
733 #define LL_TIM_TRGO_OC1REF TIM_CR2_MMS_2 /*!< OC1REF signal is used as trigger output */
734 #define LL_TIM_TRGO_OC2REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_0) /*!< OC2REF signal is used as trigger output */
735 #define LL_TIM_TRGO_OC3REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1) /*!< OC3REF signal is used as trigger output */
736 #define LL_TIM_TRGO_OC4REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< OC4REF signal is used as trigger output */
737 /**
738 * @}
739 */
740
741
742 /** @defgroup TIM_LL_EC_SLAVEMODE Slave Mode
743 * @{
744 */
745 #define LL_TIM_SLAVEMODE_DISABLED 0x00000000U /*!< Slave mode disabled */
746 #define LL_TIM_SLAVEMODE_RESET TIM_SMCR_SMS_2 /*!< Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter */
747 #define LL_TIM_SLAVEMODE_GATED (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0) /*!< Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high */
748 #define LL_TIM_SLAVEMODE_TRIGGER (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1) /*!< Trigger Mode - The counter starts at a rising edge of the trigger TRGI */
749 /**
750 * @}
751 */
752
753 /** @defgroup TIM_LL_EC_TS Trigger Selection
754 * @{
755 */
756 #define LL_TIM_TS_ITR0 0x00000000U /*!< Internal Trigger 0 (ITR0) is used as trigger input */
757 #define LL_TIM_TS_ITR1 TIM_SMCR_TS_0 /*!< Internal Trigger 1 (ITR1) is used as trigger input */
758 #define LL_TIM_TS_ITR2 TIM_SMCR_TS_1 /*!< Internal Trigger 2 (ITR2) is used as trigger input */
759 #define LL_TIM_TS_ITR3 (TIM_SMCR_TS_0 | TIM_SMCR_TS_1) /*!< Internal Trigger 3 (ITR3) is used as trigger input */
760 #define LL_TIM_TS_TI1F_ED TIM_SMCR_TS_2 /*!< TI1 Edge Detector (TI1F_ED) is used as trigger input */
761 #define LL_TIM_TS_TI1FP1 (TIM_SMCR_TS_2 | TIM_SMCR_TS_0) /*!< Filtered Timer Input 1 (TI1FP1) is used as trigger input */
762 #define LL_TIM_TS_TI2FP2 (TIM_SMCR_TS_2 | TIM_SMCR_TS_1) /*!< Filtered Timer Input 2 (TI12P2) is used as trigger input */
763 #define LL_TIM_TS_ETRF (TIM_SMCR_TS_2 | TIM_SMCR_TS_1 | TIM_SMCR_TS_0) /*!< Filtered external Trigger (ETRF) is used as trigger input */
764 /**
765 * @}
766 */
767
768 /** @defgroup TIM_LL_EC_ETR_POLARITY External Trigger Polarity
769 * @{
770 */
771 #define LL_TIM_ETR_POLARITY_NONINVERTED 0x00000000U /*!< ETR is non-inverted, active at high level or rising edge */
772 #define LL_TIM_ETR_POLARITY_INVERTED TIM_SMCR_ETP /*!< ETR is inverted, active at low level or falling edge */
773 /**
774 * @}
775 */
776
777 /** @defgroup TIM_LL_EC_ETR_PRESCALER External Trigger Prescaler
778 * @{
779 */
780 #define LL_TIM_ETR_PRESCALER_DIV1 0x00000000U /*!< ETR prescaler OFF */
781 #define LL_TIM_ETR_PRESCALER_DIV2 TIM_SMCR_ETPS_0 /*!< ETR frequency is divided by 2 */
782 #define LL_TIM_ETR_PRESCALER_DIV4 TIM_SMCR_ETPS_1 /*!< ETR frequency is divided by 4 */
783 #define LL_TIM_ETR_PRESCALER_DIV8 TIM_SMCR_ETPS /*!< ETR frequency is divided by 8 */
784 /**
785 * @}
786 */
787
788 /** @defgroup TIM_LL_EC_ETR_FILTER External Trigger Filter
789 * @{
790 */
791 #define LL_TIM_ETR_FILTER_FDIV1 0x00000000U /*!< No filter, sampling is done at fDTS */
792 #define LL_TIM_ETR_FILTER_FDIV1_N2 TIM_SMCR_ETF_0 /*!< fSAMPLING=fCK_INT, N=2 */
793 #define LL_TIM_ETR_FILTER_FDIV1_N4 TIM_SMCR_ETF_1 /*!< fSAMPLING=fCK_INT, N=4 */
794 #define LL_TIM_ETR_FILTER_FDIV1_N8 (TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0) /*!< fSAMPLING=fCK_INT, N=8 */
795 #define LL_TIM_ETR_FILTER_FDIV2_N6 TIM_SMCR_ETF_2 /*!< fSAMPLING=fDTS/2, N=6 */
796 #define LL_TIM_ETR_FILTER_FDIV2_N8 (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_0) /*!< fSAMPLING=fDTS/2, N=8 */
797 #define LL_TIM_ETR_FILTER_FDIV4_N6 (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1) /*!< fSAMPLING=fDTS/4, N=6 */
798 #define LL_TIM_ETR_FILTER_FDIV4_N8 (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0) /*!< fSAMPLING=fDTS/4, N=8 */
799 #define LL_TIM_ETR_FILTER_FDIV8_N6 TIM_SMCR_ETF_3 /*!< fSAMPLING=fDTS/8, N=8 */
800 #define LL_TIM_ETR_FILTER_FDIV8_N8 (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_0) /*!< fSAMPLING=fDTS/16, N=5 */
801 #define LL_TIM_ETR_FILTER_FDIV16_N5 (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_1) /*!< fSAMPLING=fDTS/16, N=6 */
802 #define LL_TIM_ETR_FILTER_FDIV16_N6 (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0) /*!< fSAMPLING=fDTS/16, N=8 */
803 #define LL_TIM_ETR_FILTER_FDIV16_N8 (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2) /*!< fSAMPLING=fDTS/16, N=5 */
804 #define LL_TIM_ETR_FILTER_FDIV32_N5 (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2 | TIM_SMCR_ETF_0) /*!< fSAMPLING=fDTS/32, N=5 */
805 #define LL_TIM_ETR_FILTER_FDIV32_N6 (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1) /*!< fSAMPLING=fDTS/32, N=6 */
806 #define LL_TIM_ETR_FILTER_FDIV32_N8 TIM_SMCR_ETF /*!< fSAMPLING=fDTS/32, N=8 */
807 /**
808 * @}
809 */
810
811
812 /** @defgroup TIM_LL_EC_BREAK_POLARITY break polarity
813 * @{
814 */
815 #define LL_TIM_BREAK_POLARITY_LOW 0x00000000U /*!< Break input BRK is active low */
816 #define LL_TIM_BREAK_POLARITY_HIGH TIM_BDTR_BKP /*!< Break input BRK is active high */
817 /**
818 * @}
819 */
820
821
822
823
824 /** @defgroup TIM_LL_EC_OSSI OSSI
825 * @{
826 */
827 #define LL_TIM_OSSI_DISABLE 0x00000000U /*!< When inactive, OCx/OCxN outputs are disabled */
828 #define LL_TIM_OSSI_ENABLE TIM_BDTR_OSSI /*!< When inactive, OxC/OCxN outputs are first forced with their inactive level then forced to their idle level after the deadtime */
829 /**
830 * @}
831 */
832
833 /** @defgroup TIM_LL_EC_OSSR OSSR
834 * @{
835 */
836 #define LL_TIM_OSSR_DISABLE 0x00000000U /*!< When inactive, OCx/OCxN outputs are disabled */
837 #define LL_TIM_OSSR_ENABLE TIM_BDTR_OSSR /*!< When inactive, OC/OCN outputs are enabled with their inactive level as soon as CCxE=1 or CCxNE=1 */
838 /**
839 * @}
840 */
841
842
843 /** @defgroup TIM_LL_EC_DMABURST_BASEADDR DMA Burst Base Address
844 * @{
845 */
846 #define LL_TIM_DMABURST_BASEADDR_CR1 0x00000000U /*!< TIMx_CR1 register is the DMA base address for DMA burst */
847 #define LL_TIM_DMABURST_BASEADDR_CR2 TIM_DCR_DBA_0 /*!< TIMx_CR2 register is the DMA base address for DMA burst */
848 #define LL_TIM_DMABURST_BASEADDR_SMCR TIM_DCR_DBA_1 /*!< TIMx_SMCR register is the DMA base address for DMA burst */
849 #define LL_TIM_DMABURST_BASEADDR_DIER (TIM_DCR_DBA_1 | TIM_DCR_DBA_0) /*!< TIMx_DIER register is the DMA base address for DMA burst */
850 #define LL_TIM_DMABURST_BASEADDR_SR TIM_DCR_DBA_2 /*!< TIMx_SR register is the DMA base address for DMA burst */
851 #define LL_TIM_DMABURST_BASEADDR_EGR (TIM_DCR_DBA_2 | TIM_DCR_DBA_0) /*!< TIMx_EGR register is the DMA base address for DMA burst */
852 #define LL_TIM_DMABURST_BASEADDR_CCMR1 (TIM_DCR_DBA_2 | TIM_DCR_DBA_1) /*!< TIMx_CCMR1 register is the DMA base address for DMA burst */
853 #define LL_TIM_DMABURST_BASEADDR_CCMR2 (TIM_DCR_DBA_2 | TIM_DCR_DBA_1 | TIM_DCR_DBA_0) /*!< TIMx_CCMR2 register is the DMA base address for DMA burst */
854 #define LL_TIM_DMABURST_BASEADDR_CCER TIM_DCR_DBA_3 /*!< TIMx_CCER register is the DMA base address for DMA burst */
855 #define LL_TIM_DMABURST_BASEADDR_CNT (TIM_DCR_DBA_3 | TIM_DCR_DBA_0) /*!< TIMx_CNT register is the DMA base address for DMA burst */
856 #define LL_TIM_DMABURST_BASEADDR_PSC (TIM_DCR_DBA_3 | TIM_DCR_DBA_1) /*!< TIMx_PSC register is the DMA base address for DMA burst */
857 #define LL_TIM_DMABURST_BASEADDR_ARR (TIM_DCR_DBA_3 | TIM_DCR_DBA_1 | TIM_DCR_DBA_0) /*!< TIMx_ARR register is the DMA base address for DMA burst */
858 #define LL_TIM_DMABURST_BASEADDR_RCR (TIM_DCR_DBA_3 | TIM_DCR_DBA_2) /*!< TIMx_RCR register is the DMA base address for DMA burst */
859 #define LL_TIM_DMABURST_BASEADDR_CCR1 (TIM_DCR_DBA_3 | TIM_DCR_DBA_2 | TIM_DCR_DBA_0) /*!< TIMx_CCR1 register is the DMA base address for DMA burst */
860 #define LL_TIM_DMABURST_BASEADDR_CCR2 (TIM_DCR_DBA_3 | TIM_DCR_DBA_2 | TIM_DCR_DBA_1) /*!< TIMx_CCR2 register is the DMA base address for DMA burst */
861 #define LL_TIM_DMABURST_BASEADDR_CCR3 (TIM_DCR_DBA_3 | TIM_DCR_DBA_2 | TIM_DCR_DBA_1 | TIM_DCR_DBA_0) /*!< TIMx_CCR3 register is the DMA base address for DMA burst */
862 #define LL_TIM_DMABURST_BASEADDR_CCR4 TIM_DCR_DBA_4 /*!< TIMx_CCR4 register is the DMA base address for DMA burst */
863 #define LL_TIM_DMABURST_BASEADDR_BDTR (TIM_DCR_DBA_4 | TIM_DCR_DBA_0) /*!< TIMx_BDTR register is the DMA base address for DMA burst */
864 #define LL_TIM_DMABURST_BASEADDR_OR (TIM_DCR_DBA_4 | TIM_DCR_DBA_2 | TIM_DCR_DBA_0)
865 /**
866 * @}
867 */
868
869 /** @defgroup TIM_LL_EC_DMABURST_LENGTH DMA Burst Length
870 * @{
871 */
872 #define LL_TIM_DMABURST_LENGTH_1TRANSFER 0x00000000U /*!< Transfer is done to 1 register starting from the DMA burst base address */
873 #define LL_TIM_DMABURST_LENGTH_2TRANSFERS TIM_DCR_DBL_0 /*!< Transfer is done to 2 registers starting from the DMA burst base address */
874 #define LL_TIM_DMABURST_LENGTH_3TRANSFERS TIM_DCR_DBL_1 /*!< Transfer is done to 3 registers starting from the DMA burst base address */
875 #define LL_TIM_DMABURST_LENGTH_4TRANSFERS (TIM_DCR_DBL_1 | TIM_DCR_DBL_0) /*!< Transfer is done to 4 registers starting from the DMA burst base address */
876 #define LL_TIM_DMABURST_LENGTH_5TRANSFERS TIM_DCR_DBL_2 /*!< Transfer is done to 5 registers starting from the DMA burst base address */
877 #define LL_TIM_DMABURST_LENGTH_6TRANSFERS (TIM_DCR_DBL_2 | TIM_DCR_DBL_0) /*!< Transfer is done to 6 registers starting from the DMA burst base address */
878 #define LL_TIM_DMABURST_LENGTH_7TRANSFERS (TIM_DCR_DBL_2 | TIM_DCR_DBL_1) /*!< Transfer is done to 7 registers starting from the DMA burst base address */
879 #define LL_TIM_DMABURST_LENGTH_8TRANSFERS (TIM_DCR_DBL_2 | TIM_DCR_DBL_1 | TIM_DCR_DBL_0) /*!< Transfer is done to 1 registers starting from the DMA burst base address */
880 #define LL_TIM_DMABURST_LENGTH_9TRANSFERS TIM_DCR_DBL_3 /*!< Transfer is done to 9 registers starting from the DMA burst base address */
881 #define LL_TIM_DMABURST_LENGTH_10TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_0) /*!< Transfer is done to 10 registers starting from the DMA burst base address */
882 #define LL_TIM_DMABURST_LENGTH_11TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_1) /*!< Transfer is done to 11 registers starting from the DMA burst base address */
883 #define LL_TIM_DMABURST_LENGTH_12TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_1 | TIM_DCR_DBL_0) /*!< Transfer is done to 12 registers starting from the DMA burst base address */
884 #define LL_TIM_DMABURST_LENGTH_13TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_2) /*!< Transfer is done to 13 registers starting from the DMA burst base address */
885 #define LL_TIM_DMABURST_LENGTH_14TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_2 | TIM_DCR_DBL_0) /*!< Transfer is done to 14 registers starting from the DMA burst base address */
886 #define LL_TIM_DMABURST_LENGTH_15TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_2 | TIM_DCR_DBL_1) /*!< Transfer is done to 15 registers starting from the DMA burst base address */
887 #define LL_TIM_DMABURST_LENGTH_16TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_2 | TIM_DCR_DBL_1 | TIM_DCR_DBL_0) /*!< Transfer is done to 16 registers starting from the DMA burst base address */
888 #define LL_TIM_DMABURST_LENGTH_17TRANSFERS TIM_DCR_DBL_4 /*!< Transfer is done to 17 registers starting from the DMA burst base address */
889 #define LL_TIM_DMABURST_LENGTH_18TRANSFERS (TIM_DCR_DBL_4 | TIM_DCR_DBL_0) /*!< Transfer is done to 18 registers starting from the DMA burst base address */
890 /**
891 * @}
892 */
893
894
895 /** @defgroup TIM_LL_EC_TIM2_ITR1_RMP_TIM8 TIM2 Internal Trigger1 Remap TIM8
896 * @{
897 */
898 #define LL_TIM_TIM2_ITR1_RMP_TIM8_TRGO TIM2_OR_RMP_MASK /*!< TIM2_ITR1 is connected to TIM8_TRGO */
899 #define LL_TIM_TIM2_ITR1_RMP_OTG_FS_SOF (TIM_OR_ITR1_RMP_1 | TIM2_OR_RMP_MASK) /*!< TIM2_ITR1 is connected to OTG_FS SOF */
900 #define LL_TIM_TIM2_ITR1_RMP_OTG_HS_SOF (TIM_OR_ITR1_RMP | TIM2_OR_RMP_MASK) /*!< TIM2_ITR1 is connected to OTG_HS SOF */
901 /**
902 * @}
903 */
904
905 /** @defgroup TIM_LL_EC_TIM5_TI4_RMP TIM5 External Input Ch4 Remap
906 * @{
907 */
908 #define LL_TIM_TIM5_TI4_RMP_GPIO TIM5_OR_RMP_MASK /*!< TIM5 channel 4 is connected to GPIO */
909 #define LL_TIM_TIM5_TI4_RMP_LSI (TIM_OR_TI4_RMP_0 | TIM5_OR_RMP_MASK) /*!< TIM5 channel 4 is connected to LSI internal clock */
910 #define LL_TIM_TIM5_TI4_RMP_LSE (TIM_OR_TI4_RMP_1 | TIM5_OR_RMP_MASK) /*!< TIM5 channel 4 is connected to LSE */
911 #define LL_TIM_TIM5_TI4_RMP_RTC (TIM_OR_TI4_RMP | TIM5_OR_RMP_MASK) /*!< TIM5 channel 4 is connected to RTC wakeup interrupt */
912 /**
913 * @}
914 */
915
916 /** @defgroup TIM_LL_EC_TIM11_TI1_RMP TIM11 External Input Capture 1 Remap
917 * @{
918 */
919 #define LL_TIM_TIM11_TI1_RMP_GPIO TIM11_OR_RMP_MASK /*!< TIM11 channel 1 is connected to GPIO */
920 #define LL_TIM_TIM11_TI1_RMP_GPIO1 (TIM_OR_TI1_RMP_0 | TIM11_OR_RMP_MASK) /*!< TIM11 channel 1 is connected to GPIO */
921 #define LL_TIM_TIM11_TI1_RMP_GPIO2 (TIM_OR_TI1_RMP | TIM11_OR_RMP_MASK) /*!< TIM11 channel 1 is connected to GPIO */
922 #define LL_TIM_TIM11_TI1_RMP_HSE_RTC (TIM_OR_TI1_RMP_1 | TIM11_OR_RMP_MASK) /*!< TIM11 channel 1 is connected to HSE_RTC */
923 /**
924 * @}
925 */
926
927
928 /**
929 * @}
930 */
931
932 /* Exported macro ------------------------------------------------------------*/
933 /** @defgroup TIM_LL_Exported_Macros TIM Exported Macros
934 * @{
935 */
936
937 /** @defgroup TIM_LL_EM_WRITE_READ Common Write and read registers Macros
938 * @{
939 */
940 /**
941 * @brief Write a value in TIM register.
942 * @param __INSTANCE__ TIM Instance
943 * @param __REG__ Register to be written
944 * @param __VALUE__ Value to be written in the register
945 * @retval None
946 */
947 #define LL_TIM_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
948
949 /**
950 * @brief Read a value in TIM register.
951 * @param __INSTANCE__ TIM Instance
952 * @param __REG__ Register to be read
953 * @retval Register value
954 */
955 #define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
956 /**
957 * @}
958 */
959
960 /** @defgroup TIM_LL_EM_Exported_Macros Exported_Macros
961 * @{
962 */
963
964 /**
965 * @brief HELPER macro calculating DTG[0:7] in the TIMx_BDTR register to achieve the requested dead time duration.
966 * @note ex: @ref __LL_TIM_CALC_DEADTIME (80000000, @ref LL_TIM_GetClockDivision (), 120);
967 * @param __TIMCLK__ timer input clock frequency (in Hz)
968 * @param __CKD__ This parameter can be one of the following values:
969 * @arg @ref LL_TIM_CLOCKDIVISION_DIV1
970 * @arg @ref LL_TIM_CLOCKDIVISION_DIV2
971 * @arg @ref LL_TIM_CLOCKDIVISION_DIV4
972 * @param __DT__ deadtime duration (in ns)
973 * @retval DTG[0:7]
974 */
975 #define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__) \
976 ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__))) & DT_DELAY_1) : \
977 (((uint64_t)((__DT__)*1000U)) < (64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__CKD__))) ? (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 1U) - (uint8_t) 64U) & DT_DELAY_2)) :\
978 (((uint64_t)((__DT__)*1000U)) < (32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__CKD__))) ? (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 3U) - (uint8_t) 32U) & DT_DELAY_3)) :\
979 (((uint64_t)((__DT__)*1000U)) < (32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__CKD__))) ? (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 4U) - (uint8_t) 32U) & DT_DELAY_4)) :\
980 0U)
981
982 /**
983 * @brief HELPER macro calculating the prescaler value to achieve the required counter clock frequency.
984 * @note ex: @ref __LL_TIM_CALC_PSC (80000000, 1000000);
985 * @param __TIMCLK__ timer input clock frequency (in Hz)
986 * @param __CNTCLK__ counter clock frequency (in Hz)
987 * @retval Prescaler value (between Min_Data=0 and Max_Data=65535)
988 */
989 #define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__) \
990 ((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)((__TIMCLK__)/(__CNTCLK__) - 1U) : 0U
991
992 /**
993 * @brief HELPER macro calculating the auto-reload value to achieve the required output signal frequency.
994 * @note ex: @ref __LL_TIM_CALC_ARR (1000000, @ref LL_TIM_GetPrescaler (), 10000);
995 * @param __TIMCLK__ timer input clock frequency (in Hz)
996 * @param __PSC__ prescaler
997 * @param __FREQ__ output signal frequency (in Hz)
998 * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535)
999 */
1000 #define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \
1001 (((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? ((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U)) - 1U) : 0U
1002
1003 /**
1004 * @brief HELPER macro calculating the compare value required to achieve the required timer output compare active/inactive delay.
1005 * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10);
1006 * @param __TIMCLK__ timer input clock frequency (in Hz)
1007 * @param __PSC__ prescaler
1008 * @param __DELAY__ timer output compare active/inactive delay (in us)
1009 * @retval Compare value (between Min_Data=0 and Max_Data=65535)
1010 */
1011 #define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__) \
1012 ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \
1013 / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U))))
1014
1015 /**
1016 * @brief HELPER macro calculating the auto-reload value to achieve the required pulse duration (when the timer operates in one pulse mode).
1017 * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20);
1018 * @param __TIMCLK__ timer input clock frequency (in Hz)
1019 * @param __PSC__ prescaler
1020 * @param __DELAY__ timer output compare active/inactive delay (in us)
1021 * @param __PULSE__ pulse duration (in us)
1022 * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535)
1023 */
1024 #define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__) \
1025 ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \
1026 + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__))))
1027
1028 /**
1029 * @brief HELPER macro retrieving the ratio of the input capture prescaler
1030 * @note ex: @ref __LL_TIM_GET_ICPSC_RATIO (@ref LL_TIM_IC_GetPrescaler ());
1031 * @param __ICPSC__ This parameter can be one of the following values:
1032 * @arg @ref LL_TIM_ICPSC_DIV1
1033 * @arg @ref LL_TIM_ICPSC_DIV2
1034 * @arg @ref LL_TIM_ICPSC_DIV4
1035 * @arg @ref LL_TIM_ICPSC_DIV8
1036 * @retval Input capture prescaler ratio (1, 2, 4 or 8)
1037 */
1038 #define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__) \
1039 ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos)))
1040
1041
1042 /**
1043 * @}
1044 */
1045
1046
1047 /**
1048 * @}
1049 */
1050
1051 /* Exported functions --------------------------------------------------------*/
1052 /** @defgroup TIM_LL_Exported_Functions TIM Exported Functions
1053 * @{
1054 */
1055
1056 /** @defgroup TIM_LL_EF_Time_Base Time Base configuration
1057 * @{
1058 */
1059 /**
1060 * @brief Enable timer counter.
1061 * @rmtoll CR1 CEN LL_TIM_EnableCounter
1062 * @param TIMx Timer instance
1063 * @retval None
1064 */
1065 __STATIC_INLINE void LL_TIM_EnableCounter(TIM_TypeDef *TIMx)
1066 {
1067 SET_BIT(TIMx->CR1, TIM_CR1_CEN);
1068 }
1069
1070 /**
1071 * @brief Disable timer counter.
1072 * @rmtoll CR1 CEN LL_TIM_DisableCounter
1073 * @param TIMx Timer instance
1074 * @retval None
1075 */
1076 __STATIC_INLINE void LL_TIM_DisableCounter(TIM_TypeDef *TIMx)
1077 {
1078 CLEAR_BIT(TIMx->CR1, TIM_CR1_CEN);
1079 }
1080
1081 /**
1082 * @brief Indicates whether the timer counter is enabled.
1083 * @rmtoll CR1 CEN LL_TIM_IsEnabledCounter
1084 * @param TIMx Timer instance
1085 * @retval State of bit (1 or 0).
1086 */
1087 __STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(TIM_TypeDef *TIMx)
1088 {
1089 return (READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN));
1090 }
1091
1092 /**
1093 * @brief Enable update event generation.
1094 * @rmtoll CR1 UDIS LL_TIM_EnableUpdateEvent
1095 * @param TIMx Timer instance
1096 * @retval None
1097 */
1098 __STATIC_INLINE void LL_TIM_EnableUpdateEvent(TIM_TypeDef *TIMx)
1099 {
1100 CLEAR_BIT(TIMx->CR1, TIM_CR1_UDIS);
1101 }
1102
1103 /**
1104 * @brief Disable update event generation.
1105 * @rmtoll CR1 UDIS LL_TIM_DisableUpdateEvent
1106 * @param TIMx Timer instance
1107 * @retval None
1108 */
1109 __STATIC_INLINE void LL_TIM_DisableUpdateEvent(TIM_TypeDef *TIMx)
1110 {
1111 SET_BIT(TIMx->CR1, TIM_CR1_UDIS);
1112 }
1113
1114 /**
1115 * @brief Indicates whether update event generation is enabled.
1116 * @rmtoll CR1 UDIS LL_TIM_IsEnabledUpdateEvent
1117 * @param TIMx Timer instance
1118 * @retval Inverted state of bit (0 or 1).
1119 */
1120 __STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(TIM_TypeDef *TIMx)
1121 {
1122 return (READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == RESET);
1123 }
1124
1125 /**
1126 * @brief Set update event source
1127 * @note Update event source set to LL_TIM_UPDATESOURCE_REGULAR: any of the following events
1128 * generate an update interrupt or DMA request if enabled:
1129 * - Counter overflow/underflow
1130 * - Setting the UG bit
1131 * - Update generation through the slave mode controller
1132 * @note Update event source set to LL_TIM_UPDATESOURCE_COUNTER: only counter
1133 * overflow/underflow generates an update interrupt or DMA request if enabled.
1134 * @rmtoll CR1 URS LL_TIM_SetUpdateSource
1135 * @param TIMx Timer instance
1136 * @param UpdateSource This parameter can be one of the following values:
1137 * @arg @ref LL_TIM_UPDATESOURCE_REGULAR
1138 * @arg @ref LL_TIM_UPDATESOURCE_COUNTER
1139 * @retval None
1140 */
1141 __STATIC_INLINE void LL_TIM_SetUpdateSource(TIM_TypeDef *TIMx, uint32_t UpdateSource)
1142 {
1143 MODIFY_REG(TIMx->CR1, TIM_CR1_URS, UpdateSource);
1144 }
1145
1146 /**
1147 * @brief Get actual event update source
1148 * @rmtoll CR1 URS LL_TIM_GetUpdateSource
1149 * @param TIMx Timer instance
1150 * @retval Returned value can be one of the following values:
1151 * @arg @ref LL_TIM_UPDATESOURCE_REGULAR
1152 * @arg @ref LL_TIM_UPDATESOURCE_COUNTER
1153 */
1154 __STATIC_INLINE uint32_t LL_TIM_GetUpdateSource(TIM_TypeDef *TIMx)
1155 {
1156 return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_URS));
1157 }
1158
1159 /**
1160 * @brief Set one pulse mode (one shot v.s. repetitive).
1161 * @rmtoll CR1 OPM LL_TIM_SetOnePulseMode
1162 * @param TIMx Timer instance
1163 * @param OnePulseMode This parameter can be one of the following values:
1164 * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE
1165 * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE
1166 * @retval None
1167 */
1168 __STATIC_INLINE void LL_TIM_SetOnePulseMode(TIM_TypeDef *TIMx, uint32_t OnePulseMode)
1169 {
1170 MODIFY_REG(TIMx->CR1, TIM_CR1_OPM, OnePulseMode);
1171 }
1172
1173 /**
1174 * @brief Get actual one pulse mode.
1175 * @rmtoll CR1 OPM LL_TIM_GetOnePulseMode
1176 * @param TIMx Timer instance
1177 * @retval Returned value can be one of the following values:
1178 * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE
1179 * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE
1180 */
1181 __STATIC_INLINE uint32_t LL_TIM_GetOnePulseMode(TIM_TypeDef *TIMx)
1182 {
1183 return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM));
1184 }
1185
1186 /**
1187 * @brief Set the timer counter counting mode.
1188 * @note Macro @ref IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to
1189 * check whether or not the counter mode selection feature is supported
1190 * by a timer instance.
1191 * @rmtoll CR1 DIR LL_TIM_SetCounterMode\n
1192 * CR1 CMS LL_TIM_SetCounterMode
1193 * @param TIMx Timer instance
1194 * @param CounterMode This parameter can be one of the following values:
1195 * @arg @ref LL_TIM_COUNTERMODE_UP
1196 * @arg @ref LL_TIM_COUNTERMODE_DOWN
1197 * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP
1198 * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN
1199 * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN
1200 * @retval None
1201 */
1202 __STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode)
1203 {
1204 MODIFY_REG(TIMx->CR1, TIM_CR1_DIR | TIM_CR1_CMS, CounterMode);
1205 }
1206
1207 /**
1208 * @brief Get actual counter mode.
1209 * @note Macro @ref IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to
1210 * check whether or not the counter mode selection feature is supported
1211 * by a timer instance.
1212 * @rmtoll CR1 DIR LL_TIM_GetCounterMode\n
1213 * CR1 CMS LL_TIM_GetCounterMode
1214 * @param TIMx Timer instance
1215 * @retval Returned value can be one of the following values:
1216 * @arg @ref LL_TIM_COUNTERMODE_UP
1217 * @arg @ref LL_TIM_COUNTERMODE_DOWN
1218 * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP
1219 * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN
1220 * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN
1221 */
1222 __STATIC_INLINE uint32_t LL_TIM_GetCounterMode(TIM_TypeDef *TIMx)
1223 {
1224 return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR | TIM_CR1_CMS));
1225 }
1226
1227 /**
1228 * @brief Enable auto-reload (ARR) preload.
1229 * @rmtoll CR1 ARPE LL_TIM_EnableARRPreload
1230 * @param TIMx Timer instance
1231 * @retval None
1232 */
1233 __STATIC_INLINE void LL_TIM_EnableARRPreload(TIM_TypeDef *TIMx)
1234 {
1235 SET_BIT(TIMx->CR1, TIM_CR1_ARPE);
1236 }
1237
1238 /**
1239 * @brief Disable auto-reload (ARR) preload.
1240 * @rmtoll CR1 ARPE LL_TIM_DisableARRPreload
1241 * @param TIMx Timer instance
1242 * @retval None
1243 */
1244 __STATIC_INLINE void LL_TIM_DisableARRPreload(TIM_TypeDef *TIMx)
1245 {
1246 CLEAR_BIT(TIMx->CR1, TIM_CR1_ARPE);
1247 }
1248
1249 /**
1250 * @brief Indicates whether auto-reload (ARR) preload is enabled.
1251 * @rmtoll CR1 ARPE LL_TIM_IsEnabledARRPreload
1252 * @param TIMx Timer instance
1253 * @retval State of bit (1 or 0).
1254 */
1255 __STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(TIM_TypeDef *TIMx)
1256 {
1257 return (READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE));
1258 }
1259
1260 /**
1261 * @brief Set the division ratio between the timer clock and the sampling clock used by the dead-time generators (when supported) and the digital filters.
1262 * @note Macro @ref IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
1263 * whether or not the clock division feature is supported by the timer
1264 * instance.
1265 * @rmtoll CR1 CKD LL_TIM_SetClockDivision
1266 * @param TIMx Timer instance
1267 * @param ClockDivision This parameter can be one of the following values:
1268 * @arg @ref LL_TIM_CLOCKDIVISION_DIV1
1269 * @arg @ref LL_TIM_CLOCKDIVISION_DIV2
1270 * @arg @ref LL_TIM_CLOCKDIVISION_DIV4
1271 * @retval None
1272 */
1273 __STATIC_INLINE void LL_TIM_SetClockDivision(TIM_TypeDef *TIMx, uint32_t ClockDivision)
1274 {
1275 MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision);
1276 }
1277
1278 /**
1279 * @brief Get the actual division ratio between the timer clock and the sampling clock used by the dead-time generators (when supported) and the digital filters.
1280 * @note Macro @ref IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
1281 * whether or not the clock division feature is supported by the timer
1282 * instance.
1283 * @rmtoll CR1 CKD LL_TIM_GetClockDivision
1284 * @param TIMx Timer instance
1285 * @retval Returned value can be one of the following values:
1286 * @arg @ref LL_TIM_CLOCKDIVISION_DIV1
1287 * @arg @ref LL_TIM_CLOCKDIVISION_DIV2
1288 * @arg @ref LL_TIM_CLOCKDIVISION_DIV4
1289 */
1290 __STATIC_INLINE uint32_t LL_TIM_GetClockDivision(TIM_TypeDef *TIMx)
1291 {
1292 return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CKD));
1293 }
1294
1295 /**
1296 * @brief Set the counter value.
1297 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1298 * whether or not a timer instance supports a 32 bits counter.
1299 * @rmtoll CNT CNT LL_TIM_SetCounter
1300 * @param TIMx Timer instance
1301 * @param Counter Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF)
1302 * @retval None
1303 */
1304 __STATIC_INLINE void LL_TIM_SetCounter(TIM_TypeDef *TIMx, uint32_t Counter)
1305 {
1306 WRITE_REG(TIMx->CNT, Counter);
1307 }
1308
1309 /**
1310 * @brief Get the counter value.
1311 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1312 * whether or not a timer instance supports a 32 bits counter.
1313 * @rmtoll CNT CNT LL_TIM_GetCounter
1314 * @param TIMx Timer instance
1315 * @retval Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF)
1316 */
1317 __STATIC_INLINE uint32_t LL_TIM_GetCounter(TIM_TypeDef *TIMx)
1318 {
1319 return (uint32_t)(READ_REG(TIMx->CNT));
1320 }
1321
1322 /**
1323 * @brief Get the current direction of the counter
1324 * @rmtoll CR1 DIR LL_TIM_GetDirection
1325 * @param TIMx Timer instance
1326 * @retval Returned value can be one of the following values:
1327 * @arg @ref LL_TIM_COUNTERDIRECTION_UP
1328 * @arg @ref LL_TIM_COUNTERDIRECTION_DOWN
1329 */
1330 __STATIC_INLINE uint32_t LL_TIM_GetDirection(TIM_TypeDef *TIMx)
1331 {
1332 return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR));
1333 }
1334
1335 /**
1336 * @brief Set the prescaler value.
1337 * @note The counter clock frequency CK_CNT is equal to fCK_PSC / (PSC[15:0] + 1).
1338 * @note The prescaler can be changed on the fly as this control register is buffered. The new
1339 * prescaler ratio is taken into account at the next update event.
1340 * @note Helper macro @ref __LL_TIM_CALC_PSC can be used to calculate the Prescaler parameter
1341 * @rmtoll PSC PSC LL_TIM_SetPrescaler
1342 * @param TIMx Timer instance
1343 * @param Prescaler between Min_Data=0 and Max_Data=65535
1344 * @retval None
1345 */
1346 __STATIC_INLINE void LL_TIM_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Prescaler)
1347 {
1348 WRITE_REG(TIMx->PSC, Prescaler);
1349 }
1350
1351 /**
1352 * @brief Get the prescaler value.
1353 * @rmtoll PSC PSC LL_TIM_GetPrescaler
1354 * @param TIMx Timer instance
1355 * @retval Prescaler value between Min_Data=0 and Max_Data=65535
1356 */
1357 __STATIC_INLINE uint32_t LL_TIM_GetPrescaler(TIM_TypeDef *TIMx)
1358 {
1359 return (uint32_t)(READ_REG(TIMx->PSC));
1360 }
1361
1362 /**
1363 * @brief Set the auto-reload value.
1364 * @note The counter is blocked while the auto-reload value is null.
1365 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1366 * whether or not a timer instance supports a 32 bits counter.
1367 * @note Helper macro @ref __LL_TIM_CALC_ARR can be used to calculate the AutoReload parameter
1368 * @rmtoll ARR ARR LL_TIM_SetAutoReload
1369 * @param TIMx Timer instance
1370 * @param AutoReload between Min_Data=0 and Max_Data=65535
1371 * @retval None
1372 */
1373 __STATIC_INLINE void LL_TIM_SetAutoReload(TIM_TypeDef *TIMx, uint32_t AutoReload)
1374 {
1375 WRITE_REG(TIMx->ARR, AutoReload);
1376 }
1377
1378 /**
1379 * @brief Get the auto-reload value.
1380 * @rmtoll ARR ARR LL_TIM_GetAutoReload
1381 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1382 * whether or not a timer instance supports a 32 bits counter.
1383 * @param TIMx Timer instance
1384 * @retval Auto-reload value
1385 */
1386 __STATIC_INLINE uint32_t LL_TIM_GetAutoReload(TIM_TypeDef *TIMx)
1387 {
1388 return (uint32_t)(READ_REG(TIMx->ARR));
1389 }
1390
1391 /**
1392 * @brief Set the repetition counter value.
1393 * @note Macro @ref IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check
1394 * whether or not a timer instance supports a repetition counter.
1395 * @rmtoll RCR REP LL_TIM_SetRepetitionCounter
1396 * @param TIMx Timer instance
1397 * @param RepetitionCounter between Min_Data=0 and Max_Data=255
1398 * @retval None
1399 */
1400 __STATIC_INLINE void LL_TIM_SetRepetitionCounter(TIM_TypeDef *TIMx, uint32_t RepetitionCounter)
1401 {
1402 WRITE_REG(TIMx->RCR, RepetitionCounter);
1403 }
1404
1405 /**
1406 * @brief Get the repetition counter value.
1407 * @note Macro @ref IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check
1408 * whether or not a timer instance supports a repetition counter.
1409 * @rmtoll RCR REP LL_TIM_GetRepetitionCounter
1410 * @param TIMx Timer instance
1411 * @retval Repetition counter value
1412 */
1413 __STATIC_INLINE uint32_t LL_TIM_GetRepetitionCounter(TIM_TypeDef *TIMx)
1414 {
1415 return (uint32_t)(READ_REG(TIMx->RCR));
1416 }
1417
1418 /**
1419 * @}
1420 */
1421
1422 /** @defgroup TIM_LL_EF_Capture_Compare Capture Compare configuration
1423 * @{
1424 */
1425 /**
1426 * @brief Enable the capture/compare control bits (CCxE, CCxNE and OCxM) preload.
1427 * @note CCxE, CCxNE and OCxM bits are preloaded, after having been written,
1428 * they are updated only when a commutation event (COM) occurs.
1429 * @note Only on channels that have a complementary output.
1430 * @note Macro @ref IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check
1431 * whether or not a timer instance is able to generate a commutation event.
1432 * @rmtoll CR2 CCPC LL_TIM_CC_EnablePreload
1433 * @param TIMx Timer instance
1434 * @retval None
1435 */
1436 __STATIC_INLINE void LL_TIM_CC_EnablePreload(TIM_TypeDef *TIMx)
1437 {
1438 SET_BIT(TIMx->CR2, TIM_CR2_CCPC);
1439 }
1440
1441 /**
1442 * @brief Disable the capture/compare control bits (CCxE, CCxNE and OCxM) preload.
1443 * @note Macro @ref IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check
1444 * whether or not a timer instance is able to generate a commutation event.
1445 * @rmtoll CR2 CCPC LL_TIM_CC_DisablePreload
1446 * @param TIMx Timer instance
1447 * @retval None
1448 */
1449 __STATIC_INLINE void LL_TIM_CC_DisablePreload(TIM_TypeDef *TIMx)
1450 {
1451 CLEAR_BIT(TIMx->CR2, TIM_CR2_CCPC);
1452 }
1453
1454 /**
1455 * @brief Set the updated source of the capture/compare control bits (CCxE, CCxNE and OCxM).
1456 * @note Macro @ref IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check
1457 * whether or not a timer instance is able to generate a commutation event.
1458 * @rmtoll CR2 CCUS LL_TIM_CC_SetUpdate
1459 * @param TIMx Timer instance
1460 * @param CCUpdateSource This parameter can be one of the following values:
1461 * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_ONLY
1462 * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI
1463 * @retval None
1464 */
1465 __STATIC_INLINE void LL_TIM_CC_SetUpdate(TIM_TypeDef *TIMx, uint32_t CCUpdateSource)
1466 {
1467 MODIFY_REG(TIMx->CR2, TIM_CR2_CCUS, CCUpdateSource);
1468 }
1469
1470 /**
1471 * @brief Set the trigger of the capture/compare DMA request.
1472 * @rmtoll CR2 CCDS LL_TIM_CC_SetDMAReqTrigger
1473 * @param TIMx Timer instance
1474 * @param DMAReqTrigger This parameter can be one of the following values:
1475 * @arg @ref LL_TIM_CCDMAREQUEST_CC
1476 * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE
1477 * @retval None
1478 */
1479 __STATIC_INLINE void LL_TIM_CC_SetDMAReqTrigger(TIM_TypeDef *TIMx, uint32_t DMAReqTrigger)
1480 {
1481 MODIFY_REG(TIMx->CR2, TIM_CR2_CCDS, DMAReqTrigger);
1482 }
1483
1484 /**
1485 * @brief Get actual trigger of the capture/compare DMA request.
1486 * @rmtoll CR2 CCDS LL_TIM_CC_GetDMAReqTrigger
1487 * @param TIMx Timer instance
1488 * @retval Returned value can be one of the following values:
1489 * @arg @ref LL_TIM_CCDMAREQUEST_CC
1490 * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE
1491 */
1492 __STATIC_INLINE uint32_t LL_TIM_CC_GetDMAReqTrigger(TIM_TypeDef *TIMx)
1493 {
1494 return (uint32_t)(READ_BIT(TIMx->CR2, TIM_CR2_CCDS));
1495 }
1496
1497 /**
1498 * @brief Set the lock level to freeze the
1499 * configuration of several capture/compare parameters.
1500 * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
1501 * the lock mechanism is supported by a timer instance.
1502 * @rmtoll BDTR LOCK LL_TIM_CC_SetLockLevel
1503 * @param TIMx Timer instance
1504 * @param LockLevel This parameter can be one of the following values:
1505 * @arg @ref LL_TIM_LOCKLEVEL_OFF
1506 * @arg @ref LL_TIM_LOCKLEVEL_1
1507 * @arg @ref LL_TIM_LOCKLEVEL_2
1508 * @arg @ref LL_TIM_LOCKLEVEL_3
1509 * @retval None
1510 */
1511 __STATIC_INLINE void LL_TIM_CC_SetLockLevel(TIM_TypeDef *TIMx, uint32_t LockLevel)
1512 {
1513 MODIFY_REG(TIMx->BDTR, TIM_BDTR_LOCK, LockLevel);
1514 }
1515
1516 /**
1517 * @brief Enable capture/compare channels.
1518 * @rmtoll CCER CC1E LL_TIM_CC_EnableChannel\n
1519 * CCER CC1NE LL_TIM_CC_EnableChannel\n
1520 * CCER CC2E LL_TIM_CC_EnableChannel\n
1521 * CCER CC2NE LL_TIM_CC_EnableChannel\n
1522 * CCER CC3E LL_TIM_CC_EnableChannel\n
1523 * CCER CC3NE LL_TIM_CC_EnableChannel\n
1524 * CCER CC4E LL_TIM_CC_EnableChannel
1525 * @param TIMx Timer instance
1526 * @param Channels This parameter can be a combination of the following values:
1527 * @arg @ref LL_TIM_CHANNEL_CH1
1528 * @arg @ref LL_TIM_CHANNEL_CH1N
1529 * @arg @ref LL_TIM_CHANNEL_CH2
1530 * @arg @ref LL_TIM_CHANNEL_CH2N
1531 * @arg @ref LL_TIM_CHANNEL_CH3
1532 * @arg @ref LL_TIM_CHANNEL_CH3N
1533 * @arg @ref LL_TIM_CHANNEL_CH4
1534 * @retval None
1535 */
1536 __STATIC_INLINE void LL_TIM_CC_EnableChannel(TIM_TypeDef *TIMx, uint32_t Channels)
1537 {
1538 SET_BIT(TIMx->CCER, Channels);
1539 }
1540
1541 /**
1542 * @brief Disable capture/compare channels.
1543 * @rmtoll CCER CC1E LL_TIM_CC_DisableChannel\n
1544 * CCER CC1NE LL_TIM_CC_DisableChannel\n
1545 * CCER CC2E LL_TIM_CC_DisableChannel\n
1546 * CCER CC2NE LL_TIM_CC_DisableChannel\n
1547 * CCER CC3E LL_TIM_CC_DisableChannel\n
1548 * CCER CC3NE LL_TIM_CC_DisableChannel\n
1549 * CCER CC4E LL_TIM_CC_DisableChannel
1550 * @param TIMx Timer instance
1551 * @param Channels This parameter can be a combination of the following values:
1552 * @arg @ref LL_TIM_CHANNEL_CH1
1553 * @arg @ref LL_TIM_CHANNEL_CH1N
1554 * @arg @ref LL_TIM_CHANNEL_CH2
1555 * @arg @ref LL_TIM_CHANNEL_CH2N
1556 * @arg @ref LL_TIM_CHANNEL_CH3
1557 * @arg @ref LL_TIM_CHANNEL_CH3N
1558 * @arg @ref LL_TIM_CHANNEL_CH4
1559 * @retval None
1560 */
1561 __STATIC_INLINE void LL_TIM_CC_DisableChannel(TIM_TypeDef *TIMx, uint32_t Channels)
1562 {
1563 CLEAR_BIT(TIMx->CCER, Channels);
1564 }
1565
1566 /**
1567 * @brief Indicate whether channel(s) is(are) enabled.
1568 * @rmtoll CCER CC1E LL_TIM_CC_IsEnabledChannel\n
1569 * CCER CC1NE LL_TIM_CC_IsEnabledChannel\n
1570 * CCER CC2E LL_TIM_CC_IsEnabledChannel\n
1571 * CCER CC2NE LL_TIM_CC_IsEnabledChannel\n
1572 * CCER CC3E LL_TIM_CC_IsEnabledChannel\n
1573 * CCER CC3NE LL_TIM_CC_IsEnabledChannel\n
1574 * CCER CC4E LL_TIM_CC_IsEnabledChannel
1575 * @param TIMx Timer instance
1576 * @param Channels This parameter can be a combination of the following values:
1577 * @arg @ref LL_TIM_CHANNEL_CH1
1578 * @arg @ref LL_TIM_CHANNEL_CH1N
1579 * @arg @ref LL_TIM_CHANNEL_CH2
1580 * @arg @ref LL_TIM_CHANNEL_CH2N
1581 * @arg @ref LL_TIM_CHANNEL_CH3
1582 * @arg @ref LL_TIM_CHANNEL_CH3N
1583 * @arg @ref LL_TIM_CHANNEL_CH4
1584 * @retval State of bit (1 or 0).
1585 */
1586 __STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(TIM_TypeDef *TIMx, uint32_t Channels)
1587 {
1588 return (READ_BIT(TIMx->CCER, Channels) == (Channels));
1589 }
1590
1591 /**
1592 * @}
1593 */
1594
1595 /** @defgroup TIM_LL_EF_Output_Channel Output channel configuration
1596 * @{
1597 */
1598 /**
1599 * @brief Configure an output channel.
1600 * @rmtoll CCMR1 CC1S LL_TIM_OC_ConfigOutput\n
1601 * CCMR1 CC2S LL_TIM_OC_ConfigOutput\n
1602 * CCMR2 CC3S LL_TIM_OC_ConfigOutput\n
1603 * CCMR2 CC4S LL_TIM_OC_ConfigOutput\n
1604 * CCER CC1P LL_TIM_OC_ConfigOutput\n
1605 * CCER CC2P LL_TIM_OC_ConfigOutput\n
1606 * CCER CC3P LL_TIM_OC_ConfigOutput\n
1607 * CCER CC4P LL_TIM_OC_ConfigOutput\n
1608 * CR2 OIS1 LL_TIM_OC_ConfigOutput\n
1609 * CR2 OIS2 LL_TIM_OC_ConfigOutput\n
1610 * CR2 OIS3 LL_TIM_OC_ConfigOutput\n
1611 * CR2 OIS4 LL_TIM_OC_ConfigOutput
1612 * @param TIMx Timer instance
1613 * @param Channel This parameter can be one of the following values:
1614 * @arg @ref LL_TIM_CHANNEL_CH1
1615 * @arg @ref LL_TIM_CHANNEL_CH2
1616 * @arg @ref LL_TIM_CHANNEL_CH3
1617 * @arg @ref LL_TIM_CHANNEL_CH4
1618 * @param Configuration This parameter must be a combination of all the following values:
1619 * @arg @ref LL_TIM_OCPOLARITY_HIGH or @ref LL_TIM_OCPOLARITY_LOW
1620 * @arg @ref LL_TIM_OCIDLESTATE_LOW or @ref LL_TIM_OCIDLESTATE_HIGH
1621 * @retval None
1622 */
1623 __STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
1624 {
1625 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1626 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1627 CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel]));
1628 MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),
1629 (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]);
1630 MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]),
1631 (Configuration & TIM_CR2_OIS1) << SHIFT_TAB_OISx[iChannel]);
1632 }
1633
1634 /**
1635 * @brief Define the behavior of the output reference signal OCxREF from which
1636 * OCx and OCxN (when relevant) are derived.
1637 * @rmtoll CCMR1 OC1M LL_TIM_OC_SetMode\n
1638 * CCMR1 OC2M LL_TIM_OC_SetMode\n
1639 * CCMR2 OC3M LL_TIM_OC_SetMode\n
1640 * CCMR2 OC4M LL_TIM_OC_SetMode
1641 * @param TIMx Timer instance
1642 * @param Channel This parameter can be one of the following values:
1643 * @arg @ref LL_TIM_CHANNEL_CH1
1644 * @arg @ref LL_TIM_CHANNEL_CH2
1645 * @arg @ref LL_TIM_CHANNEL_CH3
1646 * @arg @ref LL_TIM_CHANNEL_CH4
1647 * @param Mode This parameter can be one of the following values:
1648 * @arg @ref LL_TIM_OCMODE_FROZEN
1649 * @arg @ref LL_TIM_OCMODE_ACTIVE
1650 * @arg @ref LL_TIM_OCMODE_INACTIVE
1651 * @arg @ref LL_TIM_OCMODE_TOGGLE
1652 * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE
1653 * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE
1654 * @arg @ref LL_TIM_OCMODE_PWM1
1655 * @arg @ref LL_TIM_OCMODE_PWM2
1656 * @retval None
1657 */
1658 __STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode)
1659 {
1660 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1661 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1662 MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT_TAB_OCxx[iChannel]);
1663 }
1664
1665 /**
1666 * @brief Get the output compare mode of an output channel.
1667 * @rmtoll CCMR1 OC1M LL_TIM_OC_GetMode\n
1668 * CCMR1 OC2M LL_TIM_OC_GetMode\n
1669 * CCMR2 OC3M LL_TIM_OC_GetMode\n
1670 * CCMR2 OC4M LL_TIM_OC_GetMode
1671 * @param TIMx Timer instance
1672 * @param Channel This parameter can be one of the following values:
1673 * @arg @ref LL_TIM_CHANNEL_CH1
1674 * @arg @ref LL_TIM_CHANNEL_CH2
1675 * @arg @ref LL_TIM_CHANNEL_CH3
1676 * @arg @ref LL_TIM_CHANNEL_CH4
1677 * @retval Returned value can be one of the following values:
1678 * @arg @ref LL_TIM_OCMODE_FROZEN
1679 * @arg @ref LL_TIM_OCMODE_ACTIVE
1680 * @arg @ref LL_TIM_OCMODE_INACTIVE
1681 * @arg @ref LL_TIM_OCMODE_TOGGLE
1682 * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE
1683 * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE
1684 * @arg @ref LL_TIM_OCMODE_PWM1
1685 * @arg @ref LL_TIM_OCMODE_PWM2
1686 */
1687 __STATIC_INLINE uint32_t LL_TIM_OC_GetMode(TIM_TypeDef *TIMx, uint32_t Channel)
1688 {
1689 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1690 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1691 return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]);
1692 }
1693
1694 /**
1695 * @brief Set the polarity of an output channel.
1696 * @rmtoll CCER CC1P LL_TIM_OC_SetPolarity\n
1697 * CCER CC1NP LL_TIM_OC_SetPolarity\n
1698 * CCER CC2P LL_TIM_OC_SetPolarity\n
1699 * CCER CC2NP LL_TIM_OC_SetPolarity\n
1700 * CCER CC3P LL_TIM_OC_SetPolarity\n
1701 * CCER CC3NP LL_TIM_OC_SetPolarity\n
1702 * CCER CC4P LL_TIM_OC_SetPolarity
1703 * @param TIMx Timer instance
1704 * @param Channel This parameter can be one of the following values:
1705 * @arg @ref LL_TIM_CHANNEL_CH1
1706 * @arg @ref LL_TIM_CHANNEL_CH1N
1707 * @arg @ref LL_TIM_CHANNEL_CH2
1708 * @arg @ref LL_TIM_CHANNEL_CH2N
1709 * @arg @ref LL_TIM_CHANNEL_CH3
1710 * @arg @ref LL_TIM_CHANNEL_CH3N
1711 * @arg @ref LL_TIM_CHANNEL_CH4
1712 * @param Polarity This parameter can be one of the following values:
1713 * @arg @ref LL_TIM_OCPOLARITY_HIGH
1714 * @arg @ref LL_TIM_OCPOLARITY_LOW
1715 * @retval None
1716 */
1717 __STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity)
1718 {
1719 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1720 MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), Polarity << SHIFT_TAB_CCxP[iChannel]);
1721 }
1722
1723 /**
1724 * @brief Get the polarity of an output channel.
1725 * @rmtoll CCER CC1P LL_TIM_OC_GetPolarity\n
1726 * CCER CC1NP LL_TIM_OC_GetPolarity\n
1727 * CCER CC2P LL_TIM_OC_GetPolarity\n
1728 * CCER CC2NP LL_TIM_OC_GetPolarity\n
1729 * CCER CC3P LL_TIM_OC_GetPolarity\n
1730 * CCER CC3NP LL_TIM_OC_GetPolarity\n
1731 * CCER CC4P LL_TIM_OC_GetPolarity
1732 * @param TIMx Timer instance
1733 * @param Channel This parameter can be one of the following values:
1734 * @arg @ref LL_TIM_CHANNEL_CH1
1735 * @arg @ref LL_TIM_CHANNEL_CH1N
1736 * @arg @ref LL_TIM_CHANNEL_CH2
1737 * @arg @ref LL_TIM_CHANNEL_CH2N
1738 * @arg @ref LL_TIM_CHANNEL_CH3
1739 * @arg @ref LL_TIM_CHANNEL_CH3N
1740 * @arg @ref LL_TIM_CHANNEL_CH4
1741 * @retval Returned value can be one of the following values:
1742 * @arg @ref LL_TIM_OCPOLARITY_HIGH
1743 * @arg @ref LL_TIM_OCPOLARITY_LOW
1744 */
1745 __STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel)
1746 {
1747 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1748 return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChannel]);
1749 }
1750
1751 /**
1752 * @brief Set the IDLE state of an output channel
1753 * @note This function is significant only for the timer instances
1754 * supporting the break feature. Macro @ref IS_TIM_BREAK_INSTANCE(TIMx)
1755 * can be used to check whether or not a timer instance provides
1756 * a break input.
1757 * @rmtoll CR2 OIS1 LL_TIM_OC_SetIdleState\n
1758 * CR2 OIS1N LL_TIM_OC_SetIdleState\n
1759 * CR2 OIS2 LL_TIM_OC_SetIdleState\n
1760 * CR2 OIS2N LL_TIM_OC_SetIdleState\n
1761 * CR2 OIS3 LL_TIM_OC_SetIdleState\n
1762 * CR2 OIS3N LL_TIM_OC_SetIdleState\n
1763 * CR2 OIS4 LL_TIM_OC_SetIdleState
1764 * @param TIMx Timer instance
1765 * @param Channel This parameter can be one of the following values:
1766 * @arg @ref LL_TIM_CHANNEL_CH1
1767 * @arg @ref LL_TIM_CHANNEL_CH1N
1768 * @arg @ref LL_TIM_CHANNEL_CH2
1769 * @arg @ref LL_TIM_CHANNEL_CH2N
1770 * @arg @ref LL_TIM_CHANNEL_CH3
1771 * @arg @ref LL_TIM_CHANNEL_CH3N
1772 * @arg @ref LL_TIM_CHANNEL_CH4
1773 * @param IdleState This parameter can be one of the following values:
1774 * @arg @ref LL_TIM_OCIDLESTATE_LOW
1775 * @arg @ref LL_TIM_OCIDLESTATE_HIGH
1776 * @retval None
1777 */
1778 __STATIC_INLINE void LL_TIM_OC_SetIdleState(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t IdleState)
1779 {
1780 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1781 MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), IdleState << SHIFT_TAB_OISx[iChannel]);
1782 }
1783
1784 /**
1785 * @brief Get the IDLE state of an output channel
1786 * @rmtoll CR2 OIS1 LL_TIM_OC_GetIdleState\n
1787 * CR2 OIS1N LL_TIM_OC_GetIdleState\n
1788 * CR2 OIS2 LL_TIM_OC_GetIdleState\n
1789 * CR2 OIS2N LL_TIM_OC_GetIdleState\n
1790 * CR2 OIS3 LL_TIM_OC_GetIdleState\n
1791 * CR2 OIS3N LL_TIM_OC_GetIdleState\n
1792 * CR2 OIS4 LL_TIM_OC_GetIdleState
1793 * @param TIMx Timer instance
1794 * @param Channel This parameter can be one of the following values:
1795 * @arg @ref LL_TIM_CHANNEL_CH1
1796 * @arg @ref LL_TIM_CHANNEL_CH1N
1797 * @arg @ref LL_TIM_CHANNEL_CH2
1798 * @arg @ref LL_TIM_CHANNEL_CH2N
1799 * @arg @ref LL_TIM_CHANNEL_CH3
1800 * @arg @ref LL_TIM_CHANNEL_CH3N
1801 * @arg @ref LL_TIM_CHANNEL_CH4
1802 * @retval Returned value can be one of the following values:
1803 * @arg @ref LL_TIM_OCIDLESTATE_LOW
1804 * @arg @ref LL_TIM_OCIDLESTATE_HIGH
1805 */
1806 __STATIC_INLINE uint32_t LL_TIM_OC_GetIdleState(TIM_TypeDef *TIMx, uint32_t Channel)
1807 {
1808 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1809 return (READ_BIT(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel])) >> SHIFT_TAB_OISx[iChannel]);
1810 }
1811
1812 /**
1813 * @brief Enable fast mode for the output channel.
1814 * @note Acts only if the channel is configured in PWM1 or PWM2 mode.
1815 * @rmtoll CCMR1 OC1FE LL_TIM_OC_EnableFast\n
1816 * CCMR1 OC2FE LL_TIM_OC_EnableFast\n
1817 * CCMR2 OC3FE LL_TIM_OC_EnableFast\n
1818 * CCMR2 OC4FE LL_TIM_OC_EnableFast
1819 * @param TIMx Timer instance
1820 * @param Channel This parameter can be one of the following values:
1821 * @arg @ref LL_TIM_CHANNEL_CH1
1822 * @arg @ref LL_TIM_CHANNEL_CH2
1823 * @arg @ref LL_TIM_CHANNEL_CH3
1824 * @arg @ref LL_TIM_CHANNEL_CH4
1825 * @retval None
1826 */
1827 __STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1828 {
1829 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1830 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1831 SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1832
1833 }
1834
1835 /**
1836 * @brief Disable fast mode for the output channel.
1837 * @rmtoll CCMR1 OC1FE LL_TIM_OC_DisableFast\n
1838 * CCMR1 OC2FE LL_TIM_OC_DisableFast\n
1839 * CCMR2 OC3FE LL_TIM_OC_DisableFast\n
1840 * CCMR2 OC4FE LL_TIM_OC_DisableFast
1841 * @param TIMx Timer instance
1842 * @param Channel This parameter can be one of the following values:
1843 * @arg @ref LL_TIM_CHANNEL_CH1
1844 * @arg @ref LL_TIM_CHANNEL_CH2
1845 * @arg @ref LL_TIM_CHANNEL_CH3
1846 * @arg @ref LL_TIM_CHANNEL_CH4
1847 * @retval None
1848 */
1849 __STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1850 {
1851 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1852 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1853 CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1854
1855 }
1856
1857 /**
1858 * @brief Indicates whether fast mode is enabled for the output channel.
1859 * @rmtoll CCMR1 OC1FE LL_TIM_OC_IsEnabledFast\n
1860 * CCMR1 OC2FE LL_TIM_OC_IsEnabledFast\n
1861 * CCMR2 OC3FE LL_TIM_OC_IsEnabledFast\n
1862 * CCMR2 OC4FE LL_TIM_OC_IsEnabledFast\n
1863 * @param TIMx Timer instance
1864 * @param Channel This parameter can be one of the following values:
1865 * @arg @ref LL_TIM_CHANNEL_CH1
1866 * @arg @ref LL_TIM_CHANNEL_CH2
1867 * @arg @ref LL_TIM_CHANNEL_CH3
1868 * @arg @ref LL_TIM_CHANNEL_CH4
1869 * @retval State of bit (1 or 0).
1870 */
1871 __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(TIM_TypeDef *TIMx, uint32_t Channel)
1872 {
1873 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1874 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1875 register uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel];
1876 return (READ_BIT(*pReg, bitfield) == bitfield);
1877 }
1878
1879 /**
1880 * @brief Enable compare register (TIMx_CCRx) preload for the output channel.
1881 * @rmtoll CCMR1 OC1PE LL_TIM_OC_EnablePreload\n
1882 * CCMR1 OC2PE LL_TIM_OC_EnablePreload\n
1883 * CCMR2 OC3PE LL_TIM_OC_EnablePreload\n
1884 * CCMR2 OC4PE LL_TIM_OC_EnablePreload
1885 * @param TIMx Timer instance
1886 * @param Channel This parameter can be one of the following values:
1887 * @arg @ref LL_TIM_CHANNEL_CH1
1888 * @arg @ref LL_TIM_CHANNEL_CH2
1889 * @arg @ref LL_TIM_CHANNEL_CH3
1890 * @arg @ref LL_TIM_CHANNEL_CH4
1891 * @retval None
1892 */
1893 __STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1894 {
1895 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1896 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1897 SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1898 }
1899
1900 /**
1901 * @brief Disable compare register (TIMx_CCRx) preload for the output channel.
1902 * @rmtoll CCMR1 OC1PE LL_TIM_OC_DisablePreload\n
1903 * CCMR1 OC2PE LL_TIM_OC_DisablePreload\n
1904 * CCMR2 OC3PE LL_TIM_OC_DisablePreload\n
1905 * CCMR2 OC4PE LL_TIM_OC_DisablePreload
1906 * @param TIMx Timer instance
1907 * @param Channel This parameter can be one of the following values:
1908 * @arg @ref LL_TIM_CHANNEL_CH1
1909 * @arg @ref LL_TIM_CHANNEL_CH2
1910 * @arg @ref LL_TIM_CHANNEL_CH3
1911 * @arg @ref LL_TIM_CHANNEL_CH4
1912 * @retval None
1913 */
1914 __STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1915 {
1916 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1917 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1918 CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1919 }
1920
1921 /**
1922 * @brief Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channel.
1923 * @rmtoll CCMR1 OC1PE LL_TIM_OC_IsEnabledPreload\n
1924 * CCMR1 OC2PE LL_TIM_OC_IsEnabledPreload\n
1925 * CCMR2 OC3PE LL_TIM_OC_IsEnabledPreload\n
1926 * CCMR2 OC4PE LL_TIM_OC_IsEnabledPreload\n
1927 * @param TIMx Timer instance
1928 * @param Channel This parameter can be one of the following values:
1929 * @arg @ref LL_TIM_CHANNEL_CH1
1930 * @arg @ref LL_TIM_CHANNEL_CH2
1931 * @arg @ref LL_TIM_CHANNEL_CH3
1932 * @arg @ref LL_TIM_CHANNEL_CH4
1933 * @retval State of bit (1 or 0).
1934 */
1935 __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(TIM_TypeDef *TIMx, uint32_t Channel)
1936 {
1937 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1938 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1939 register uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel];
1940 return (READ_BIT(*pReg, bitfield) == bitfield);
1941 }
1942
1943 /**
1944 * @brief Enable clearing the output channel on an external event.
1945 * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode.
1946 * @note Macro @ref IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
1947 * or not a timer instance can clear the OCxREF signal on an external event.
1948 * @rmtoll CCMR1 OC1CE LL_TIM_OC_EnableClear\n
1949 * CCMR1 OC2CE LL_TIM_OC_EnableClear\n
1950 * CCMR2 OC3CE LL_TIM_OC_EnableClear\n
1951 * CCMR2 OC4CE LL_TIM_OC_EnableClear
1952 * @param TIMx Timer instance
1953 * @param Channel This parameter can be one of the following values:
1954 * @arg @ref LL_TIM_CHANNEL_CH1
1955 * @arg @ref LL_TIM_CHANNEL_CH2
1956 * @arg @ref LL_TIM_CHANNEL_CH3
1957 * @arg @ref LL_TIM_CHANNEL_CH4
1958 * @retval None
1959 */
1960 __STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel)
1961 {
1962 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1963 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1964 SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
1965 }
1966
1967 /**
1968 * @brief Disable clearing the output channel on an external event.
1969 * @note Macro @ref IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
1970 * or not a timer instance can clear the OCxREF signal on an external event.
1971 * @rmtoll CCMR1 OC1CE LL_TIM_OC_DisableClear\n
1972 * CCMR1 OC2CE LL_TIM_OC_DisableClear\n
1973 * CCMR2 OC3CE LL_TIM_OC_DisableClear\n
1974 * CCMR2 OC4CE LL_TIM_OC_DisableClear
1975 * @param TIMx Timer instance
1976 * @param Channel This parameter can be one of the following values:
1977 * @arg @ref LL_TIM_CHANNEL_CH1
1978 * @arg @ref LL_TIM_CHANNEL_CH2
1979 * @arg @ref LL_TIM_CHANNEL_CH3
1980 * @arg @ref LL_TIM_CHANNEL_CH4
1981 * @retval None
1982 */
1983 __STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel)
1984 {
1985 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1986 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1987 CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
1988 }
1989
1990 /**
1991 * @brief Indicates clearing the output channel on an external event is enabled for the output channel.
1992 * @note This function enables clearing the output channel on an external event.
1993 * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode.
1994 * @note Macro @ref IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
1995 * or not a timer instance can clear the OCxREF signal on an external event.
1996 * @rmtoll CCMR1 OC1CE LL_TIM_OC_IsEnabledClear\n
1997 * CCMR1 OC2CE LL_TIM_OC_IsEnabledClear\n
1998 * CCMR2 OC3CE LL_TIM_OC_IsEnabledClear\n
1999 * CCMR2 OC4CE LL_TIM_OC_IsEnabledClear\n
2000 * @param TIMx Timer instance
2001 * @param Channel This parameter can be one of the following values:
2002 * @arg @ref LL_TIM_CHANNEL_CH1
2003 * @arg @ref LL_TIM_CHANNEL_CH2
2004 * @arg @ref LL_TIM_CHANNEL_CH3
2005 * @arg @ref LL_TIM_CHANNEL_CH4
2006 * @retval State of bit (1 or 0).
2007 */
2008 __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(TIM_TypeDef *TIMx, uint32_t Channel)
2009 {
2010 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2011 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2012 register uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel];
2013 return (READ_BIT(*pReg, bitfield) == bitfield);
2014 }
2015
2016 /**
2017 * @brief Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal and the rising edge if the Ocx and OCxN signals).
2018 * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2019 * dead-time insertion feature is supported by a timer instance.
2020 * @note Helper macro @ref __LL_TIM_CALC_DEADTIME can be used to calculate the DeadTime parameter
2021 * @rmtoll BDTR DTG LL_TIM_OC_SetDeadTime
2022 * @param TIMx Timer instance
2023 * @param DeadTime between Min_Data=0 and Max_Data=255
2024 * @retval None
2025 */
2026 __STATIC_INLINE void LL_TIM_OC_SetDeadTime(TIM_TypeDef *TIMx, uint32_t DeadTime)
2027 {
2028 MODIFY_REG(TIMx->BDTR, TIM_BDTR_DTG, DeadTime);
2029 }
2030
2031 /**
2032 * @brief Set compare value for output channel 1 (TIMx_CCR1).
2033 * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF.
2034 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
2035 * whether or not a timer instance supports a 32 bits counter.
2036 * @note Macro @ref IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
2037 * output channel 1 is supported by a timer instance.
2038 * @rmtoll CCR1 CCR1 LL_TIM_OC_SetCompareCH1
2039 * @param TIMx Timer instance
2040 * @param CompareValue between Min_Data=0 and Max_Data=65535
2041 * @retval None
2042 */
2043 __STATIC_INLINE void LL_TIM_OC_SetCompareCH1(TIM_TypeDef *TIMx, uint32_t CompareValue)
2044 {
2045 WRITE_REG(TIMx->CCR1, CompareValue);
2046 }
2047
2048 /**
2049 * @brief Set compare value for output channel 2 (TIMx_CCR2).
2050 * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF.
2051 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
2052 * whether or not a timer instance supports a 32 bits counter.
2053 * @note Macro @ref IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
2054 * output channel 2 is supported by a timer instance.
2055 * @rmtoll CCR2 CCR2 LL_TIM_OC_SetCompareCH2
2056 * @param TIMx Timer instance
2057 * @param CompareValue between Min_Data=0 and Max_Data=65535
2058 * @retval None
2059 */
2060 __STATIC_INLINE void LL_TIM_OC_SetCompareCH2(TIM_TypeDef *TIMx, uint32_t CompareValue)
2061 {
2062 WRITE_REG(TIMx->CCR2, CompareValue);
2063 }
2064
2065 /**
2066 * @brief Set compare value for output channel 3 (TIMx_CCR3).
2067 * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF.
2068 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
2069 * whether or not a timer instance supports a 32 bits counter.
2070 * @note Macro @ref IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
2071 * output channel is supported by a timer instance.
2072 * @rmtoll CCR3 CCR3 LL_TIM_OC_SetCompareCH3
2073 * @param TIMx Timer instance
2074 * @param CompareValue between Min_Data=0 and Max_Data=65535
2075 * @retval None
2076 */
2077 __STATIC_INLINE void LL_TIM_OC_SetCompareCH3(TIM_TypeDef *TIMx, uint32_t CompareValue)
2078 {
2079 WRITE_REG(TIMx->CCR3, CompareValue);
2080 }
2081
2082 /**
2083 * @brief Set compare value for output channel 4 (TIMx_CCR4).
2084 * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF.
2085 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
2086 * whether or not a timer instance supports a 32 bits counter.
2087 * @note Macro @ref IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
2088 * output channel 4 is supported by a timer instance.
2089 * @rmtoll CCR4 CCR4 LL_TIM_OC_SetCompareCH4
2090 * @param TIMx Timer instance
2091 * @param CompareValue between Min_Data=0 and Max_Data=65535
2092 * @retval None
2093 */
2094 __STATIC_INLINE void LL_TIM_OC_SetCompareCH4(TIM_TypeDef *TIMx, uint32_t CompareValue)
2095 {
2096 WRITE_REG(TIMx->CCR4, CompareValue);
2097 }
2098
2099 /**
2100 * @brief Get compare value (TIMx_CCR1) set for output channel 1.
2101 * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF.
2102 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
2103 * whether or not a timer instance supports a 32 bits counter.
2104 * @note Macro @ref IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
2105 * output channel 1 is supported by a timer instance.
2106 * @rmtoll CCR1 CCR1 LL_TIM_OC_GetCompareCH1
2107 * @param TIMx Timer instance
2108 * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
2109 */
2110 __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH1(TIM_TypeDef *TIMx)
2111 {
2112 return (uint32_t)(READ_REG(TIMx->CCR1));
2113 }
2114
2115 /**
2116 * @brief Get compare value (TIMx_CCR2) set for output channel 2.
2117 * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF.
2118 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
2119 * whether or not a timer instance supports a 32 bits counter.
2120 * @note Macro @ref IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
2121 * output channel 2 is supported by a timer instance.
2122 * @rmtoll CCR2 CCR2 LL_TIM_OC_GetCompareCH2
2123 * @param TIMx Timer instance
2124 * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
2125 */
2126 __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH2(TIM_TypeDef *TIMx)
2127 {
2128 return (uint32_t)(READ_REG(TIMx->CCR2));
2129 }
2130
2131 /**
2132 * @brief Get compare value (TIMx_CCR3) set for output channel 3.
2133 * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF.
2134 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
2135 * whether or not a timer instance supports a 32 bits counter.
2136 * @note Macro @ref IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
2137 * output channel 3 is supported by a timer instance.
2138 * @rmtoll CCR3 CCR3 LL_TIM_OC_GetCompareCH3
2139 * @param TIMx Timer instance
2140 * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
2141 */
2142 __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH3(TIM_TypeDef *TIMx)
2143 {
2144 return (uint32_t)(READ_REG(TIMx->CCR3));
2145 }
2146
2147 /**
2148 * @brief Get compare value (TIMx_CCR4) set for output channel 4.
2149 * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF.
2150 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
2151 * whether or not a timer instance supports a 32 bits counter.
2152 * @note Macro @ref IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
2153 * output channel 4 is supported by a timer instance.
2154 * @rmtoll CCR4 CCR4 LL_TIM_OC_GetCompareCH4
2155 * @param TIMx Timer instance
2156 * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
2157 */
2158 __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH4(TIM_TypeDef *TIMx)
2159 {
2160 return (uint32_t)(READ_REG(TIMx->CCR4));
2161 }
2162
2163 /**
2164 * @}
2165 */
2166
2167 /** @defgroup TIM_LL_EF_Input_Channel Input channel configuration
2168 * @{
2169 */
2170 /**
2171 * @brief Configure input channel.
2172 * @rmtoll CCMR1 CC1S LL_TIM_IC_Config\n
2173 * CCMR1 IC1PSC LL_TIM_IC_Config\n
2174 * CCMR1 IC1F LL_TIM_IC_Config\n
2175 * CCMR1 CC2S LL_TIM_IC_Config\n
2176 * CCMR1 IC2PSC LL_TIM_IC_Config\n
2177 * CCMR1 IC2F LL_TIM_IC_Config\n
2178 * CCMR2 CC3S LL_TIM_IC_Config\n
2179 * CCMR2 IC3PSC LL_TIM_IC_Config\n
2180 * CCMR2 IC3F LL_TIM_IC_Config\n
2181 * CCMR2 CC4S LL_TIM_IC_Config\n
2182 * CCMR2 IC4PSC LL_TIM_IC_Config\n
2183 * CCMR2 IC4F LL_TIM_IC_Config\n
2184 * CCER CC1P LL_TIM_IC_Config\n
2185 * CCER CC1NP LL_TIM_IC_Config\n
2186 * CCER CC2P LL_TIM_IC_Config\n
2187 * CCER CC2NP LL_TIM_IC_Config\n
2188 * CCER CC3P LL_TIM_IC_Config\n
2189 * CCER CC3NP LL_TIM_IC_Config\n
2190 * CCER CC4P LL_TIM_IC_Config\n
2191 * CCER CC4NP LL_TIM_IC_Config
2192 * @param TIMx Timer instance
2193 * @param Channel This parameter can be one of the following values:
2194 * @arg @ref LL_TIM_CHANNEL_CH1
2195 * @arg @ref LL_TIM_CHANNEL_CH2
2196 * @arg @ref LL_TIM_CHANNEL_CH3
2197 * @arg @ref LL_TIM_CHANNEL_CH4
2198 * @param Configuration This parameter must be a combination of all the following values:
2199 * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI or @ref LL_TIM_ACTIVEINPUT_INDIRECTTI or @ref LL_TIM_ACTIVEINPUT_TRC
2200 * @arg @ref LL_TIM_ICPSC_DIV1 or ... or @ref LL_TIM_ICPSC_DIV8
2201 * @arg @ref LL_TIM_IC_FILTER_FDIV1 or ... or @ref LL_TIM_IC_FILTER_FDIV32_N8
2202 * @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING or @ref LL_TIM_IC_POLARITY_BOTHEDGE
2203 * @retval None
2204 */
2205 __STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
2206 {
2207 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2208 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2209 MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]),
2210 ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S)) << SHIFT_TAB_ICxx[iChannel]);
2211 MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
2212 (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]);
2213 }
2214
2215 /**
2216 * @brief Set the active input.
2217 * @rmtoll CCMR1 CC1S LL_TIM_IC_SetActiveInput\n
2218 * CCMR1 CC2S LL_TIM_IC_SetActiveInput\n
2219 * CCMR2 CC3S LL_TIM_IC_SetActiveInput\n
2220 * CCMR2 CC4S LL_TIM_IC_SetActiveInput
2221 * @param TIMx Timer instance
2222 * @param Channel This parameter can be one of the following values:
2223 * @arg @ref LL_TIM_CHANNEL_CH1
2224 * @arg @ref LL_TIM_CHANNEL_CH2
2225 * @arg @ref LL_TIM_CHANNEL_CH3
2226 * @arg @ref LL_TIM_CHANNEL_CH4
2227 * @param ICActiveInput This parameter can be one of the following values:
2228 * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI
2229 * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI
2230 * @arg @ref LL_TIM_ACTIVEINPUT_TRC
2231 * @retval None
2232 */
2233 __STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiveInput)
2234 {
2235 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2236 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2237 MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT_TAB_ICxx[iChannel]);
2238 }
2239
2240 /**
2241 * @brief Get the current active input.
2242 * @rmtoll CCMR1 CC1S LL_TIM_IC_GetActiveInput\n
2243 * CCMR1 CC2S LL_TIM_IC_GetActiveInput\n
2244 * CCMR2 CC3S LL_TIM_IC_GetActiveInput\n
2245 * CCMR2 CC4S LL_TIM_IC_GetActiveInput
2246 * @param TIMx Timer instance
2247 * @param Channel This parameter can be one of the following values:
2248 * @arg @ref LL_TIM_CHANNEL_CH1
2249 * @arg @ref LL_TIM_CHANNEL_CH2
2250 * @arg @ref LL_TIM_CHANNEL_CH3
2251 * @arg @ref LL_TIM_CHANNEL_CH4
2252 * @retval Returned value can be one of the following values:
2253 * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI
2254 * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI
2255 * @arg @ref LL_TIM_ACTIVEINPUT_TRC
2256 */
2257 __STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel)
2258 {
2259 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2260 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2261 return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2262 }
2263
2264 /**
2265 * @brief Set the prescaler of input channel.
2266 * @rmtoll CCMR1 IC1PSC LL_TIM_IC_SetPrescaler\n
2267 * CCMR1 IC2PSC LL_TIM_IC_SetPrescaler\n
2268 * CCMR2 IC3PSC LL_TIM_IC_SetPrescaler\n
2269 * CCMR2 IC4PSC LL_TIM_IC_SetPrescaler
2270 * @param TIMx Timer instance
2271 * @param Channel This parameter can be one of the following values:
2272 * @arg @ref LL_TIM_CHANNEL_CH1
2273 * @arg @ref LL_TIM_CHANNEL_CH2
2274 * @arg @ref LL_TIM_CHANNEL_CH3
2275 * @arg @ref LL_TIM_CHANNEL_CH4
2276 * @param ICPrescaler This parameter can be one of the following values:
2277 * @arg @ref LL_TIM_ICPSC_DIV1
2278 * @arg @ref LL_TIM_ICPSC_DIV2
2279 * @arg @ref LL_TIM_ICPSC_DIV4
2280 * @arg @ref LL_TIM_ICPSC_DIV8
2281 * @retval None
2282 */
2283 __STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescaler)
2284 {
2285 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2286 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2287 MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT_TAB_ICxx[iChannel]);
2288 }
2289
2290 /**
2291 * @brief Get the current prescaler value acting on an input channel.
2292 * @rmtoll CCMR1 IC1PSC LL_TIM_IC_GetPrescaler\n
2293 * CCMR1 IC2PSC LL_TIM_IC_GetPrescaler\n
2294 * CCMR2 IC3PSC LL_TIM_IC_GetPrescaler\n
2295 * CCMR2 IC4PSC LL_TIM_IC_GetPrescaler
2296 * @param TIMx Timer instance
2297 * @param Channel This parameter can be one of the following values:
2298 * @arg @ref LL_TIM_CHANNEL_CH1
2299 * @arg @ref LL_TIM_CHANNEL_CH2
2300 * @arg @ref LL_TIM_CHANNEL_CH3
2301 * @arg @ref LL_TIM_CHANNEL_CH4
2302 * @retval Returned value can be one of the following values:
2303 * @arg @ref LL_TIM_ICPSC_DIV1
2304 * @arg @ref LL_TIM_ICPSC_DIV2
2305 * @arg @ref LL_TIM_ICPSC_DIV4
2306 * @arg @ref LL_TIM_ICPSC_DIV8
2307 */
2308 __STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel)
2309 {
2310 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2311 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2312 return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2313 }
2314
2315 /**
2316 * @brief Set the input filter duration.
2317 * @rmtoll CCMR1 IC1F LL_TIM_IC_SetFilter\n
2318 * CCMR1 IC2F LL_TIM_IC_SetFilter\n
2319 * CCMR2 IC3F LL_TIM_IC_SetFilter\n
2320 * CCMR2 IC4F LL_TIM_IC_SetFilter
2321 * @param TIMx Timer instance
2322 * @param Channel This parameter can be one of the following values:
2323 * @arg @ref LL_TIM_CHANNEL_CH1
2324 * @arg @ref LL_TIM_CHANNEL_CH2
2325 * @arg @ref LL_TIM_CHANNEL_CH3
2326 * @arg @ref LL_TIM_CHANNEL_CH4
2327 * @param ICFilter This parameter can be one of the following values:
2328 * @arg @ref LL_TIM_IC_FILTER_FDIV1
2329 * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2
2330 * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4
2331 * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8
2332 * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6
2333 * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8
2334 * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6
2335 * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8
2336 * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6
2337 * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8
2338 * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5
2339 * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6
2340 * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8
2341 * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5
2342 * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6
2343 * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
2344 * @retval None
2345 */
2346 __STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter)
2347 {
2348 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2349 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2350 MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ICxx[iChannel]);
2351 }
2352
2353 /**
2354 * @brief Get the input filter duration.
2355 * @rmtoll CCMR1 IC1F LL_TIM_IC_GetFilter\n
2356 * CCMR1 IC2F LL_TIM_IC_GetFilter\n
2357 * CCMR2 IC3F LL_TIM_IC_GetFilter\n
2358 * CCMR2 IC4F LL_TIM_IC_GetFilter
2359 * @param TIMx Timer instance
2360 * @param Channel This parameter can be one of the following values:
2361 * @arg @ref LL_TIM_CHANNEL_CH1
2362 * @arg @ref LL_TIM_CHANNEL_CH2
2363 * @arg @ref LL_TIM_CHANNEL_CH3
2364 * @arg @ref LL_TIM_CHANNEL_CH4
2365 * @retval Returned value can be one of the following values:
2366 * @arg @ref LL_TIM_IC_FILTER_FDIV1
2367 * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2
2368 * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4
2369 * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8
2370 * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6
2371 * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8
2372 * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6
2373 * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8
2374 * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6
2375 * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8
2376 * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5
2377 * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6
2378 * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8
2379 * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5
2380 * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6
2381 * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
2382 */
2383 __STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(TIM_TypeDef *TIMx, uint32_t Channel)
2384 {
2385 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2386 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2387 return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2388 }
2389
2390 /**
2391 * @brief Set the input channel polarity.
2392 * @rmtoll CCER CC1P LL_TIM_IC_SetPolarity\n
2393 * CCER CC1NP LL_TIM_IC_SetPolarity\n
2394 * CCER CC2P LL_TIM_IC_SetPolarity\n
2395 * CCER CC2NP LL_TIM_IC_SetPolarity\n
2396 * CCER CC3P LL_TIM_IC_SetPolarity\n
2397 * CCER CC3NP LL_TIM_IC_SetPolarity\n
2398 * CCER CC4P LL_TIM_IC_SetPolarity\n
2399 * CCER CC4NP LL_TIM_IC_SetPolarity
2400 * @param TIMx Timer instance
2401 * @param Channel This parameter can be one of the following values:
2402 * @arg @ref LL_TIM_CHANNEL_CH1
2403 * @arg @ref LL_TIM_CHANNEL_CH2
2404 * @arg @ref LL_TIM_CHANNEL_CH3
2405 * @arg @ref LL_TIM_CHANNEL_CH4
2406 * @param ICPolarity This parameter can be one of the following values:
2407 * @arg @ref LL_TIM_IC_POLARITY_RISING
2408 * @arg @ref LL_TIM_IC_POLARITY_FALLING
2409 * @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE
2410 * @retval None
2411 */
2412 __STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity)
2413 {
2414 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2415 MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
2416 ICPolarity << SHIFT_TAB_CCxP[iChannel]);
2417 }
2418
2419 /**
2420 * @brief Get the current input channel polarity.
2421 * @rmtoll CCER CC1P LL_TIM_IC_GetPolarity\n
2422 * CCER CC1NP LL_TIM_IC_GetPolarity\n
2423 * CCER CC2P LL_TIM_IC_GetPolarity\n
2424 * CCER CC2NP LL_TIM_IC_GetPolarity\n
2425 * CCER CC3P LL_TIM_IC_GetPolarity\n
2426 * CCER CC3NP LL_TIM_IC_GetPolarity\n
2427 * CCER CC4P LL_TIM_IC_GetPolarity\n
2428 * CCER CC4NP LL_TIM_IC_GetPolarity
2429 * @param TIMx Timer instance
2430 * @param Channel This parameter can be one of the following values:
2431 * @arg @ref LL_TIM_CHANNEL_CH1
2432 * @arg @ref LL_TIM_CHANNEL_CH2
2433 * @arg @ref LL_TIM_CHANNEL_CH3
2434 * @arg @ref LL_TIM_CHANNEL_CH4
2435 * @retval Returned value can be one of the following values:
2436 * @arg @ref LL_TIM_IC_POLARITY_RISING
2437 * @arg @ref LL_TIM_IC_POLARITY_FALLING
2438 * @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE
2439 */
2440 __STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel)
2441 {
2442 register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2443 return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >>
2444 SHIFT_TAB_CCxP[iChannel]);
2445 }
2446
2447 /**
2448 * @brief Connect the TIMx_CH1, CH2 and CH3 pins to the TI1 input (XOR combination).
2449 * @note Macro @ref IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
2450 * a timer instance provides an XOR input.
2451 * @rmtoll CR2 TI1S LL_TIM_IC_EnableXORCombination
2452 * @param TIMx Timer instance
2453 * @retval None
2454 */
2455 __STATIC_INLINE void LL_TIM_IC_EnableXORCombination(TIM_TypeDef *TIMx)
2456 {
2457 SET_BIT(TIMx->CR2, TIM_CR2_TI1S);
2458 }
2459
2460 /**
2461 * @brief Disconnect the TIMx_CH1, CH2 and CH3 pins from the TI1 input.
2462 * @note Macro @ref IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
2463 * a timer instance provides an XOR input.
2464 * @rmtoll CR2 TI1S LL_TIM_IC_DisableXORCombination
2465 * @param TIMx Timer instance
2466 * @retval None
2467 */
2468 __STATIC_INLINE void LL_TIM_IC_DisableXORCombination(TIM_TypeDef *TIMx)
2469 {
2470 CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S);
2471 }
2472
2473 /**
2474 * @brief Indicates whether the TIMx_CH1, CH2 and CH3 pins are connectected to the TI1 input.
2475 * @note Macro @ref IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
2476 * a timer instance provides an XOR input.
2477 * @rmtoll CR2 TI1S LL_TIM_IC_IsEnabledXORCombination
2478 * @param TIMx Timer instance
2479 * @retval State of bit (1 or 0).
2480 */
2481 __STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(TIM_TypeDef *TIMx)
2482 {
2483 return (READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S));
2484 }
2485
2486 /**
2487 * @brief Get captured value for input channel 1.
2488 * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF.
2489 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
2490 * whether or not a timer instance supports a 32 bits counter.
2491 * @note Macro @ref IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
2492 * input channel 1 is supported by a timer instance.
2493 * @rmtoll CCR1 CCR1 LL_TIM_IC_GetCaptureCH1
2494 * @param TIMx Timer instance
2495 * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2496 */
2497 __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH1(TIM_TypeDef *TIMx)
2498 {
2499 return (uint32_t)(READ_REG(TIMx->CCR1));
2500 }
2501
2502 /**
2503 * @brief Get captured value for input channel 2.
2504 * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF.
2505 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
2506 * whether or not a timer instance supports a 32 bits counter.
2507 * @note Macro @ref IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
2508 * input channel 2 is supported by a timer instance.
2509 * @rmtoll CCR2 CCR2 LL_TIM_IC_GetCaptureCH2
2510 * @param TIMx Timer instance
2511 * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2512 */
2513 __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH2(TIM_TypeDef *TIMx)
2514 {
2515 return (uint32_t)(READ_REG(TIMx->CCR2));
2516 }
2517
2518 /**
2519 * @brief Get captured value for input channel 3.
2520 * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF.
2521 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
2522 * whether or not a timer instance supports a 32 bits counter.
2523 * @note Macro @ref IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
2524 * input channel 3 is supported by a timer instance.
2525 * @rmtoll CCR3 CCR3 LL_TIM_IC_GetCaptureCH3
2526 * @param TIMx Timer instance
2527 * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2528 */
2529 __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH3(TIM_TypeDef *TIMx)
2530 {
2531 return (uint32_t)(READ_REG(TIMx->CCR3));
2532 }
2533
2534 /**
2535 * @brief Get captured value for input channel 4.
2536 * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF.
2537 * @note Macro @ref IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
2538 * whether or not a timer instance supports a 32 bits counter.
2539 * @note Macro @ref IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
2540 * input channel 4 is supported by a timer instance.
2541 * @rmtoll CCR4 CCR4 LL_TIM_IC_GetCaptureCH4
2542 * @param TIMx Timer instance
2543 * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2544 */
2545 __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH4(TIM_TypeDef *TIMx)
2546 {
2547 return (uint32_t)(READ_REG(TIMx->CCR4));
2548 }
2549
2550 /**
2551 * @}
2552 */
2553
2554 /** @defgroup TIM_LL_EF_Clock_Selection Counter clock selection
2555 * @{
2556 */
2557 /**
2558 * @brief Enable external clock mode 2.
2559 * @note When external clock mode 2 is enabled the counter is clocked by any active edge on the ETRF signal.
2560 * @note Macro @ref IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2561 * whether or not a timer instance supports external clock mode2.
2562 * @rmtoll SMCR ECE LL_TIM_EnableExternalClock
2563 * @param TIMx Timer instance
2564 * @retval None
2565 */
2566 __STATIC_INLINE void LL_TIM_EnableExternalClock(TIM_TypeDef *TIMx)
2567 {
2568 SET_BIT(TIMx->SMCR, TIM_SMCR_ECE);
2569 }
2570
2571 /**
2572 * @brief Disable external clock mode 2.
2573 * @note Macro @ref IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2574 * whether or not a timer instance supports external clock mode2.
2575 * @rmtoll SMCR ECE LL_TIM_DisableExternalClock
2576 * @param TIMx Timer instance
2577 * @retval None
2578 */
2579 __STATIC_INLINE void LL_TIM_DisableExternalClock(TIM_TypeDef *TIMx)
2580 {
2581 CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE);
2582 }
2583
2584 /**
2585 * @brief Indicate whether external clock mode 2 is enabled.
2586 * @note Macro @ref IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2587 * whether or not a timer instance supports external clock mode2.
2588 * @rmtoll SMCR ECE LL_TIM_IsEnabledExternalClock
2589 * @param TIMx Timer instance
2590 * @retval State of bit (1 or 0).
2591 */
2592 __STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(TIM_TypeDef *TIMx)
2593 {
2594 return (READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE));
2595 }
2596
2597 /**
2598 * @brief Set the clock source of the counter clock.
2599 * @note when selected clock source is external clock mode 1, the timer input
2600 * the external clock is applied is selected by calling the @ref LL_TIM_SetTriggerInput()
2601 * function. This timer input must be configured by calling
2602 * the @ref LL_TIM_IC_Config() function.
2603 * @note Macro @ref IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(TIMx) can be used to check
2604 * whether or not a timer instance supports external clock mode1.
2605 * @note Macro @ref IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2606 * whether or not a timer instance supports external clock mode2.
2607 * @rmtoll SMCR SMS LL_TIM_SetClockSource\n
2608 * SMCR ECE LL_TIM_SetClockSource
2609 * @param TIMx Timer instance
2610 * @param ClockSource This parameter can be one of the following values:
2611 * @arg @ref LL_TIM_CLOCKSOURCE_INTERNAL
2612 * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE1
2613 * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE2
2614 * @retval None
2615 */
2616 __STATIC_INLINE void LL_TIM_SetClockSource(TIM_TypeDef *TIMx, uint32_t ClockSource)
2617 {
2618 MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource);
2619 }
2620
2621 /**
2622 * @brief Set the encoder interface mode.
2623 * @note Macro @ref IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx) can be used to check
2624 * whether or not a timer instance supports the encoder mode.
2625 * @rmtoll SMCR SMS LL_TIM_SetEncoderMode
2626 * @param TIMx Timer instance
2627 * @param EncoderMode This parameter can be one of the following values:
2628 * @arg @ref LL_TIM_ENCODERMODE_X2_TI1
2629 * @arg @ref LL_TIM_ENCODERMODE_X2_TI2
2630 * @arg @ref LL_TIM_ENCODERMODE_X4_TI12
2631 * @retval None
2632 */
2633 __STATIC_INLINE void LL_TIM_SetEncoderMode(TIM_TypeDef *TIMx, uint32_t EncoderMode)
2634 {
2635 MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, EncoderMode);
2636 }
2637
2638 /**
2639 * @}
2640 */
2641
2642 /** @defgroup TIM_LL_EF_Timer_Synchronization Timer synchronisation configuration
2643 * @{
2644 */
2645 /**
2646 * @brief Set the trigger output (TRGO) used for timer synchronization .
2647 * @note Macro @ref IS_TIM_MASTER_INSTANCE(TIMx) can be used to check
2648 * whether or not a timer instance can operate as a master timer.
2649 * @rmtoll CR2 MMS LL_TIM_SetTriggerOutput
2650 * @param TIMx Timer instance
2651 * @param TimerSynchronization This parameter can be one of the following values:
2652 * @arg @ref LL_TIM_TRGO_RESET
2653 * @arg @ref LL_TIM_TRGO_ENABLE
2654 * @arg @ref LL_TIM_TRGO_UPDATE
2655 * @arg @ref LL_TIM_TRGO_CC1IF
2656 * @arg @ref LL_TIM_TRGO_OC1REF
2657 * @arg @ref LL_TIM_TRGO_OC2REF
2658 * @arg @ref LL_TIM_TRGO_OC3REF
2659 * @arg @ref LL_TIM_TRGO_OC4REF
2660 * @retval None
2661 */
2662 __STATIC_INLINE void LL_TIM_SetTriggerOutput(TIM_TypeDef *TIMx, uint32_t TimerSynchronization)
2663 {
2664 MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization);
2665 }
2666
2667 /**
2668 * @brief Set the synchronization mode of a slave timer.
2669 * @note Macro @ref IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2670 * a timer instance can operate as a slave timer.
2671 * @rmtoll SMCR SMS LL_TIM_SetSlaveMode
2672 * @param TIMx Timer instance
2673 * @param SlaveMode This parameter can be one of the following values:
2674 * @arg @ref LL_TIM_SLAVEMODE_DISABLED
2675 * @arg @ref LL_TIM_SLAVEMODE_RESET
2676 * @arg @ref LL_TIM_SLAVEMODE_GATED
2677 * @arg @ref LL_TIM_SLAVEMODE_TRIGGER
2678 * @retval None
2679 */
2680 __STATIC_INLINE void LL_TIM_SetSlaveMode(TIM_TypeDef *TIMx, uint32_t SlaveMode)
2681 {
2682 MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode);
2683 }
2684
2685 /**
2686 * @brief Set the selects the trigger input to be used to synchronize the counter.
2687 * @note Macro @ref IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2688 * a timer instance can operate as a slave timer.
2689 * @rmtoll SMCR TS LL_TIM_SetTriggerInput
2690 * @param TIMx Timer instance
2691 * @param TriggerInput This parameter can be one of the following values:
2692 * @arg @ref LL_TIM_TS_ITR0
2693 * @arg @ref LL_TIM_TS_ITR1
2694 * @arg @ref LL_TIM_TS_ITR2
2695 * @arg @ref LL_TIM_TS_ITR3
2696 * @arg @ref LL_TIM_TS_TI1F_ED
2697 * @arg @ref LL_TIM_TS_TI1FP1
2698 * @arg @ref LL_TIM_TS_TI2FP2
2699 * @arg @ref LL_TIM_TS_ETRF
2700 * @retval None
2701 */
2702 __STATIC_INLINE void LL_TIM_SetTriggerInput(TIM_TypeDef *TIMx, uint32_t TriggerInput)
2703 {
2704 MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput);
2705 }
2706
2707 /**
2708 * @brief Enable the Master/Slave mode.
2709 * @note Macro @ref IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2710 * a timer instance can operate as a slave timer.
2711 * @rmtoll SMCR MSM LL_TIM_EnableMasterSlaveMode
2712 * @param TIMx Timer instance
2713 * @retval None
2714 */
2715 __STATIC_INLINE void LL_TIM_EnableMasterSlaveMode(TIM_TypeDef *TIMx)
2716 {
2717 SET_BIT(TIMx->SMCR, TIM_SMCR_MSM);
2718 }
2719
2720 /**
2721 * @brief Disable the Master/Slave mode.
2722 * @note Macro @ref IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2723 * a timer instance can operate as a slave timer.
2724 * @rmtoll SMCR MSM LL_TIM_DisableMasterSlaveMode
2725 * @param TIMx Timer instance
2726 * @retval None
2727 */
2728 __STATIC_INLINE void LL_TIM_DisableMasterSlaveMode(TIM_TypeDef *TIMx)
2729 {
2730 CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM);
2731 }
2732
2733 /**
2734 * @brief Indicates whether the Master/Slave mode is enabled.
2735 * @note Macro @ref IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2736 * a timer instance can operate as a slave timer.
2737 * @rmtoll SMCR MSM LL_TIM_IsEnabledMasterSlaveMode
2738 * @param TIMx Timer instance
2739 * @retval State of bit (1 or 0).
2740 */
2741 __STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(TIM_TypeDef *TIMx)
2742 {
2743 return (READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM));
2744 }
2745
2746 /**
2747 * @brief Configure the external trigger (ETR) input.
2748 * @note Macro @ref IS_TIM_ETR_INSTANCE(TIMx) can be used to check whether or not
2749 * a timer instance provides an external trigger input.
2750 * @rmtoll SMCR ETP LL_TIM_ConfigETR\n
2751 * SMCR ETPS LL_TIM_ConfigETR\n
2752 * SMCR ETF LL_TIM_ConfigETR
2753 * @param TIMx Timer instance
2754 * @param ETRPolarity This parameter can be one of the following values:
2755 * @arg @ref LL_TIM_ETR_POLARITY_NONINVERTED
2756 * @arg @ref LL_TIM_ETR_POLARITY_INVERTED
2757 * @param ETRPrescaler This parameter can be one of the following values:
2758 * @arg @ref LL_TIM_ETR_PRESCALER_DIV1
2759 * @arg @ref LL_TIM_ETR_PRESCALER_DIV2
2760 * @arg @ref LL_TIM_ETR_PRESCALER_DIV4
2761 * @arg @ref LL_TIM_ETR_PRESCALER_DIV8
2762 * @param ETRFilter This parameter can be one of the following values:
2763 * @arg @ref LL_TIM_ETR_FILTER_FDIV1
2764 * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N2
2765 * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N4
2766 * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N8
2767 * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N6
2768 * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N8
2769 * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N6
2770 * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N8
2771 * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N6
2772 * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N8
2773 * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N5
2774 * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N6
2775 * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N8
2776 * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N5
2777 * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N6
2778 * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N8
2779 * @retval None
2780 */
2781 __STATIC_INLINE void LL_TIM_ConfigETR(TIM_TypeDef *TIMx, uint32_t ETRPolarity, uint32_t ETRPrescaler,
2782 uint32_t ETRFilter)
2783 {
2784 MODIFY_REG(TIMx->SMCR, TIM_SMCR_ETP | TIM_SMCR_ETPS | TIM_SMCR_ETF, ETRPolarity | ETRPrescaler | ETRFilter);
2785 }
2786
2787 /**
2788 * @}
2789 */
2790
2791 /** @defgroup TIM_LL_EF_Break_Function Break function configuration
2792 * @{
2793 */
2794 /**
2795 * @brief Enable the break function.
2796 * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2797 * a timer instance provides a break input.
2798 * @rmtoll BDTR BKE LL_TIM_EnableBRK
2799 * @param TIMx Timer instance
2800 * @retval None
2801 */
2802 __STATIC_INLINE void LL_TIM_EnableBRK(TIM_TypeDef *TIMx)
2803 {
2804 SET_BIT(TIMx->BDTR, TIM_BDTR_BKE);
2805 }
2806
2807 /**
2808 * @brief Disable the break function.
2809 * @rmtoll BDTR BKE LL_TIM_DisableBRK
2810 * @param TIMx Timer instance
2811 * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2812 * a timer instance provides a break input.
2813 * @retval None
2814 */
2815 __STATIC_INLINE void LL_TIM_DisableBRK(TIM_TypeDef *TIMx)
2816 {
2817 CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKE);
2818 }
2819
2820 /**
2821 * @brief Configure the break input.
2822 * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2823 * a timer instance provides a break input.
2824 * @rmtoll BDTR BKP LL_TIM_ConfigBRK
2825 * @param TIMx Timer instance
2826 * @param BreakPolarity This parameter can be one of the following values:
2827 * @arg @ref LL_TIM_BREAK_POLARITY_LOW
2828 * @arg @ref LL_TIM_BREAK_POLARITY_HIGH
2829 * @retval None
2830 */
2831 __STATIC_INLINE void LL_TIM_ConfigBRK(TIM_TypeDef *TIMx, uint32_t BreakPolarity)
2832 {
2833 MODIFY_REG(TIMx->BDTR, TIM_BDTR_BKP, BreakPolarity);
2834 }
2835
2836 /**
2837 * @brief Select the outputs off state (enabled v.s. disabled) in Idle and Run modes.
2838 * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2839 * a timer instance provides a break input.
2840 * @rmtoll BDTR OSSI LL_TIM_SetOffStates\n
2841 * BDTR OSSR LL_TIM_SetOffStates
2842 * @param TIMx Timer instance
2843 * @param OffStateIdle This parameter can be one of the following values:
2844 * @arg @ref LL_TIM_OSSI_DISABLE
2845 * @arg @ref LL_TIM_OSSI_ENABLE
2846 * @param OffStateRun This parameter can be one of the following values:
2847 * @arg @ref LL_TIM_OSSR_DISABLE
2848 * @arg @ref LL_TIM_OSSR_ENABLE
2849 * @retval None
2850 */
2851 __STATIC_INLINE void LL_TIM_SetOffStates(TIM_TypeDef *TIMx, uint32_t OffStateIdle, uint32_t OffStateRun)
2852 {
2853 MODIFY_REG(TIMx->BDTR, TIM_BDTR_OSSI | TIM_BDTR_OSSR, OffStateIdle | OffStateRun);
2854 }
2855
2856 /**
2857 * @brief Enable automatic output (MOE can be set by software or automatically when a break input is active).
2858 * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2859 * a timer instance provides a break input.
2860 * @rmtoll BDTR AOE LL_TIM_EnableAutomaticOutput
2861 * @param TIMx Timer instance
2862 * @retval None
2863 */
2864 __STATIC_INLINE void LL_TIM_EnableAutomaticOutput(TIM_TypeDef *TIMx)
2865 {
2866 SET_BIT(TIMx->BDTR, TIM_BDTR_AOE);
2867 }
2868
2869 /**
2870 * @brief Disable automatic output (MOE can be set only by software).
2871 * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2872 * a timer instance provides a break input.
2873 * @rmtoll BDTR AOE LL_TIM_DisableAutomaticOutput
2874 * @param TIMx Timer instance
2875 * @retval None
2876 */
2877 __STATIC_INLINE void LL_TIM_DisableAutomaticOutput(TIM_TypeDef *TIMx)
2878 {
2879 CLEAR_BIT(TIMx->BDTR, TIM_BDTR_AOE);
2880 }
2881
2882 /**
2883 * @brief Indicate whether automatic output is enabled.
2884 * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2885 * a timer instance provides a break input.
2886 * @rmtoll BDTR AOE LL_TIM_IsEnabledAutomaticOutput
2887 * @param TIMx Timer instance
2888 * @retval State of bit (1 or 0).
2889 */
2890 __STATIC_INLINE uint32_t LL_TIM_IsEnabledAutomaticOutput(TIM_TypeDef *TIMx)
2891 {
2892 return (READ_BIT(TIMx->BDTR, TIM_BDTR_AOE) == (TIM_BDTR_AOE));
2893 }
2894
2895 /**
2896 * @brief Enable the outputs (set the MOE bit in TIMx_BDTR register).
2897 * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by
2898 * software and is reset in case of break or break2 event
2899 * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2900 * a timer instance provides a break input.
2901 * @rmtoll BDTR MOE LL_TIM_EnableAllOutputs
2902 * @param TIMx Timer instance
2903 * @retval None
2904 */
2905 __STATIC_INLINE void LL_TIM_EnableAllOutputs(TIM_TypeDef *TIMx)
2906 {
2907 SET_BIT(TIMx->BDTR, TIM_BDTR_MOE);
2908 }
2909
2910 /**
2911 * @brief Disable the outputs (reset the MOE bit in TIMx_BDTR register).
2912 * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by
2913 * software and is reset in case of break or break2 event.
2914 * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2915 * a timer instance provides a break input.
2916 * @rmtoll BDTR MOE LL_TIM_DisableAllOutputs
2917 * @param TIMx Timer instance
2918 * @retval None
2919 */
2920 __STATIC_INLINE void LL_TIM_DisableAllOutputs(TIM_TypeDef *TIMx)
2921 {
2922 CLEAR_BIT(TIMx->BDTR, TIM_BDTR_MOE);
2923 }
2924
2925 /**
2926 * @brief Indicates whether outputs are enabled.
2927 * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2928 * a timer instance provides a break input.
2929 * @rmtoll BDTR MOE LL_TIM_IsEnabledAllOutputs
2930 * @param TIMx Timer instance
2931 * @retval State of bit (1 or 0).
2932 */
2933 __STATIC_INLINE uint32_t LL_TIM_IsEnabledAllOutputs(TIM_TypeDef *TIMx)
2934 {
2935 return (READ_BIT(TIMx->BDTR, TIM_BDTR_MOE) == (TIM_BDTR_MOE));
2936 }
2937
2938 /**
2939 * @}
2940 */
2941
2942 /** @defgroup TIM_LL_EF_DMA_Burst_Mode DMA burst mode configuration
2943 * @{
2944 */
2945 /**
2946 * @brief Configures the timer DMA burst feature.
2947 * @note Macro @ref IS_TIM_DMABURST_INSTANCE(TIMx) can be used to check whether or
2948 * not a timer instance supports the DMA burst mode.
2949 * @rmtoll DCR DBL LL_TIM_ConfigDMABurst\n
2950 * DCR DBA LL_TIM_ConfigDMABurst
2951 * @param TIMx Timer instance
2952 * @param DMABurstBaseAddress This parameter can be one of the following values:
2953 * @arg @ref LL_TIM_DMABURST_BASEADDR_CR1
2954 * @arg @ref LL_TIM_DMABURST_BASEADDR_CR2
2955 * @arg @ref LL_TIM_DMABURST_BASEADDR_SMCR
2956 * @arg @ref LL_TIM_DMABURST_BASEADDR_DIER
2957 * @arg @ref LL_TIM_DMABURST_BASEADDR_SR
2958 * @arg @ref LL_TIM_DMABURST_BASEADDR_EGR
2959 * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR1
2960 * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR2
2961 * @arg @ref LL_TIM_DMABURST_BASEADDR_CCER
2962 * @arg @ref LL_TIM_DMABURST_BASEADDR_CNT
2963 * @arg @ref LL_TIM_DMABURST_BASEADDR_PSC
2964 * @arg @ref LL_TIM_DMABURST_BASEADDR_ARR
2965 * @arg @ref LL_TIM_DMABURST_BASEADDR_RCR
2966 * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR1
2967 * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR2
2968 * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR3
2969 * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR4
2970 * @arg @ref LL_TIM_DMABURST_BASEADDR_BDTR
2971 * @arg @ref LL_TIM_DMABURST_BASEADDR_OR
2972 * @param DMABurstLength This parameter can be one of the following values:
2973 * @arg @ref LL_TIM_DMABURST_LENGTH_1TRANSFER
2974 * @arg @ref LL_TIM_DMABURST_LENGTH_2TRANSFERS
2975 * @arg @ref LL_TIM_DMABURST_LENGTH_3TRANSFERS
2976 * @arg @ref LL_TIM_DMABURST_LENGTH_4TRANSFERS
2977 * @arg @ref LL_TIM_DMABURST_LENGTH_5TRANSFERS
2978 * @arg @ref LL_TIM_DMABURST_LENGTH_6TRANSFERS
2979 * @arg @ref LL_TIM_DMABURST_LENGTH_7TRANSFERS
2980 * @arg @ref LL_TIM_DMABURST_LENGTH_8TRANSFERS
2981 * @arg @ref LL_TIM_DMABURST_LENGTH_9TRANSFERS
2982 * @arg @ref LL_TIM_DMABURST_LENGTH_10TRANSFERS
2983 * @arg @ref LL_TIM_DMABURST_LENGTH_11TRANSFERS
2984 * @arg @ref LL_TIM_DMABURST_LENGTH_12TRANSFERS
2985 * @arg @ref LL_TIM_DMABURST_LENGTH_13TRANSFERS
2986 * @arg @ref LL_TIM_DMABURST_LENGTH_14TRANSFERS
2987 * @arg @ref LL_TIM_DMABURST_LENGTH_15TRANSFERS
2988 * @arg @ref LL_TIM_DMABURST_LENGTH_16TRANSFERS
2989 * @arg @ref LL_TIM_DMABURST_LENGTH_17TRANSFERS
2990 * @arg @ref LL_TIM_DMABURST_LENGTH_18TRANSFERS
2991 * @retval None
2992 */
2993 __STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_t DMABurstLength)
2994 {
2995 MODIFY_REG(TIMx->DCR, TIM_DCR_DBL | TIM_DCR_DBA, DMABurstBaseAddress | DMABurstLength);
2996 }
2997
2998 /**
2999 * @}
3000 */
3001
3002 /** @defgroup TIM_LL_EF_Timer_Inputs_Remapping Timer input remapping
3003 * @{
3004 */
3005 /**
3006 * @brief Remap TIM inputs (input channel, internal/external triggers).
3007 * @note Macro @ref IS_TIM_REMAP_INSTANCE(TIMx) can be used to check whether or not
3008 * a some timer inputs can be remapped.
3009 * @rmtoll TIM2_OR ITR1_RMP LL_TIM_SetRemap\n
3010 * TIM5_OR TI4_RMP LL_TIM_SetRemap\n
3011 * TIM11_OR TI1_RMP LL_TIM_SetRemap
3012 * @param TIMx Timer instance
3013 * @param Remap Remap param depends on the TIMx. Description available only
3014 * in CHM version of the User Manual (not in .pdf).
3015 * Otherwise see Reference Manual description of OR registers.
3016 *
3017 * Below description summarizes "Timer Instance" and "Remap" param combinations:
3018 *
3019 * TIM2: one of the following values
3020 *
3021 * ITR1_RMP can be one of the following values
3022 * @arg @ref LL_TIM_TIM2_ITR1_RMP_TIM8_TRGO
3023 * @arg @ref LL_TIM_TIM2_ITR1_RMP_OTG_FS_SOF
3024 * @arg @ref LL_TIM_TIM2_ITR1_RMP_OTG_HS_SOF
3025 *
3026 * TIM5: one of the following values
3027 *
3028 * @arg @ref LL_TIM_TIM5_TI4_RMP_GPIO
3029 * @arg @ref LL_TIM_TIM5_TI4_RMP_LSI
3030 * @arg @ref LL_TIM_TIM5_TI4_RMP_LSE
3031 * @arg @ref LL_TIM_TIM5_TI4_RMP_RTC
3032 *
3033 * TIM11: one of the following values
3034 *
3035 * @arg @ref LL_TIM_TIM11_TI1_RMP_GPIO
3036 * @arg @ref LL_TIM_TIM11_TI1_RMP_GPIO1
3037 * @arg @ref LL_TIM_TIM11_TI1_RMP_HSE_RTC
3038 * @arg @ref LL_TIM_TIM11_TI1_RMP_GPIO2
3039 *
3040 * @retval None
3041 */
3042 __STATIC_INLINE void LL_TIM_SetRemap(TIM_TypeDef *TIMx, uint32_t Remap)
3043 {
3044 MODIFY_REG(TIMx->OR, (Remap >> TIMx_OR_RMP_SHIFT), (Remap & TIMx_OR_RMP_MASK));
3045 }
3046
3047 /**
3048 * @}
3049 */
3050
3051
3052 /** @defgroup TIM_LL_EF_FLAG_Management FLAG-Management
3053 * @{
3054 */
3055 /**
3056 * @brief Clear the update interrupt flag (UIF).
3057 * @rmtoll SR UIF LL_TIM_ClearFlag_UPDATE
3058 * @param TIMx Timer instance
3059 * @retval None
3060 */
3061 __STATIC_INLINE void LL_TIM_ClearFlag_UPDATE(TIM_TypeDef *TIMx)
3062 {
3063 WRITE_REG(TIMx->SR, ~(TIM_SR_UIF));
3064 }
3065
3066 /**
3067 * @brief Indicate whether update interrupt flag (UIF) is set (update interrupt is pending).
3068 * @rmtoll SR UIF LL_TIM_IsActiveFlag_UPDATE
3069 * @param TIMx Timer instance
3070 * @retval State of bit (1 or 0).
3071 */
3072 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(TIM_TypeDef *TIMx)
3073 {
3074 return (READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF));
3075 }
3076
3077 /**
3078 * @brief Clear the Capture/Compare 1 interrupt flag (CC1F).
3079 * @rmtoll SR CC1IF LL_TIM_ClearFlag_CC1
3080 * @param TIMx Timer instance
3081 * @retval None
3082 */
3083 __STATIC_INLINE void LL_TIM_ClearFlag_CC1(TIM_TypeDef *TIMx)
3084 {
3085 WRITE_REG(TIMx->SR, ~(TIM_SR_CC1IF));
3086 }
3087
3088 /**
3089 * @brief Indicate whether Capture/Compare 1 interrupt flag (CC1F) is set (Capture/Compare 1 interrupt is pending).
3090 * @rmtoll SR CC1IF LL_TIM_IsActiveFlag_CC1
3091 * @param TIMx Timer instance
3092 * @retval State of bit (1 or 0).
3093 */
3094 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1(TIM_TypeDef *TIMx)
3095 {
3096 return (READ_BIT(TIMx->SR, TIM_SR_CC1IF) == (TIM_SR_CC1IF));
3097 }
3098
3099 /**
3100 * @brief Clear the Capture/Compare 2 interrupt flag (CC2F).
3101 * @rmtoll SR CC2IF LL_TIM_ClearFlag_CC2
3102 * @param TIMx Timer instance
3103 * @retval None
3104 */
3105 __STATIC_INLINE void LL_TIM_ClearFlag_CC2(TIM_TypeDef *TIMx)
3106 {
3107 WRITE_REG(TIMx->SR, ~(TIM_SR_CC2IF));
3108 }
3109
3110 /**
3111 * @brief Indicate whether Capture/Compare 2 interrupt flag (CC2F) is set (Capture/Compare 2 interrupt is pending).
3112 * @rmtoll SR CC2IF LL_TIM_IsActiveFlag_CC2
3113 * @param TIMx Timer instance
3114 * @retval State of bit (1 or 0).
3115 */
3116 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2(TIM_TypeDef *TIMx)
3117 {
3118 return (READ_BIT(TIMx->SR, TIM_SR_CC2IF) == (TIM_SR_CC2IF));
3119 }
3120
3121 /**
3122 * @brief Clear the Capture/Compare 3 interrupt flag (CC3F).
3123 * @rmtoll SR CC3IF LL_TIM_ClearFlag_CC3
3124 * @param TIMx Timer instance
3125 * @retval None
3126 */
3127 __STATIC_INLINE void LL_TIM_ClearFlag_CC3(TIM_TypeDef *TIMx)
3128 {
3129 WRITE_REG(TIMx->SR, ~(TIM_SR_CC3IF));
3130 }
3131
3132 /**
3133 * @brief Indicate whether Capture/Compare 3 interrupt flag (CC3F) is set (Capture/Compare 3 interrupt is pending).
3134 * @rmtoll SR CC3IF LL_TIM_IsActiveFlag_CC3
3135 * @param TIMx Timer instance
3136 * @retval State of bit (1 or 0).
3137 */
3138 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3(TIM_TypeDef *TIMx)
3139 {
3140 return (READ_BIT(TIMx->SR, TIM_SR_CC3IF) == (TIM_SR_CC3IF));
3141 }
3142
3143 /**
3144 * @brief Clear the Capture/Compare 4 interrupt flag (CC4F).
3145 * @rmtoll SR CC4IF LL_TIM_ClearFlag_CC4
3146 * @param TIMx Timer instance
3147 * @retval None
3148 */
3149 __STATIC_INLINE void LL_TIM_ClearFlag_CC4(TIM_TypeDef *TIMx)
3150 {
3151 WRITE_REG(TIMx->SR, ~(TIM_SR_CC4IF));
3152 }
3153
3154 /**
3155 * @brief Indicate whether Capture/Compare 4 interrupt flag (CC4F) is set (Capture/Compare 4 interrupt is pending).
3156 * @rmtoll SR CC4IF LL_TIM_IsActiveFlag_CC4
3157 * @param TIMx Timer instance
3158 * @retval State of bit (1 or 0).
3159 */
3160 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4(TIM_TypeDef *TIMx)
3161 {
3162 return (READ_BIT(TIMx->SR, TIM_SR_CC4IF) == (TIM_SR_CC4IF));
3163 }
3164
3165 /**
3166 * @brief Clear the commutation interrupt flag (COMIF).
3167 * @rmtoll SR COMIF LL_TIM_ClearFlag_COM
3168 * @param TIMx Timer instance
3169 * @retval None
3170 */
3171 __STATIC_INLINE void LL_TIM_ClearFlag_COM(TIM_TypeDef *TIMx)
3172 {
3173 WRITE_REG(TIMx->SR, ~(TIM_SR_COMIF));
3174 }
3175
3176 /**
3177 * @brief Indicate whether commutation interrupt flag (COMIF) is set (commutation interrupt is pending).
3178 * @rmtoll SR COMIF LL_TIM_IsActiveFlag_COM
3179 * @param TIMx Timer instance
3180 * @retval State of bit (1 or 0).
3181 */
3182 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_COM(TIM_TypeDef *TIMx)
3183 {
3184 return (READ_BIT(TIMx->SR, TIM_SR_COMIF) == (TIM_SR_COMIF));
3185 }
3186
3187 /**
3188 * @brief Clear the trigger interrupt flag (TIF).
3189 * @rmtoll SR TIF LL_TIM_ClearFlag_TRIG
3190 * @param TIMx Timer instance
3191 * @retval None
3192 */
3193 __STATIC_INLINE void LL_TIM_ClearFlag_TRIG(TIM_TypeDef *TIMx)
3194 {
3195 WRITE_REG(TIMx->SR, ~(TIM_SR_TIF));
3196 }
3197
3198 /**
3199 * @brief Indicate whether trigger interrupt flag (TIF) is set (trigger interrupt is pending).
3200 * @rmtoll SR TIF LL_TIM_IsActiveFlag_TRIG
3201 * @param TIMx Timer instance
3202 * @retval State of bit (1 or 0).
3203 */
3204 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_TRIG(TIM_TypeDef *TIMx)
3205 {
3206 return (READ_BIT(TIMx->SR, TIM_SR_TIF) == (TIM_SR_TIF));
3207 }
3208
3209 /**
3210 * @brief Clear the break interrupt flag (BIF).
3211 * @rmtoll SR BIF LL_TIM_ClearFlag_BRK
3212 * @param TIMx Timer instance
3213 * @retval None
3214 */
3215 __STATIC_INLINE void LL_TIM_ClearFlag_BRK(TIM_TypeDef *TIMx)
3216 {
3217 WRITE_REG(TIMx->SR, ~(TIM_SR_BIF));
3218 }
3219
3220 /**
3221 * @brief Indicate whether break interrupt flag (BIF) is set (break interrupt is pending).
3222 * @rmtoll SR BIF LL_TIM_IsActiveFlag_BRK
3223 * @param TIMx Timer instance
3224 * @retval State of bit (1 or 0).
3225 */
3226 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK(TIM_TypeDef *TIMx)
3227 {
3228 return (READ_BIT(TIMx->SR, TIM_SR_BIF) == (TIM_SR_BIF));
3229 }
3230
3231 /**
3232 * @brief Clear the Capture/Compare 1 over-capture interrupt flag (CC1OF).
3233 * @rmtoll SR CC1OF LL_TIM_ClearFlag_CC1OVR
3234 * @param TIMx Timer instance
3235 * @retval None
3236 */
3237 __STATIC_INLINE void LL_TIM_ClearFlag_CC1OVR(TIM_TypeDef *TIMx)
3238 {
3239 WRITE_REG(TIMx->SR, ~(TIM_SR_CC1OF));
3240 }
3241
3242 /**
3243 * @brief Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set (Capture/Compare 1 interrupt is pending).
3244 * @rmtoll SR CC1OF LL_TIM_IsActiveFlag_CC1OVR
3245 * @param TIMx Timer instance
3246 * @retval State of bit (1 or 0).
3247 */
3248 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(TIM_TypeDef *TIMx)
3249 {
3250 return (READ_BIT(TIMx->SR, TIM_SR_CC1OF) == (TIM_SR_CC1OF));
3251 }
3252
3253 /**
3254 * @brief Clear the Capture/Compare 2 over-capture interrupt flag (CC2OF).
3255 * @rmtoll SR CC2OF LL_TIM_ClearFlag_CC2OVR
3256 * @param TIMx Timer instance
3257 * @retval None
3258 */
3259 __STATIC_INLINE void LL_TIM_ClearFlag_CC2OVR(TIM_TypeDef *TIMx)
3260 {
3261 WRITE_REG(TIMx->SR, ~(TIM_SR_CC2OF));
3262 }
3263
3264 /**
3265 * @brief Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set (Capture/Compare 2 over-capture interrupt is pending).
3266 * @rmtoll SR CC2OF LL_TIM_IsActiveFlag_CC2OVR
3267 * @param TIMx Timer instance
3268 * @retval State of bit (1 or 0).
3269 */
3270 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(TIM_TypeDef *TIMx)
3271 {
3272 return (READ_BIT(TIMx->SR, TIM_SR_CC2OF) == (TIM_SR_CC2OF));
3273 }
3274
3275 /**
3276 * @brief Clear the Capture/Compare 3 over-capture interrupt flag (CC3OF).
3277 * @rmtoll SR CC3OF LL_TIM_ClearFlag_CC3OVR
3278 * @param TIMx Timer instance
3279 * @retval None
3280 */
3281 __STATIC_INLINE void LL_TIM_ClearFlag_CC3OVR(TIM_TypeDef *TIMx)
3282 {
3283 WRITE_REG(TIMx->SR, ~(TIM_SR_CC3OF));
3284 }
3285
3286 /**
3287 * @brief Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set (Capture/Compare 3 over-capture interrupt is pending).
3288 * @rmtoll SR CC3OF LL_TIM_IsActiveFlag_CC3OVR
3289 * @param TIMx Timer instance
3290 * @retval State of bit (1 or 0).
3291 */
3292 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(TIM_TypeDef *TIMx)
3293 {
3294 return (READ_BIT(TIMx->SR, TIM_SR_CC3OF) == (TIM_SR_CC3OF));
3295 }
3296
3297 /**
3298 * @brief Clear the Capture/Compare 4 over-capture interrupt flag (CC4OF).
3299 * @rmtoll SR CC4OF LL_TIM_ClearFlag_CC4OVR
3300 * @param TIMx Timer instance
3301 * @retval None
3302 */
3303 __STATIC_INLINE void LL_TIM_ClearFlag_CC4OVR(TIM_TypeDef *TIMx)
3304 {
3305 WRITE_REG(TIMx->SR, ~(TIM_SR_CC4OF));
3306 }
3307
3308 /**
3309 * @brief Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set (Capture/Compare 4 over-capture interrupt is pending).
3310 * @rmtoll SR CC4OF LL_TIM_IsActiveFlag_CC4OVR
3311 * @param TIMx Timer instance
3312 * @retval State of bit (1 or 0).
3313 */
3314 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(TIM_TypeDef *TIMx)
3315 {
3316 return (READ_BIT(TIMx->SR, TIM_SR_CC4OF) == (TIM_SR_CC4OF));
3317 }
3318
3319 /**
3320 * @}
3321 */
3322
3323 /** @defgroup TIM_LL_EF_IT_Management IT-Management
3324 * @{
3325 */
3326 /**
3327 * @brief Enable update interrupt (UIE).
3328 * @rmtoll DIER UIE LL_TIM_EnableIT_UPDATE
3329 * @param TIMx Timer instance
3330 * @retval None
3331 */
3332 __STATIC_INLINE void LL_TIM_EnableIT_UPDATE(TIM_TypeDef *TIMx)
3333 {
3334 SET_BIT(TIMx->DIER, TIM_DIER_UIE);
3335 }
3336
3337 /**
3338 * @brief Disable update interrupt (UIE).
3339 * @rmtoll DIER UIE LL_TIM_DisableIT_UPDATE
3340 * @param TIMx Timer instance
3341 * @retval None
3342 */
3343 __STATIC_INLINE void LL_TIM_DisableIT_UPDATE(TIM_TypeDef *TIMx)
3344 {
3345 CLEAR_BIT(TIMx->DIER, TIM_DIER_UIE);
3346 }
3347
3348 /**
3349 * @brief Indicates whether the update interrupt (UIE) is enabled.
3350 * @rmtoll DIER UIE LL_TIM_IsEnabledIT_UPDATE
3351 * @param TIMx Timer instance
3352 * @retval State of bit (1 or 0).
3353 */
3354 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_UPDATE(TIM_TypeDef *TIMx)
3355 {
3356 return (READ_BIT(TIMx->DIER, TIM_DIER_UIE) == (TIM_DIER_UIE));
3357 }
3358
3359 /**
3360 * @brief Enable capture/compare 1 interrupt (CC1IE).
3361 * @rmtoll DIER CC1IE LL_TIM_EnableIT_CC1
3362 * @param TIMx Timer instance
3363 * @retval None
3364 */
3365 __STATIC_INLINE void LL_TIM_EnableIT_CC1(TIM_TypeDef *TIMx)
3366 {
3367 SET_BIT(TIMx->DIER, TIM_DIER_CC1IE);
3368 }
3369
3370 /**
3371 * @brief Disable capture/compare 1 interrupt (CC1IE).
3372 * @rmtoll DIER CC1IE LL_TIM_DisableIT_CC1
3373 * @param TIMx Timer instance
3374 * @retval None
3375 */
3376 __STATIC_INLINE void LL_TIM_DisableIT_CC1(TIM_TypeDef *TIMx)
3377 {
3378 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1IE);
3379 }
3380
3381 /**
3382 * @brief Indicates whether the capture/compare 1 interrupt (CC1IE) is enabled.
3383 * @rmtoll DIER CC1IE LL_TIM_IsEnabledIT_CC1
3384 * @param TIMx Timer instance
3385 * @retval State of bit (1 or 0).
3386 */
3387 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC1(TIM_TypeDef *TIMx)
3388 {
3389 return (READ_BIT(TIMx->DIER, TIM_DIER_CC1IE) == (TIM_DIER_CC1IE));
3390 }
3391
3392 /**
3393 * @brief Enable capture/compare 2 interrupt (CC2IE).
3394 * @rmtoll DIER CC2IE LL_TIM_EnableIT_CC2
3395 * @param TIMx Timer instance
3396 * @retval None
3397 */
3398 __STATIC_INLINE void LL_TIM_EnableIT_CC2(TIM_TypeDef *TIMx)
3399 {
3400 SET_BIT(TIMx->DIER, TIM_DIER_CC2IE);
3401 }
3402
3403 /**
3404 * @brief Disable capture/compare 2 interrupt (CC2IE).
3405 * @rmtoll DIER CC2IE LL_TIM_DisableIT_CC2
3406 * @param TIMx Timer instance
3407 * @retval None
3408 */
3409 __STATIC_INLINE void LL_TIM_DisableIT_CC2(TIM_TypeDef *TIMx)
3410 {
3411 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2IE);
3412 }
3413
3414 /**
3415 * @brief Indicates whether the capture/compare 2 interrupt (CC2IE) is enabled.
3416 * @rmtoll DIER CC2IE LL_TIM_IsEnabledIT_CC2
3417 * @param TIMx Timer instance
3418 * @retval State of bit (1 or 0).
3419 */
3420 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC2(TIM_TypeDef *TIMx)
3421 {
3422 return (READ_BIT(TIMx->DIER, TIM_DIER_CC2IE) == (TIM_DIER_CC2IE));
3423 }
3424
3425 /**
3426 * @brief Enable capture/compare 3 interrupt (CC3IE).
3427 * @rmtoll DIER CC3IE LL_TIM_EnableIT_CC3
3428 * @param TIMx Timer instance
3429 * @retval None
3430 */
3431 __STATIC_INLINE void LL_TIM_EnableIT_CC3(TIM_TypeDef *TIMx)
3432 {
3433 SET_BIT(TIMx->DIER, TIM_DIER_CC3IE);
3434 }
3435
3436 /**
3437 * @brief Disable capture/compare 3 interrupt (CC3IE).
3438 * @rmtoll DIER CC3IE LL_TIM_DisableIT_CC3
3439 * @param TIMx Timer instance
3440 * @retval None
3441 */
3442 __STATIC_INLINE void LL_TIM_DisableIT_CC3(TIM_TypeDef *TIMx)
3443 {
3444 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3IE);
3445 }
3446
3447 /**
3448 * @brief Indicates whether the capture/compare 3 interrupt (CC3IE) is enabled.
3449 * @rmtoll DIER CC3IE LL_TIM_IsEnabledIT_CC3
3450 * @param TIMx Timer instance
3451 * @retval State of bit (1 or 0).
3452 */
3453 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC3(TIM_TypeDef *TIMx)
3454 {
3455 return (READ_BIT(TIMx->DIER, TIM_DIER_CC3IE) == (TIM_DIER_CC3IE));
3456 }
3457
3458 /**
3459 * @brief Enable capture/compare 4 interrupt (CC4IE).
3460 * @rmtoll DIER CC4IE LL_TIM_EnableIT_CC4
3461 * @param TIMx Timer instance
3462 * @retval None
3463 */
3464 __STATIC_INLINE void LL_TIM_EnableIT_CC4(TIM_TypeDef *TIMx)
3465 {
3466 SET_BIT(TIMx->DIER, TIM_DIER_CC4IE);
3467 }
3468
3469 /**
3470 * @brief Disable capture/compare 4 interrupt (CC4IE).
3471 * @rmtoll DIER CC4IE LL_TIM_DisableIT_CC4
3472 * @param TIMx Timer instance
3473 * @retval None
3474 */
3475 __STATIC_INLINE void LL_TIM_DisableIT_CC4(TIM_TypeDef *TIMx)
3476 {
3477 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4IE);
3478 }
3479
3480 /**
3481 * @brief Indicates whether the capture/compare 4 interrupt (CC4IE) is enabled.
3482 * @rmtoll DIER CC4IE LL_TIM_IsEnabledIT_CC4
3483 * @param TIMx Timer instance
3484 * @retval State of bit (1 or 0).
3485 */
3486 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC4(TIM_TypeDef *TIMx)
3487 {
3488 return (READ_BIT(TIMx->DIER, TIM_DIER_CC4IE) == (TIM_DIER_CC4IE));
3489 }
3490
3491 /**
3492 * @brief Enable commutation interrupt (COMIE).
3493 * @rmtoll DIER COMIE LL_TIM_EnableIT_COM
3494 * @param TIMx Timer instance
3495 * @retval None
3496 */
3497 __STATIC_INLINE void LL_TIM_EnableIT_COM(TIM_TypeDef *TIMx)
3498 {
3499 SET_BIT(TIMx->DIER, TIM_DIER_COMIE);
3500 }
3501
3502 /**
3503 * @brief Disable commutation interrupt (COMIE).
3504 * @rmtoll DIER COMIE LL_TIM_DisableIT_COM
3505 * @param TIMx Timer instance
3506 * @retval None
3507 */
3508 __STATIC_INLINE void LL_TIM_DisableIT_COM(TIM_TypeDef *TIMx)
3509 {
3510 CLEAR_BIT(TIMx->DIER, TIM_DIER_COMIE);
3511 }
3512
3513 /**
3514 * @brief Indicates whether the commutation interrupt (COMIE) is enabled.
3515 * @rmtoll DIER COMIE LL_TIM_IsEnabledIT_COM
3516 * @param TIMx Timer instance
3517 * @retval State of bit (1 or 0).
3518 */
3519 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_COM(TIM_TypeDef *TIMx)
3520 {
3521 return (READ_BIT(TIMx->DIER, TIM_DIER_COMIE) == (TIM_DIER_COMIE));
3522 }
3523
3524 /**
3525 * @brief Enable trigger interrupt (TIE).
3526 * @rmtoll DIER TIE LL_TIM_EnableIT_TRIG
3527 * @param TIMx Timer instance
3528 * @retval None
3529 */
3530 __STATIC_INLINE void LL_TIM_EnableIT_TRIG(TIM_TypeDef *TIMx)
3531 {
3532 SET_BIT(TIMx->DIER, TIM_DIER_TIE);
3533 }
3534
3535 /**
3536 * @brief Disable trigger interrupt (TIE).
3537 * @rmtoll DIER TIE LL_TIM_DisableIT_TRIG
3538 * @param TIMx Timer instance
3539 * @retval None
3540 */
3541 __STATIC_INLINE void LL_TIM_DisableIT_TRIG(TIM_TypeDef *TIMx)
3542 {
3543 CLEAR_BIT(TIMx->DIER, TIM_DIER_TIE);
3544 }
3545
3546 /**
3547 * @brief Indicates whether the trigger interrupt (TIE) is enabled.
3548 * @rmtoll DIER TIE LL_TIM_IsEnabledIT_TRIG
3549 * @param TIMx Timer instance
3550 * @retval State of bit (1 or 0).
3551 */
3552 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_TRIG(TIM_TypeDef *TIMx)
3553 {
3554 return (READ_BIT(TIMx->DIER, TIM_DIER_TIE) == (TIM_DIER_TIE));
3555 }
3556
3557 /**
3558 * @brief Enable break interrupt (BIE).
3559 * @rmtoll DIER BIE LL_TIM_EnableIT_BRK
3560 * @param TIMx Timer instance
3561 * @retval None
3562 */
3563 __STATIC_INLINE void LL_TIM_EnableIT_BRK(TIM_TypeDef *TIMx)
3564 {
3565 SET_BIT(TIMx->DIER, TIM_DIER_BIE);
3566 }
3567
3568 /**
3569 * @brief Disable break interrupt (BIE).
3570 * @rmtoll DIER BIE LL_TIM_DisableIT_BRK
3571 * @param TIMx Timer instance
3572 * @retval None
3573 */
3574 __STATIC_INLINE void LL_TIM_DisableIT_BRK(TIM_TypeDef *TIMx)
3575 {
3576 CLEAR_BIT(TIMx->DIER, TIM_DIER_BIE);
3577 }
3578
3579 /**
3580 * @brief Indicates whether the break interrupt (BIE) is enabled.
3581 * @rmtoll DIER BIE LL_TIM_IsEnabledIT_BRK
3582 * @param TIMx Timer instance
3583 * @retval State of bit (1 or 0).
3584 */
3585 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_BRK(TIM_TypeDef *TIMx)
3586 {
3587 return (READ_BIT(TIMx->DIER, TIM_DIER_BIE) == (TIM_DIER_BIE));
3588 }
3589
3590 /**
3591 * @}
3592 */
3593
3594 /** @defgroup TIM_LL_EF_DMA_Management DMA-Management
3595 * @{
3596 */
3597 /**
3598 * @brief Enable update DMA request (UDE).
3599 * @rmtoll DIER UDE LL_TIM_EnableDMAReq_UPDATE
3600 * @param TIMx Timer instance
3601 * @retval None
3602 */
3603 __STATIC_INLINE void LL_TIM_EnableDMAReq_UPDATE(TIM_TypeDef *TIMx)
3604 {
3605 SET_BIT(TIMx->DIER, TIM_DIER_UDE);
3606 }
3607
3608 /**
3609 * @brief Disable update DMA request (UDE).
3610 * @rmtoll DIER UDE LL_TIM_DisableDMAReq_UPDATE
3611 * @param TIMx Timer instance
3612 * @retval None
3613 */
3614 __STATIC_INLINE void LL_TIM_DisableDMAReq_UPDATE(TIM_TypeDef *TIMx)
3615 {
3616 CLEAR_BIT(TIMx->DIER, TIM_DIER_UDE);
3617 }
3618
3619 /**
3620 * @brief Indicates whether the update DMA request (UDE) is enabled.
3621 * @rmtoll DIER UDE LL_TIM_IsEnabledDMAReq_UPDATE
3622 * @param TIMx Timer instance
3623 * @retval State of bit (1 or 0).
3624 */
3625 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_UPDATE(TIM_TypeDef *TIMx)
3626 {
3627 return (READ_BIT(TIMx->DIER, TIM_DIER_UDE) == (TIM_DIER_UDE));
3628 }
3629
3630 /**
3631 * @brief Enable capture/compare 1 DMA request (CC1DE).
3632 * @rmtoll DIER CC1DE LL_TIM_EnableDMAReq_CC1
3633 * @param TIMx Timer instance
3634 * @retval None
3635 */
3636 __STATIC_INLINE void LL_TIM_EnableDMAReq_CC1(TIM_TypeDef *TIMx)
3637 {
3638 SET_BIT(TIMx->DIER, TIM_DIER_CC1DE);
3639 }
3640
3641 /**
3642 * @brief Disable capture/compare 1 DMA request (CC1DE).
3643 * @rmtoll DIER CC1DE LL_TIM_DisableDMAReq_CC1
3644 * @param TIMx Timer instance
3645 * @retval None
3646 */
3647 __STATIC_INLINE void LL_TIM_DisableDMAReq_CC1(TIM_TypeDef *TIMx)
3648 {
3649 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1DE);
3650 }
3651
3652 /**
3653 * @brief Indicates whether the capture/compare 1 DMA request (CC1DE) is enabled.
3654 * @rmtoll DIER CC1DE LL_TIM_IsEnabledDMAReq_CC1
3655 * @param TIMx Timer instance
3656 * @retval State of bit (1 or 0).
3657 */
3658 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC1(TIM_TypeDef *TIMx)
3659 {
3660 return (READ_BIT(TIMx->DIER, TIM_DIER_CC1DE) == (TIM_DIER_CC1DE));
3661 }
3662
3663 /**
3664 * @brief Enable capture/compare 2 DMA request (CC2DE).
3665 * @rmtoll DIER CC2DE LL_TIM_EnableDMAReq_CC2
3666 * @param TIMx Timer instance
3667 * @retval None
3668 */
3669 __STATIC_INLINE void LL_TIM_EnableDMAReq_CC2(TIM_TypeDef *TIMx)
3670 {
3671 SET_BIT(TIMx->DIER, TIM_DIER_CC2DE);
3672 }
3673
3674 /**
3675 * @brief Disable capture/compare 2 DMA request (CC2DE).
3676 * @rmtoll DIER CC2DE LL_TIM_DisableDMAReq_CC2
3677 * @param TIMx Timer instance
3678 * @retval None
3679 */
3680 __STATIC_INLINE void LL_TIM_DisableDMAReq_CC2(TIM_TypeDef *TIMx)
3681 {
3682 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2DE);
3683 }
3684
3685 /**
3686 * @brief Indicates whether the capture/compare 2 DMA request (CC2DE) is enabled.
3687 * @rmtoll DIER CC2DE LL_TIM_IsEnabledDMAReq_CC2
3688 * @param TIMx Timer instance
3689 * @retval State of bit (1 or 0).
3690 */
3691 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC2(TIM_TypeDef *TIMx)
3692 {
3693 return (READ_BIT(TIMx->DIER, TIM_DIER_CC2DE) == (TIM_DIER_CC2DE));
3694 }
3695
3696 /**
3697 * @brief Enable capture/compare 3 DMA request (CC3DE).
3698 * @rmtoll DIER CC3DE LL_TIM_EnableDMAReq_CC3
3699 * @param TIMx Timer instance
3700 * @retval None
3701 */
3702 __STATIC_INLINE void LL_TIM_EnableDMAReq_CC3(TIM_TypeDef *TIMx)
3703 {
3704 SET_BIT(TIMx->DIER, TIM_DIER_CC3DE);
3705 }
3706
3707 /**
3708 * @brief Disable capture/compare 3 DMA request (CC3DE).
3709 * @rmtoll DIER CC3DE LL_TIM_DisableDMAReq_CC3
3710 * @param TIMx Timer instance
3711 * @retval None
3712 */
3713 __STATIC_INLINE void LL_TIM_DisableDMAReq_CC3(TIM_TypeDef *TIMx)
3714 {
3715 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3DE);
3716 }
3717
3718 /**
3719 * @brief Indicates whether the capture/compare 3 DMA request (CC3DE) is enabled.
3720 * @rmtoll DIER CC3DE LL_TIM_IsEnabledDMAReq_CC3
3721 * @param TIMx Timer instance
3722 * @retval State of bit (1 or 0).
3723 */
3724 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC3(TIM_TypeDef *TIMx)
3725 {
3726 return (READ_BIT(TIMx->DIER, TIM_DIER_CC3DE) == (TIM_DIER_CC3DE));
3727 }
3728
3729 /**
3730 * @brief Enable capture/compare 4 DMA request (CC4DE).
3731 * @rmtoll DIER CC4DE LL_TIM_EnableDMAReq_CC4
3732 * @param TIMx Timer instance
3733 * @retval None
3734 */
3735 __STATIC_INLINE void LL_TIM_EnableDMAReq_CC4(TIM_TypeDef *TIMx)
3736 {
3737 SET_BIT(TIMx->DIER, TIM_DIER_CC4DE);
3738 }
3739
3740 /**
3741 * @brief Disable capture/compare 4 DMA request (CC4DE).
3742 * @rmtoll DIER CC4DE LL_TIM_DisableDMAReq_CC4
3743 * @param TIMx Timer instance
3744 * @retval None
3745 */
3746 __STATIC_INLINE void LL_TIM_DisableDMAReq_CC4(TIM_TypeDef *TIMx)
3747 {
3748 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4DE);
3749 }
3750
3751 /**
3752 * @brief Indicates whether the capture/compare 4 DMA request (CC4DE) is enabled.
3753 * @rmtoll DIER CC4DE LL_TIM_IsEnabledDMAReq_CC4
3754 * @param TIMx Timer instance
3755 * @retval State of bit (1 or 0).
3756 */
3757 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC4(TIM_TypeDef *TIMx)
3758 {
3759 return (READ_BIT(TIMx->DIER, TIM_DIER_CC4DE) == (TIM_DIER_CC4DE));
3760 }
3761
3762 /**
3763 * @brief Enable commutation DMA request (COMDE).
3764 * @rmtoll DIER COMDE LL_TIM_EnableDMAReq_COM
3765 * @param TIMx Timer instance
3766 * @retval None
3767 */
3768 __STATIC_INLINE void LL_TIM_EnableDMAReq_COM(TIM_TypeDef *TIMx)
3769 {
3770 SET_BIT(TIMx->DIER, TIM_DIER_COMDE);
3771 }
3772
3773 /**
3774 * @brief Disable commutation DMA request (COMDE).
3775 * @rmtoll DIER COMDE LL_TIM_DisableDMAReq_COM
3776 * @param TIMx Timer instance
3777 * @retval None
3778 */
3779 __STATIC_INLINE void LL_TIM_DisableDMAReq_COM(TIM_TypeDef *TIMx)
3780 {
3781 CLEAR_BIT(TIMx->DIER, TIM_DIER_COMDE);
3782 }
3783
3784 /**
3785 * @brief Indicates whether the commutation DMA request (COMDE) is enabled.
3786 * @rmtoll DIER COMDE LL_TIM_IsEnabledDMAReq_COM
3787 * @param TIMx Timer instance
3788 * @retval State of bit (1 or 0).
3789 */
3790 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_COM(TIM_TypeDef *TIMx)
3791 {
3792 return (READ_BIT(TIMx->DIER, TIM_DIER_COMDE) == (TIM_DIER_COMDE));
3793 }
3794
3795 /**
3796 * @brief Enable trigger interrupt (TDE).
3797 * @rmtoll DIER TDE LL_TIM_EnableDMAReq_TRIG
3798 * @param TIMx Timer instance
3799 * @retval None
3800 */
3801 __STATIC_INLINE void LL_TIM_EnableDMAReq_TRIG(TIM_TypeDef *TIMx)
3802 {
3803 SET_BIT(TIMx->DIER, TIM_DIER_TDE);
3804 }
3805
3806 /**
3807 * @brief Disable trigger interrupt (TDE).
3808 * @rmtoll DIER TDE LL_TIM_DisableDMAReq_TRIG
3809 * @param TIMx Timer instance
3810 * @retval None
3811 */
3812 __STATIC_INLINE void LL_TIM_DisableDMAReq_TRIG(TIM_TypeDef *TIMx)
3813 {
3814 CLEAR_BIT(TIMx->DIER, TIM_DIER_TDE);
3815 }
3816
3817 /**
3818 * @brief Indicates whether the trigger interrupt (TDE) is enabled.
3819 * @rmtoll DIER TDE LL_TIM_IsEnabledDMAReq_TRIG
3820 * @param TIMx Timer instance
3821 * @retval State of bit (1 or 0).
3822 */
3823 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_TRIG(TIM_TypeDef *TIMx)
3824 {
3825 return (READ_BIT(TIMx->DIER, TIM_DIER_TDE) == (TIM_DIER_TDE));
3826 }
3827
3828 /**
3829 * @}
3830 */
3831
3832 /** @defgroup TIM_LL_EF_EVENT_Management EVENT-Management
3833 * @{
3834 */
3835 /**
3836 * @brief Generate an update event.
3837 * @rmtoll EGR UG LL_TIM_GenerateEvent_UPDATE
3838 * @param TIMx Timer instance
3839 * @retval None
3840 */
3841 __STATIC_INLINE void LL_TIM_GenerateEvent_UPDATE(TIM_TypeDef *TIMx)
3842 {
3843 SET_BIT(TIMx->EGR, TIM_EGR_UG);
3844 }
3845
3846 /**
3847 * @brief Generate Capture/Compare 1 event.
3848 * @rmtoll EGR CC1G LL_TIM_GenerateEvent_CC1
3849 * @param TIMx Timer instance
3850 * @retval None
3851 */
3852 __STATIC_INLINE void LL_TIM_GenerateEvent_CC1(TIM_TypeDef *TIMx)
3853 {
3854 SET_BIT(TIMx->EGR, TIM_EGR_CC1G);
3855 }
3856
3857 /**
3858 * @brief Generate Capture/Compare 2 event.
3859 * @rmtoll EGR CC2G LL_TIM_GenerateEvent_CC2
3860 * @param TIMx Timer instance
3861 * @retval None
3862 */
3863 __STATIC_INLINE void LL_TIM_GenerateEvent_CC2(TIM_TypeDef *TIMx)
3864 {
3865 SET_BIT(TIMx->EGR, TIM_EGR_CC2G);
3866 }
3867
3868 /**
3869 * @brief Generate Capture/Compare 3 event.
3870 * @rmtoll EGR CC3G LL_TIM_GenerateEvent_CC3
3871 * @param TIMx Timer instance
3872 * @retval None
3873 */
3874 __STATIC_INLINE void LL_TIM_GenerateEvent_CC3(TIM_TypeDef *TIMx)
3875 {
3876 SET_BIT(TIMx->EGR, TIM_EGR_CC3G);
3877 }
3878
3879 /**
3880 * @brief Generate Capture/Compare 4 event.
3881 * @rmtoll EGR CC4G LL_TIM_GenerateEvent_CC4
3882 * @param TIMx Timer instance
3883 * @retval None
3884 */
3885 __STATIC_INLINE void LL_TIM_GenerateEvent_CC4(TIM_TypeDef *TIMx)
3886 {
3887 SET_BIT(TIMx->EGR, TIM_EGR_CC4G);
3888 }
3889
3890 /**
3891 * @brief Generate commutation event.
3892 * @rmtoll EGR COMG LL_TIM_GenerateEvent_COM
3893 * @param TIMx Timer instance
3894 * @retval None
3895 */
3896 __STATIC_INLINE void LL_TIM_GenerateEvent_COM(TIM_TypeDef *TIMx)
3897 {
3898 SET_BIT(TIMx->EGR, TIM_EGR_COMG);
3899 }
3900
3901 /**
3902 * @brief Generate trigger event.
3903 * @rmtoll EGR TG LL_TIM_GenerateEvent_TRIG
3904 * @param TIMx Timer instance
3905 * @retval None
3906 */
3907 __STATIC_INLINE void LL_TIM_GenerateEvent_TRIG(TIM_TypeDef *TIMx)
3908 {
3909 SET_BIT(TIMx->EGR, TIM_EGR_TG);
3910 }
3911
3912 /**
3913 * @brief Generate break event.
3914 * @rmtoll EGR BG LL_TIM_GenerateEvent_BRK
3915 * @param TIMx Timer instance
3916 * @retval None
3917 */
3918 __STATIC_INLINE void LL_TIM_GenerateEvent_BRK(TIM_TypeDef *TIMx)
3919 {
3920 SET_BIT(TIMx->EGR, TIM_EGR_BG);
3921 }
3922
3923 /**
3924 * @}
3925 */
3926
3927 #if defined(USE_FULL_LL_DRIVER)
3928 /** @defgroup TIM_LL_EF_Init Initialisation and deinitialisation functions
3929 * @{
3930 */
3931
3932 ErrorStatus LL_TIM_DeInit(TIM_TypeDef *TIMx);
3933 void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct);
3934 ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, LL_TIM_InitTypeDef *TIM_InitStruct);
3935 void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct);
3936 ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct);
3937 void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct);
3938 ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, LL_TIM_IC_InitTypeDef *TIM_IC_InitStruct);
3939 void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct);
3940 ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct);
3941 void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct);
3942 ErrorStatus LL_TIM_HALLSENSOR_Init(TIM_TypeDef *TIMx, LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct);
3943 void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct);
3944 ErrorStatus LL_TIM_BDTR_Init(TIM_TypeDef *TIMx, LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct);
3945 /**
3946 * @}
3947 */
3948 #endif /* USE_FULL_LL_DRIVER */
3949
3950 /**
3951 * @}
3952 */
3953
3954 /**
3955 * @}
3956 */
3957
3958 #endif /* TIM1 || TIM2 || TIM3 || TIM4 || TIM5 || TIM6 || TIM7 || TIM8 || TIM9 || TIM10 || TIM11 || TIM12 || TIM13 || TIM14 */
3959
3960 /**
3961 * @}
3962 */
3963
3964 #ifdef __cplusplus
3965 }
3966 #endif
3967
3968 #endif /* __STM32F4xx_LL_TIM_H */
3969 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/