Subversion Repositories DashDisplay

Rev

Rev 61 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
77 mjames 1
/**
2
  ******************************************************************************
3
  * @file    stm32l1xx_ll_tim.h
4
  * @author  MCD Application Team
5
  * @brief   Header file of TIM LL module.
6
  ******************************************************************************
7
  * @attention
8
  *
9
  * Copyright (c) 2016 STMicroelectronics.
10
  * All rights reserved.
11
  *
12
  * This software is licensed under terms that can be found in the LICENSE file
13
  * in the root directory of this software component.
14
  * If no LICENSE file comes with this software, it is provided AS-IS.
15
  *
16
  ******************************************************************************
17
  */
18
 
19
/* Define to prevent recursive inclusion -------------------------------------*/
20
#ifndef __STM32L1xx_LL_TIM_H
21
#define __STM32L1xx_LL_TIM_H
22
 
23
#ifdef __cplusplus
24
extern "C" {
25
#endif
26
 
27
/* Includes ------------------------------------------------------------------*/
28
#include "stm32l1xx.h"
29
 
30
/** @addtogroup STM32L1xx_LL_Driver
31
  * @{
32
  */
33
 
34
#if defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM5) || defined (TIM9) || defined (TIM10) || defined (TIM11) || defined (TIM6) || defined (TIM7)
35
 
36
/** @defgroup TIM_LL TIM
37
  * @{
38
  */
39
 
40
/* Private types -------------------------------------------------------------*/
41
/* Private variables ---------------------------------------------------------*/
42
/** @defgroup TIM_LL_Private_Variables TIM Private Variables
43
  * @{
44
  */
45
static const uint8_t OFFSET_TAB_CCMRx[] =
46
{
47
  0x00U,   /* 0: TIMx_CH1  */
48
  0x00U,   /* 1: NA */
49
  0x00U,   /* 2: TIMx_CH2  */
50
  0x00U,   /* 3: NA */
51
  0x04U,   /* 4: TIMx_CH3  */
52
  0x00U,   /* 5: NA */
53
  0x04U    /* 6: TIMx_CH4  */
54
};
55
 
56
static const uint8_t SHIFT_TAB_OCxx[] =
57
{
58
  0U,            /* 0: OC1M, OC1FE, OC1PE */
59
  0U,            /* 1: - NA */
60
  8U,            /* 2: OC2M, OC2FE, OC2PE */
61
  0U,            /* 3: - NA */
62
  0U,            /* 4: OC3M, OC3FE, OC3PE */
63
  0U,            /* 5: - NA */
64
  8U             /* 6: OC4M, OC4FE, OC4PE */
65
};
66
 
67
static const uint8_t SHIFT_TAB_ICxx[] =
68
{
69
  0U,            /* 0: CC1S, IC1PSC, IC1F */
70
  0U,            /* 1: - NA */
71
  8U,            /* 2: CC2S, IC2PSC, IC2F */
72
  0U,            /* 3: - NA */
73
  0U,            /* 4: CC3S, IC3PSC, IC3F */
74
  0U,            /* 5: - NA */
75
  8U             /* 6: CC4S, IC4PSC, IC4F */
76
};
77
 
78
static const uint8_t SHIFT_TAB_CCxP[] =
79
{
80
  0U,            /* 0: CC1P */
81
  0U,            /* 1: NA */
82
  4U,            /* 2: CC2P */
83
  0U,            /* 3: NA */
84
  8U,            /* 4: CC3P */
85
  0U,            /* 5: NA */
86
  12U            /* 6: CC4P */
87
};
88
 
89
/**
90
  * @}
91
  */
92
 
93
/* Private constants ---------------------------------------------------------*/
94
/** @defgroup TIM_LL_Private_Constants TIM Private Constants
95
  * @{
96
  */
97
 
98
 
99
#define TIMx_OR_RMP_SHIFT  16U
100
#define TIMx_OR_RMP_MASK   0x0000FFFFU
101
#define TIM_OR_RMP_MASK    ((TIM_OR_TI1RMP | TIM_OR_ETR_RMP | TIM_OR_TI1_RMP_RI) << TIMx_OR_RMP_SHIFT)
102
#define TIM9_OR_RMP_MASK   ((TIM_OR_TI1RMP | TIM9_OR_ITR1_RMP) << TIMx_OR_RMP_SHIFT)
103
#define TIM2_OR_RMP_MASK   (TIM2_OR_ITR1_RMP << TIMx_OR_RMP_SHIFT)
104
#define TIM3_OR_RMP_MASK   (TIM3_OR_ITR2_RMP << TIMx_OR_RMP_SHIFT)
105
 
106
 
107
 
108
/**
109
  * @}
110
  */
111
 
112
/* Private macros ------------------------------------------------------------*/
113
/** @defgroup TIM_LL_Private_Macros TIM Private Macros
114
  * @{
115
  */
116
/** @brief  Convert channel id into channel index.
117
  * @param  __CHANNEL__ This parameter can be one of the following values:
118
  *         @arg @ref LL_TIM_CHANNEL_CH1
119
  *         @arg @ref LL_TIM_CHANNEL_CH2
120
  *         @arg @ref LL_TIM_CHANNEL_CH3
121
  *         @arg @ref LL_TIM_CHANNEL_CH4
122
  * @retval none
123
  */
124
#define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \
125
  (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\
126
   ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\
127
   ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U : 6U)
128
 
129
/**
130
  * @}
131
  */
132
 
133
 
134
/* Exported types ------------------------------------------------------------*/
135
#if defined(USE_FULL_LL_DRIVER)
136
/** @defgroup TIM_LL_ES_INIT TIM Exported Init structure
137
  * @{
138
  */
139
 
140
/**
141
  * @brief  TIM Time Base configuration structure definition.
142
  */
143
typedef struct
144
{
145
  uint16_t Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.
146
                                   This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
147
 
148
                                   This feature can be modified afterwards using unitary function
149
                                   @ref LL_TIM_SetPrescaler().*/
150
 
151
  uint32_t CounterMode;       /*!< Specifies the counter mode.
152
                                   This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE.
153
 
154
                                   This feature can be modified afterwards using unitary function
155
                                   @ref LL_TIM_SetCounterMode().*/
156
 
157
  uint32_t Autoreload;        /*!< Specifies the auto reload value to be loaded into the active
158
                                   Auto-Reload Register at the next update event.
159
                                   This parameter must be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
160
                                   Some timer instances may support 32 bits counters. In that case this parameter must
161
                                   be a number between 0x0000 and 0xFFFFFFFF.
162
 
163
                                   This feature can be modified afterwards using unitary function
164
                                   @ref LL_TIM_SetAutoReload().*/
165
 
166
  uint32_t ClockDivision;     /*!< Specifies the clock division.
167
                                   This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION.
168
 
169
                                   This feature can be modified afterwards using unitary function
170
                                   @ref LL_TIM_SetClockDivision().*/
171
} LL_TIM_InitTypeDef;
172
 
173
/**
174
  * @brief  TIM Output Compare configuration structure definition.
175
  */
176
typedef struct
177
{
178
  uint32_t OCMode;        /*!< Specifies the output mode.
179
                               This parameter can be a value of @ref TIM_LL_EC_OCMODE.
180
 
181
                               This feature can be modified afterwards using unitary function
182
                               @ref LL_TIM_OC_SetMode().*/
183
 
184
  uint32_t OCState;       /*!< Specifies the TIM Output Compare state.
185
                               This parameter can be a value of @ref TIM_LL_EC_OCSTATE.
186
 
187
                               This feature can be modified afterwards using unitary functions
188
                               @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/
189
 
190
  uint32_t CompareValue;  /*!< Specifies the Compare value to be loaded into the Capture Compare Register.
191
                               This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
192
 
193
                               This feature can be modified afterwards using unitary function
194
                               LL_TIM_OC_SetCompareCHx (x=1..6).*/
195
 
196
  uint32_t OCPolarity;    /*!< Specifies the output polarity.
197
                               This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY.
198
 
199
                               This feature can be modified afterwards using unitary function
200
                               @ref LL_TIM_OC_SetPolarity().*/
201
 
202
 
203
} LL_TIM_OC_InitTypeDef;
204
 
205
/**
206
  * @brief  TIM Input Capture configuration structure definition.
207
  */
208
 
209
typedef struct
210
{
211
 
212
  uint32_t ICPolarity;    /*!< Specifies the active edge of the input signal.
213
                               This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
214
 
215
                               This feature can be modified afterwards using unitary function
216
                               @ref LL_TIM_IC_SetPolarity().*/
217
 
218
  uint32_t ICActiveInput; /*!< Specifies the input.
219
                               This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
220
 
221
                               This feature can be modified afterwards using unitary function
222
                               @ref LL_TIM_IC_SetActiveInput().*/
223
 
224
  uint32_t ICPrescaler;   /*!< Specifies the Input Capture Prescaler.
225
                               This parameter can be a value of @ref TIM_LL_EC_ICPSC.
226
 
227
                               This feature can be modified afterwards using unitary function
228
                               @ref LL_TIM_IC_SetPrescaler().*/
229
 
230
  uint32_t ICFilter;      /*!< Specifies the input capture filter.
231
                               This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
232
 
233
                               This feature can be modified afterwards using unitary function
234
                               @ref LL_TIM_IC_SetFilter().*/
235
} LL_TIM_IC_InitTypeDef;
236
 
237
 
238
/**
239
  * @brief  TIM Encoder interface configuration structure definition.
240
  */
241
typedef struct
242
{
243
  uint32_t EncoderMode;     /*!< Specifies the encoder resolution (x2 or x4).
244
                                 This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE.
245
 
246
                                 This feature can be modified afterwards using unitary function
247
                                 @ref LL_TIM_SetEncoderMode().*/
248
 
249
  uint32_t IC1Polarity;     /*!< Specifies the active edge of TI1 input.
250
                                 This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
251
 
252
                                 This feature can be modified afterwards using unitary function
253
                                 @ref LL_TIM_IC_SetPolarity().*/
254
 
255
  uint32_t IC1ActiveInput;  /*!< Specifies the TI1 input source
256
                                 This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
257
 
258
                                 This feature can be modified afterwards using unitary function
259
                                 @ref LL_TIM_IC_SetActiveInput().*/
260
 
261
  uint32_t IC1Prescaler;    /*!< Specifies the TI1 input prescaler value.
262
                                 This parameter can be a value of @ref TIM_LL_EC_ICPSC.
263
 
264
                                 This feature can be modified afterwards using unitary function
265
                                 @ref LL_TIM_IC_SetPrescaler().*/
266
 
267
  uint32_t IC1Filter;       /*!< Specifies the TI1 input filter.
268
                                 This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
269
 
270
                                 This feature can be modified afterwards using unitary function
271
                                 @ref LL_TIM_IC_SetFilter().*/
272
 
273
  uint32_t IC2Polarity;      /*!< Specifies the active edge of TI2 input.
274
                                 This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
275
 
276
                                 This feature can be modified afterwards using unitary function
277
                                 @ref LL_TIM_IC_SetPolarity().*/
278
 
279
  uint32_t IC2ActiveInput;  /*!< Specifies the TI2 input source
280
                                 This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
281
 
282
                                 This feature can be modified afterwards using unitary function
283
                                 @ref LL_TIM_IC_SetActiveInput().*/
284
 
285
  uint32_t IC2Prescaler;    /*!< Specifies the TI2 input prescaler value.
286
                                 This parameter can be a value of @ref TIM_LL_EC_ICPSC.
287
 
288
                                 This feature can be modified afterwards using unitary function
289
                                 @ref LL_TIM_IC_SetPrescaler().*/
290
 
291
  uint32_t IC2Filter;       /*!< Specifies the TI2 input filter.
292
                                 This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
293
 
294
                                 This feature can be modified afterwards using unitary function
295
                                 @ref LL_TIM_IC_SetFilter().*/
296
 
297
} LL_TIM_ENCODER_InitTypeDef;
298
 
299
 
300
/**
301
  * @}
302
  */
303
#endif /* USE_FULL_LL_DRIVER */
304
 
305
/* Exported constants --------------------------------------------------------*/
306
/** @defgroup TIM_LL_Exported_Constants TIM Exported Constants
307
  * @{
308
  */
309
 
310
/** @defgroup TIM_LL_EC_GET_FLAG Get Flags Defines
311
  * @brief    Flags defines which can be used with LL_TIM_ReadReg function.
312
  * @{
313
  */
314
#define LL_TIM_SR_UIF                          TIM_SR_UIF           /*!< Update interrupt flag */
315
#define LL_TIM_SR_CC1IF                        TIM_SR_CC1IF         /*!< Capture/compare 1 interrupt flag */
316
#define LL_TIM_SR_CC2IF                        TIM_SR_CC2IF         /*!< Capture/compare 2 interrupt flag */
317
#define LL_TIM_SR_CC3IF                        TIM_SR_CC3IF         /*!< Capture/compare 3 interrupt flag */
318
#define LL_TIM_SR_CC4IF                        TIM_SR_CC4IF         /*!< Capture/compare 4 interrupt flag */
319
#define LL_TIM_SR_TIF                          TIM_SR_TIF           /*!< Trigger interrupt flag */
320
#define LL_TIM_SR_CC1OF                        TIM_SR_CC1OF         /*!< Capture/Compare 1 overcapture flag */
321
#define LL_TIM_SR_CC2OF                        TIM_SR_CC2OF         /*!< Capture/Compare 2 overcapture flag */
322
#define LL_TIM_SR_CC3OF                        TIM_SR_CC3OF         /*!< Capture/Compare 3 overcapture flag */
323
#define LL_TIM_SR_CC4OF                        TIM_SR_CC4OF         /*!< Capture/Compare 4 overcapture flag */
324
/**
325
  * @}
326
  */
327
 
328
/** @defgroup TIM_LL_EC_IT IT Defines
329
  * @brief    IT defines which can be used with LL_TIM_ReadReg and  LL_TIM_WriteReg functions.
330
  * @{
331
  */
332
#define LL_TIM_DIER_UIE                        TIM_DIER_UIE         /*!< Update interrupt enable */
333
#define LL_TIM_DIER_CC1IE                      TIM_DIER_CC1IE       /*!< Capture/compare 1 interrupt enable */
334
#define LL_TIM_DIER_CC2IE                      TIM_DIER_CC2IE       /*!< Capture/compare 2 interrupt enable */
335
#define LL_TIM_DIER_CC3IE                      TIM_DIER_CC3IE       /*!< Capture/compare 3 interrupt enable */
336
#define LL_TIM_DIER_CC4IE                      TIM_DIER_CC4IE       /*!< Capture/compare 4 interrupt enable */
337
#define LL_TIM_DIER_TIE                        TIM_DIER_TIE         /*!< Trigger interrupt enable */
338
/**
339
  * @}
340
  */
341
 
342
/** @defgroup TIM_LL_EC_UPDATESOURCE Update Source
343
  * @{
344
  */
345
#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 */
346
#define LL_TIM_UPDATESOURCE_COUNTER            TIM_CR1_URS          /*!< Only counter overflow/underflow generates an update request */
347
/**
348
  * @}
349
  */
350
 
351
/** @defgroup TIM_LL_EC_ONEPULSEMODE One Pulse Mode
352
  * @{
353
  */
354
#define LL_TIM_ONEPULSEMODE_SINGLE             TIM_CR1_OPM          /*!< Counter stops counting at the next update event */
355
#define LL_TIM_ONEPULSEMODE_REPETITIVE         0x00000000U          /*!< Counter is not stopped at update event */
356
/**
357
  * @}
358
  */
359
 
360
/** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode
361
  * @{
362
  */
363
#define LL_TIM_COUNTERMODE_UP                  0x00000000U          /*!<Counter used as upcounter */
364
#define LL_TIM_COUNTERMODE_DOWN                TIM_CR1_DIR          /*!< Counter used as downcounter */
365
#define LL_TIM_COUNTERMODE_CENTER_DOWN         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. */
366
#define LL_TIM_COUNTERMODE_CENTER_UP           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 */
367
#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. */
368
/**
369
  * @}
370
  */
371
 
372
/** @defgroup TIM_LL_EC_CLOCKDIVISION Clock Division
373
  * @{
374
  */
375
#define LL_TIM_CLOCKDIVISION_DIV1              0x00000000U          /*!< tDTS=tCK_INT */
376
#define LL_TIM_CLOCKDIVISION_DIV2              TIM_CR1_CKD_0        /*!< tDTS=2*tCK_INT */
377
#define LL_TIM_CLOCKDIVISION_DIV4              TIM_CR1_CKD_1        /*!< tDTS=4*tCK_INT */
378
/**
379
  * @}
380
  */
381
 
382
/** @defgroup TIM_LL_EC_COUNTERDIRECTION Counter Direction
383
  * @{
384
  */
385
#define LL_TIM_COUNTERDIRECTION_UP             0x00000000U          /*!< Timer counter counts up */
386
#define LL_TIM_COUNTERDIRECTION_DOWN           TIM_CR1_DIR          /*!< Timer counter counts down */
387
/**
388
  * @}
389
  */
390
 
391
 
392
/** @defgroup TIM_LL_EC_CCDMAREQUEST Capture Compare DMA Request
393
  * @{
394
  */
395
#define LL_TIM_CCDMAREQUEST_CC                 0x00000000U          /*!< CCx DMA request sent when CCx event occurs */
396
#define LL_TIM_CCDMAREQUEST_UPDATE             TIM_CR2_CCDS         /*!< CCx DMA requests sent when update event occurs */
397
/**
398
  * @}
399
  */
400
 
401
 
402
/** @defgroup TIM_LL_EC_CHANNEL Channel
403
  * @{
404
  */
405
#define LL_TIM_CHANNEL_CH1                     TIM_CCER_CC1E     /*!< Timer input/output channel 1 */
406
#define LL_TIM_CHANNEL_CH2                     TIM_CCER_CC2E     /*!< Timer input/output channel 2 */
407
#define LL_TIM_CHANNEL_CH3                     TIM_CCER_CC3E     /*!< Timer input/output channel 3 */
408
#define LL_TIM_CHANNEL_CH4                     TIM_CCER_CC4E     /*!< Timer input/output channel 4 */
409
/**
410
  * @}
411
  */
412
 
413
#if defined(USE_FULL_LL_DRIVER)
414
/** @defgroup TIM_LL_EC_OCSTATE Output Configuration State
415
  * @{
416
  */
417
#define LL_TIM_OCSTATE_DISABLE                 0x00000000U             /*!< OCx is not active */
418
#define LL_TIM_OCSTATE_ENABLE                  TIM_CCER_CC1E           /*!< OCx signal is output on the corresponding output pin */
419
/**
420
  * @}
421
  */
422
#endif /* USE_FULL_LL_DRIVER */
423
 
424
/** @defgroup TIM_LL_EC_OCMODE Output Configuration Mode
425
  * @{
426
  */
427
#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 */
428
#define LL_TIM_OCMODE_ACTIVE                   TIM_CCMR1_OC1M_0                                         /*!<OCyREF is forced high on compare match*/
429
#define LL_TIM_OCMODE_INACTIVE                 TIM_CCMR1_OC1M_1                                         /*!<OCyREF is forced low on compare match*/
430
#define LL_TIM_OCMODE_TOGGLE                   (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0)                    /*!<OCyREF toggles on compare match*/
431
#define LL_TIM_OCMODE_FORCED_INACTIVE          TIM_CCMR1_OC1M_2                                         /*!<OCyREF is forced low*/
432
#define LL_TIM_OCMODE_FORCED_ACTIVE            (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0)                    /*!<OCyREF is forced high*/
433
#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.*/
434
#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*/
435
/**
436
  * @}
437
  */
438
 
439
/** @defgroup TIM_LL_EC_OCPOLARITY Output Configuration Polarity
440
  * @{
441
  */
442
#define LL_TIM_OCPOLARITY_HIGH                 0x00000000U                 /*!< OCxactive high*/
443
#define LL_TIM_OCPOLARITY_LOW                  TIM_CCER_CC1P               /*!< OCxactive low*/
444
/**
445
  * @}
446
  */
447
 
448
 
449
 
450
/** @defgroup TIM_LL_EC_ACTIVEINPUT Active Input Selection
451
  * @{
452
  */
453
#define LL_TIM_ACTIVEINPUT_DIRECTTI            (TIM_CCMR1_CC1S_0 << 16U) /*!< ICx is mapped on TIx */
454
#define LL_TIM_ACTIVEINPUT_INDIRECTTI          (TIM_CCMR1_CC1S_1 << 16U) /*!< ICx is mapped on TIy */
455
#define LL_TIM_ACTIVEINPUT_TRC                 (TIM_CCMR1_CC1S << 16U)   /*!< ICx is mapped on TRC */
456
/**
457
  * @}
458
  */
459
 
460
/** @defgroup TIM_LL_EC_ICPSC Input Configuration Prescaler
461
  * @{
462
  */
463
#define LL_TIM_ICPSC_DIV1                      0x00000000U                    /*!< No prescaler, capture is done each time an edge is detected on the capture input */
464
#define LL_TIM_ICPSC_DIV2                      (TIM_CCMR1_IC1PSC_0 << 16U)    /*!< Capture is done once every 2 events */
465
#define LL_TIM_ICPSC_DIV4                      (TIM_CCMR1_IC1PSC_1 << 16U)    /*!< Capture is done once every 4 events */
466
#define LL_TIM_ICPSC_DIV8                      (TIM_CCMR1_IC1PSC << 16U)      /*!< Capture is done once every 8 events */
467
/**
468
  * @}
469
  */
470
 
471
/** @defgroup TIM_LL_EC_IC_FILTER Input Configuration Filter
472
  * @{
473
  */
474
#define LL_TIM_IC_FILTER_FDIV1                 0x00000000U                                                        /*!< No filter, sampling is done at fDTS */
475
#define LL_TIM_IC_FILTER_FDIV1_N2              (TIM_CCMR1_IC1F_0 << 16U)                                          /*!< fSAMPLING=fCK_INT, N=2 */
476
#define LL_TIM_IC_FILTER_FDIV1_N4              (TIM_CCMR1_IC1F_1 << 16U)                                          /*!< fSAMPLING=fCK_INT, N=4 */
477
#define LL_TIM_IC_FILTER_FDIV1_N8              ((TIM_CCMR1_IC1F_1 | TIM_CCMR1_IC1F_0) << 16U)                     /*!< fSAMPLING=fCK_INT, N=8 */
478
#define LL_TIM_IC_FILTER_FDIV2_N6              (TIM_CCMR1_IC1F_2 << 16U)                                          /*!< fSAMPLING=fDTS/2, N=6 */
479
#define LL_TIM_IC_FILTER_FDIV2_N8              ((TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_0) << 16U)                     /*!< fSAMPLING=fDTS/2, N=8 */
480
#define LL_TIM_IC_FILTER_FDIV4_N6              ((TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_1) << 16U)                     /*!< fSAMPLING=fDTS/4, N=6 */
481
#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 */
482
#define LL_TIM_IC_FILTER_FDIV8_N6              (TIM_CCMR1_IC1F_3 << 16U)                                          /*!< fSAMPLING=fDTS/8, N=6 */
483
#define LL_TIM_IC_FILTER_FDIV8_N8              ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_0) << 16U)                     /*!< fSAMPLING=fDTS/8, N=8 */
484
#define LL_TIM_IC_FILTER_FDIV16_N5             ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_1) << 16U)                     /*!< fSAMPLING=fDTS/16, N=5 */
485
#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 */
486
#define LL_TIM_IC_FILTER_FDIV16_N8             ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_2) << 16U)                     /*!< fSAMPLING=fDTS/16, N=8 */
487
#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 */
488
#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 */
489
#define LL_TIM_IC_FILTER_FDIV32_N8             (TIM_CCMR1_IC1F << 16U)                                            /*!< fSAMPLING=fDTS/32, N=8 */
490
/**
491
  * @}
492
  */
493
 
494
/** @defgroup TIM_LL_EC_IC_POLARITY Input Configuration Polarity
495
  * @{
496
  */
497
#define LL_TIM_IC_POLARITY_RISING              0x00000000U                      /*!< The circuit is sensitive to TIxFP1 rising edge, TIxFP1 is not inverted */
498
#define LL_TIM_IC_POLARITY_FALLING             TIM_CCER_CC1P                    /*!< The circuit is sensitive to TIxFP1 falling edge, TIxFP1 is inverted */
499
#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 */
500
/**
501
  * @}
502
  */
503
 
504
/** @defgroup TIM_LL_EC_CLOCKSOURCE Clock Source
505
  * @{
506
  */
507
#define LL_TIM_CLOCKSOURCE_INTERNAL            0x00000000U                                          /*!< The timer is clocked by the internal clock provided from the RCC */
508
#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 input*/
509
#define LL_TIM_CLOCKSOURCE_EXT_MODE2           TIM_SMCR_ECE                                         /*!< Counter counts at each rising or falling edge on the external trigger input ETR */
510
/**
511
  * @}
512
  */
513
 
514
/** @defgroup TIM_LL_EC_ENCODERMODE Encoder Mode
515
  * @{
516
  */
517
#define LL_TIM_ENCODERMODE_X2_TI1                     TIM_SMCR_SMS_0                                                     /*!< Quadrature encoder mode 1, x2 mode - Counter counts up/down on TI1FP1 edge depending on TI2FP2 level */
518
#define LL_TIM_ENCODERMODE_X2_TI2                     TIM_SMCR_SMS_1                                                     /*!< Quadrature encoder mode 2, x2 mode - Counter counts up/down on TI2FP2 edge depending on TI1FP1 level */
519
#define LL_TIM_ENCODERMODE_X4_TI12                   (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0)                                   /*!< Quadrature encoder mode 3, x4 mode - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input */
520
/**
521
  * @}
522
  */
523
 
524
/** @defgroup TIM_LL_EC_TRGO Trigger Output
525
  * @{
526
  */
527
#define LL_TIM_TRGO_RESET                      0x00000000U                                     /*!< UG bit from the TIMx_EGR register is used as trigger output */
528
#define LL_TIM_TRGO_ENABLE                     TIM_CR2_MMS_0                                   /*!< Counter Enable signal (CNT_EN) is used as trigger output */
529
#define LL_TIM_TRGO_UPDATE                     TIM_CR2_MMS_1                                   /*!< Update event is used as trigger output */
530
#define LL_TIM_TRGO_CC1IF                      (TIM_CR2_MMS_1 | TIM_CR2_MMS_0)                 /*!< CC1 capture or a compare match is used as trigger output */
531
#define LL_TIM_TRGO_OC1REF                     TIM_CR2_MMS_2                                   /*!< OC1REF signal is used as trigger output */
532
#define LL_TIM_TRGO_OC2REF                     (TIM_CR2_MMS_2 | TIM_CR2_MMS_0)                 /*!< OC2REF signal is used as trigger output */
533
#define LL_TIM_TRGO_OC3REF                     (TIM_CR2_MMS_2 | TIM_CR2_MMS_1)                 /*!< OC3REF signal is used as trigger output */
534
#define LL_TIM_TRGO_OC4REF                     (TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< OC4REF signal is used as trigger output */
535
/**
536
  * @}
537
  */
538
 
539
 
540
/** @defgroup TIM_LL_EC_SLAVEMODE Slave Mode
541
  * @{
542
  */
543
#define LL_TIM_SLAVEMODE_DISABLED              0x00000000U                         /*!< Slave mode disabled */
544
#define LL_TIM_SLAVEMODE_RESET                 TIM_SMCR_SMS_2                      /*!< Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter */
545
#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 */
546
#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 */
547
/**
548
  * @}
549
  */
550
 
551
/** @defgroup TIM_LL_EC_TS Trigger Selection
552
  * @{
553
  */
554
#define LL_TIM_TS_ITR0                         0x00000000U                                                     /*!< Internal Trigger 0 (ITR0) is used as trigger input */
555
#define LL_TIM_TS_ITR1                         TIM_SMCR_TS_0                                                   /*!< Internal Trigger 1 (ITR1) is used as trigger input */
556
#define LL_TIM_TS_ITR2                         TIM_SMCR_TS_1                                                   /*!< Internal Trigger 2 (ITR2) is used as trigger input */
557
#define LL_TIM_TS_ITR3                         (TIM_SMCR_TS_0 | TIM_SMCR_TS_1)                                 /*!< Internal Trigger 3 (ITR3) is used as trigger input */
558
#define LL_TIM_TS_TI1F_ED                      TIM_SMCR_TS_2                                                   /*!< TI1 Edge Detector (TI1F_ED) is used as trigger input */
559
#define LL_TIM_TS_TI1FP1                       (TIM_SMCR_TS_2 | TIM_SMCR_TS_0)                                 /*!< Filtered Timer Input 1 (TI1FP1) is used as trigger input */
560
#define LL_TIM_TS_TI2FP2                       (TIM_SMCR_TS_2 | TIM_SMCR_TS_1)                                 /*!< Filtered Timer Input 2 (TI12P2) is used as trigger input */
561
#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 */
562
/**
563
  * @}
564
  */
565
 
566
/** @defgroup TIM_LL_EC_ETR_POLARITY External Trigger Polarity
567
  * @{
568
  */
569
#define LL_TIM_ETR_POLARITY_NONINVERTED        0x00000000U             /*!< ETR is non-inverted, active at high level or rising edge */
570
#define LL_TIM_ETR_POLARITY_INVERTED           TIM_SMCR_ETP            /*!< ETR is inverted, active at low level or falling edge */
571
/**
572
  * @}
573
  */
574
 
575
/** @defgroup TIM_LL_EC_ETR_PRESCALER External Trigger Prescaler
576
  * @{
577
  */
578
#define LL_TIM_ETR_PRESCALER_DIV1              0x00000000U             /*!< ETR prescaler OFF */
579
#define LL_TIM_ETR_PRESCALER_DIV2              TIM_SMCR_ETPS_0         /*!< ETR frequency is divided by 2 */
580
#define LL_TIM_ETR_PRESCALER_DIV4              TIM_SMCR_ETPS_1         /*!< ETR frequency is divided by 4 */
581
#define LL_TIM_ETR_PRESCALER_DIV8              TIM_SMCR_ETPS           /*!< ETR frequency is divided by 8 */
582
/**
583
  * @}
584
  */
585
 
586
/** @defgroup TIM_LL_EC_ETR_FILTER External Trigger Filter
587
  * @{
588
  */
589
#define LL_TIM_ETR_FILTER_FDIV1                0x00000000U                                          /*!< No filter, sampling is done at fDTS */
590
#define LL_TIM_ETR_FILTER_FDIV1_N2             TIM_SMCR_ETF_0                                       /*!< fSAMPLING=fCK_INT, N=2 */
591
#define LL_TIM_ETR_FILTER_FDIV1_N4             TIM_SMCR_ETF_1                                       /*!< fSAMPLING=fCK_INT, N=4 */
592
#define LL_TIM_ETR_FILTER_FDIV1_N8             (TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0)                    /*!< fSAMPLING=fCK_INT, N=8 */
593
#define LL_TIM_ETR_FILTER_FDIV2_N6             TIM_SMCR_ETF_2                                       /*!< fSAMPLING=fDTS/2, N=6 */
594
#define LL_TIM_ETR_FILTER_FDIV2_N8             (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_0)                    /*!< fSAMPLING=fDTS/2, N=8 */
595
#define LL_TIM_ETR_FILTER_FDIV4_N6             (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1)                    /*!< fSAMPLING=fDTS/4, N=6 */
596
#define LL_TIM_ETR_FILTER_FDIV4_N8             (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0)   /*!< fSAMPLING=fDTS/4, N=8 */
597
#define LL_TIM_ETR_FILTER_FDIV8_N6             TIM_SMCR_ETF_3                                       /*!< fSAMPLING=fDTS/8, N=8 */
598
#define LL_TIM_ETR_FILTER_FDIV8_N8             (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_0)                    /*!< fSAMPLING=fDTS/16, N=5 */
599
#define LL_TIM_ETR_FILTER_FDIV16_N5            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_1)                    /*!< fSAMPLING=fDTS/16, N=6 */
600
#define LL_TIM_ETR_FILTER_FDIV16_N6            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0)   /*!< fSAMPLING=fDTS/16, N=8 */
601
#define LL_TIM_ETR_FILTER_FDIV16_N8            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2)                    /*!< fSAMPLING=fDTS/16, N=5 */
602
#define LL_TIM_ETR_FILTER_FDIV32_N5            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2 | TIM_SMCR_ETF_0)   /*!< fSAMPLING=fDTS/32, N=5 */
603
#define LL_TIM_ETR_FILTER_FDIV32_N6            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1)   /*!< fSAMPLING=fDTS/32, N=6 */
604
#define LL_TIM_ETR_FILTER_FDIV32_N8            TIM_SMCR_ETF                                         /*!< fSAMPLING=fDTS/32, N=8 */
605
/**
606
  * @}
607
  */
608
 
609
 
610
 
611
 
612
 
613
 
614
 
615
/** @defgroup TIM_LL_EC_DMABURST_BASEADDR DMA Burst Base Address
616
  * @{
617
  */
618
#define LL_TIM_DMABURST_BASEADDR_CR1           0x00000000U                                                      /*!< TIMx_CR1 register is the DMA base address for DMA burst */
619
#define LL_TIM_DMABURST_BASEADDR_CR2           TIM_DCR_DBA_0                                                    /*!< TIMx_CR2 register is the DMA base address for DMA burst */
620
#define LL_TIM_DMABURST_BASEADDR_SMCR          TIM_DCR_DBA_1                                                    /*!< TIMx_SMCR register is the DMA base address for DMA burst */
621
#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 */
622
#define LL_TIM_DMABURST_BASEADDR_SR            TIM_DCR_DBA_2                                                    /*!< TIMx_SR register is the DMA base address for DMA burst */
623
#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 */
624
#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 */
625
#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 */
626
#define LL_TIM_DMABURST_BASEADDR_CCER          TIM_DCR_DBA_3                                                    /*!< TIMx_CCER register is the DMA base address for DMA burst */
627
#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 */
628
#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 */
629
#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 */
630
#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 */
631
#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 */
632
#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 */
633
#define LL_TIM_DMABURST_BASEADDR_CCR4          TIM_DCR_DBA_4                                                    /*!< TIMx_CCR4 register is the DMA base address for DMA burst */
634
#define LL_TIM_DMABURST_BASEADDR_OR            (TIM_DCR_DBA_4 | TIM_DCR_DBA_2)                                  /*!< TIMx_OR register is the DMA base address for DMA burst */
635
/**
636
  * @}
637
  */
638
 
639
/** @defgroup TIM_LL_EC_DMABURST_LENGTH DMA Burst Length
640
  * @{
641
  */
642
#define LL_TIM_DMABURST_LENGTH_1TRANSFER       0x00000000U                                                     /*!< Transfer is done to 1 register starting from the DMA burst base address */
643
#define LL_TIM_DMABURST_LENGTH_2TRANSFERS      TIM_DCR_DBL_0                                                   /*!< Transfer is done to 2 registers starting from the DMA burst base address */
644
#define LL_TIM_DMABURST_LENGTH_3TRANSFERS      TIM_DCR_DBL_1                                                   /*!< Transfer is done to 3 registers starting from the DMA burst base address */
645
#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 */
646
#define LL_TIM_DMABURST_LENGTH_5TRANSFERS      TIM_DCR_DBL_2                                                   /*!< Transfer is done to 5 registers starting from the DMA burst base address */
647
#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 */
648
#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 */
649
#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 */
650
#define LL_TIM_DMABURST_LENGTH_9TRANSFERS      TIM_DCR_DBL_3                                                   /*!< Transfer is done to 9 registers starting from the DMA burst base address */
651
#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 */
652
#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 */
653
#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 */
654
#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 */
655
#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 */
656
#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 */
657
#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 */
658
#define LL_TIM_DMABURST_LENGTH_17TRANSFERS     TIM_DCR_DBL_4                                                   /*!< Transfer is done to 17 registers starting from the DMA burst base address */
659
#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 */
660
/**
661
  * @}
662
  */
663
 
664
/** @defgroup TIM_LL_EC_TIM10_TI1_RMP  TIM10 input 1 remapping capability
665
  * @{
666
  */
667
#define LL_TIM_TIM10_TI1_RMP_GPIO   TIM_OR_RMP_MASK                                         /*!< TIM10 channel1 is connected to GPIO */
668
#define LL_TIM_TIM10_TI1_RMP_LSI    (TIM_OR_TI1RMP_0 | TIM_OR_RMP_MASK)                     /*!< TIM10 channel1 is connected to LSI internal clock */
669
#define LL_TIM_TIM10_TI1_RMP_LSE    (TIM_OR_TI1RMP_1 | TIM_OR_RMP_MASK)                     /*!< TIM10 channel1 is connected to LSE internal clock */
670
#define LL_TIM_TIM10_TI1_RMP_RTC    (TIM_OR_TI1RMP_0 | TIM_OR_TI1RMP_1 | TIM_OR_RMP_MASK)   /*!< TIM10 channel1 is connected to RTC wakeup interrupt signal */
671
/**
672
  * @}
673
  */
674
 
675
/** @defgroup TIM_LL_EC_TIM10_ETR_RMP  TIM10 ETR remap
676
  * @{
677
  */
678
#define LL_TIM_TIM10_ETR_RMP_LSE      TIM_OR_RMP_MASK                                         /*!< TIM10 ETR input is connected to LSE */
679
#define LL_TIM_TIM10_ETR_RMP_TIM9_TGO (TIM_OR_ETR_RMP | TIM_OR_RMP_MASK)                      /*!< TIM10 ETR input is connected to TIM9 TGO */
680
/**
681
  * @}
682
  */
683
 
684
/** @defgroup TIM_LL_EC_TIM10_TI1_RMP_RI TIM10 Input 1 remap for Routing Interface (RI)
685
  * @{
686
  */
687
#define LL_TIM_TIM10_TI1_RMP          TIM_OR_RMP_MASK                                         /*!< TIM10 Channel1 connection depends on TI1_RMP[1:0] bit values */
688
#define LL_TIM_TIM10_TI1_RMP_RI       (TIM_OR_TI1_RMP_RI | TIM_OR_RMP_MASK)                   /*!< TIM10 channel1 is connected to RI */
689
/**
690
  * @}
691
  */
692
 
693
/** @defgroup TIM_LL_EC_TIM11_TI1_RMP  TIM11 input 1 remapping capability
694
  * @{
695
  */
696
#define LL_TIM_TIM11_TI1_RMP_GPIO       TIM_OR_RMP_MASK                                       /*!< TIM11 channel1 is connected to GPIO */
697
#define LL_TIM_TIM11_TI1_RMP_MSI        (TIM_OR_TI1RMP_0 | TIM_OR_RMP_MASK)                   /*!< TIM11 channel1 is connected to MSI internal clock */
698
#define LL_TIM_TIM11_TI1_RMP_HSE_RTC    (TIM_OR_TI1RMP_1 | TIM_OR_RMP_MASK)                   /*!< TIM11 channel1 is connected to HSE RTC clock */
699
#define LL_TIM_TIM11_TI1_RMP_GPIO1      (TIM_OR_TI1RMP_0 | TIM_OR_TI1RMP_1 | TIM_OR_RMP_MASK) /*!< TIM11 channel1 is connected to GPIO */
700
/**
701
  * @}
702
  */
703
 
704
/** @defgroup TIM_LL_EC_TIM11_ETR_RMP  TIM11 ETR remap
705
  * @{
706
  */
707
#define LL_TIM_TIM11_ETR_RMP_LSE      TIM_OR_RMP_MASK                                         /*!< TIM11 ETR input is connected to LSE */
708
#define LL_TIM_TIM11_ETR_RMP_TIM9_TGO (TIM_OR_ETR_RMP | TIM_OR_RMP_MASK)                      /*!< TIM11 ETR input is connected to TIM9 TGO clock */
709
/**
710
  * @}
711
  */
712
 
713
/** @defgroup TIM_LL_EC_TIM11_TI1_RMP_RI TIM11 Input 1 remap for Routing Interface (RI)
714
  * @{
715
  */
716
#define LL_TIM_TIM11_TI1_RMP          TIM_OR_RMP_MASK                                         /*!< TIM11 Channel1 connection depends on TI1_RMP[1:0] bit values */
717
#define LL_TIM_TIM11_TI1_RMP_RI       (TIM_OR_TI1_RMP_RI | TIM_OR_RMP_MASK)                   /*!< TIM11 channel1 is connected to RI */
718
/**
719
  * @}
720
  */
721
 
722
/** @defgroup TIM_LL_EC_TIM9_TI1_RMP TIM9 Input 1 remap
723
  * @{
724
  */
725
#define LL_TIM_TIM9_TI1_RMP_GPIO     TIM9_OR_RMP_MASK                                          /*!< TIM9 channel1 is connected to GPIO */
726
#define LL_TIM_TIM9_TI1_RMP_LSE      (TIM_OR_TI1RMP_0 | TIM9_OR_RMP_MASK)                      /*!< TIM9 channel1 is connected to LSE internal clock */
727
#define LL_TIM_TIM9_TI1_RMP_GPIO1    (TIM_OR_TI1RMP_1 | TIM9_OR_RMP_MASK)                      /*!< TIM9 channel1 is connected to GPIO */
728
#define LL_TIM_TIM9_TI1_RMP_GPIO2    (TIM_OR_TI1RMP_0 | TIM_OR_TI1RMP_1 | TIM9_OR_RMP_MASK)    /*!< TIM9 channel1 is connected to GPIO */
729
/**
730
  * @}
731
  */
732
 
733
/** @defgroup TIM_LL_EC_TIM9_ITR1_RMP  TIM9 ITR1 remap
734
  * @{
735
  */
736
#define LL_TIM_TIM9_ITR1_RMP_TIM3_TGO   TIM9_OR_RMP_MASK                                     /*!< TIM9 channel1 is connected to TIM3 TGO signal */
737
#define LL_TIM_TIM9_ITR1_RMP_TOUCH_IO   (TIM9_OR_ITR1_RMP | TIM9_OR_RMP_MASK)                /*!< TIM9 channel1 is connected to touch sensing I/O */
738
/**
739
  * @}
740
  */
741
 
742
/** @defgroup TIM_LL_EC_TIM2_ITR1_RMP  TIM2 internal trigger 1 remap
743
  * @{
744
  */
745
#define LL_TIM_TIM2_TIR1_RMP_TIM10_OC    TIM9_OR_RMP_MASK                                     /*!< TIM2 ITR1 input is connected to TIM10 OC*/
746
#define LL_TIM_TIM2_TIR1_RMP_TIM5_TGO    (TIM2_OR_ITR1_RMP | TIM9_OR_RMP_MASK)                /*!< TIM2 ITR1 input is connected to TIM5 TGO */
747
/**
748
  * @}
749
  */
750
 
751
/** @defgroup TIM_LL_EC_TIM3_ITR2_RMP  TIM3 internal trigger 2 remap
752
  * @{
753
  */
754
#define LL_TIM_TIM3_TIR2_RMP_TIM11_OC    TIM9_OR_RMP_MASK                                     /*!< TIM3 ITR2 input is connected to TIM11 OC */
755
#define LL_TIM_TIM3_TIR2_RMP_TIM5_TGO    (TIM3_OR_ITR2_RMP | TIM9_OR_RMP_MASK)                /*!< TIM3 ITR2 input is connected to TIM5 TGO */
756
/**
757
  * @}
758
  */
759
 
760
 
761
/** @defgroup TIM_LL_EC_OCREF_CLR_INT OCREF clear input selection
762
  * @{
763
  */
764
#define LL_TIM_OCREF_CLR_INT_OCREF_CLR     0x00000000U         /*!< OCREF_CLR_INT is connected to the OCREF_CLR input */
765
#define LL_TIM_OCREF_CLR_INT_ETR           TIM_SMCR_OCCS       /*!< OCREF_CLR_INT is connected to ETRF */
766
/**
767
  * @}
768
  */
769
 
770
 
771
/**
772
  * @}
773
  */
774
 
775
/* Exported macro ------------------------------------------------------------*/
776
/** @defgroup TIM_LL_Exported_Macros TIM Exported Macros
777
  * @{
778
  */
779
 
780
/** @defgroup TIM_LL_EM_WRITE_READ Common Write and read registers Macros
781
  * @{
782
  */
783
/**
784
  * @brief  Write a value in TIM register.
785
  * @param  __INSTANCE__ TIM Instance
786
  * @param  __REG__ Register to be written
787
  * @param  __VALUE__ Value to be written in the register
788
  * @retval None
789
  */
790
#define LL_TIM_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
791
 
792
/**
793
  * @brief  Read a value in TIM register.
794
  * @param  __INSTANCE__ TIM Instance
795
  * @param  __REG__ Register to be read
796
  * @retval Register value
797
  */
798
#define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__)
799
/**
800
  * @}
801
  */
802
 
803
/**
804
  * @brief  HELPER macro calculating the prescaler value to achieve the required counter clock frequency.
805
  * @note ex: @ref __LL_TIM_CALC_PSC (80000000, 1000000);
806
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
807
  * @param  __CNTCLK__ counter clock frequency (in Hz)
808
  * @retval Prescaler value  (between Min_Data=0 and Max_Data=65535)
809
  */
810
#define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__)   \
811
  (((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)((((__TIMCLK__) + (__CNTCLK__)/2U)/(__CNTCLK__)) - 1U) : 0U)
812
 
813
/**
814
  * @brief  HELPER macro calculating the auto-reload value to achieve the required output signal frequency.
815
  * @note ex: @ref __LL_TIM_CALC_ARR (1000000, @ref LL_TIM_GetPrescaler (), 10000);
816
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
817
  * @param  __PSC__ prescaler
818
  * @param  __FREQ__ output signal frequency (in Hz)
819
  * @retval  Auto-reload value  (between Min_Data=0 and Max_Data=65535)
820
  */
821
#define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \
822
  ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U))) - 1U) : 0U)
823
 
824
/**
825
  * @brief  HELPER macro calculating the compare value required to achieve the required timer output compare
826
  *         active/inactive delay.
827
  * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10);
828
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
829
  * @param  __PSC__ prescaler
830
  * @param  __DELAY__ timer output compare active/inactive delay (in us)
831
  * @retval Compare value  (between Min_Data=0 and Max_Data=65535)
832
  */
833
#define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__)  \
834
  ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \
835
              / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U))))
836
 
837
/**
838
  * @brief  HELPER macro calculating the auto-reload value to achieve the required pulse duration
839
  *         (when the timer operates in one pulse mode).
840
  * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20);
841
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
842
  * @param  __PSC__ prescaler
843
  * @param  __DELAY__ timer output compare active/inactive delay (in us)
844
  * @param  __PULSE__ pulse duration (in us)
845
  * @retval Auto-reload value  (between Min_Data=0 and Max_Data=65535)
846
  */
847
#define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__)  \
848
  ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \
849
              + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__))))
850
 
851
/**
852
  * @brief  HELPER macro retrieving the ratio of the input capture prescaler
853
  * @note ex: @ref __LL_TIM_GET_ICPSC_RATIO (@ref LL_TIM_IC_GetPrescaler ());
854
  * @param  __ICPSC__ This parameter can be one of the following values:
855
  *         @arg @ref LL_TIM_ICPSC_DIV1
856
  *         @arg @ref LL_TIM_ICPSC_DIV2
857
  *         @arg @ref LL_TIM_ICPSC_DIV4
858
  *         @arg @ref LL_TIM_ICPSC_DIV8
859
  * @retval Input capture prescaler ratio (1, 2, 4 or 8)
860
  */
861
#define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__)  \
862
  ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos)))
863
 
864
 
865
/**
866
  * @}
867
  */
868
 
869
/* Exported functions --------------------------------------------------------*/
870
/** @defgroup TIM_LL_Exported_Functions TIM Exported Functions
871
  * @{
872
  */
873
 
874
/** @defgroup TIM_LL_EF_Time_Base Time Base configuration
875
  * @{
876
  */
877
/**
878
  * @brief  Enable timer counter.
879
  * @rmtoll CR1          CEN           LL_TIM_EnableCounter
880
  * @param  TIMx Timer instance
881
  * @retval None
882
  */
883
__STATIC_INLINE void LL_TIM_EnableCounter(TIM_TypeDef *TIMx)
884
{
885
  SET_BIT(TIMx->CR1, TIM_CR1_CEN);
886
}
887
 
888
/**
889
  * @brief  Disable timer counter.
890
  * @rmtoll CR1          CEN           LL_TIM_DisableCounter
891
  * @param  TIMx Timer instance
892
  * @retval None
893
  */
894
__STATIC_INLINE void LL_TIM_DisableCounter(TIM_TypeDef *TIMx)
895
{
896
  CLEAR_BIT(TIMx->CR1, TIM_CR1_CEN);
897
}
898
 
899
/**
900
  * @brief  Indicates whether the timer counter is enabled.
901
  * @rmtoll CR1          CEN           LL_TIM_IsEnabledCounter
902
  * @param  TIMx Timer instance
903
  * @retval State of bit (1 or 0).
904
  */
905
__STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(const TIM_TypeDef *TIMx)
906
{
907
  return ((READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN)) ? 1UL : 0UL);
908
}
909
 
910
/**
911
  * @brief  Enable update event generation.
912
  * @rmtoll CR1          UDIS          LL_TIM_EnableUpdateEvent
913
  * @param  TIMx Timer instance
914
  * @retval None
915
  */
916
__STATIC_INLINE void LL_TIM_EnableUpdateEvent(TIM_TypeDef *TIMx)
917
{
918
  CLEAR_BIT(TIMx->CR1, TIM_CR1_UDIS);
919
}
920
 
921
/**
922
  * @brief  Disable update event generation.
923
  * @rmtoll CR1          UDIS          LL_TIM_DisableUpdateEvent
924
  * @param  TIMx Timer instance
925
  * @retval None
926
  */
927
__STATIC_INLINE void LL_TIM_DisableUpdateEvent(TIM_TypeDef *TIMx)
928
{
929
  SET_BIT(TIMx->CR1, TIM_CR1_UDIS);
930
}
931
 
932
/**
933
  * @brief  Indicates whether update event generation is enabled.
934
  * @rmtoll CR1          UDIS          LL_TIM_IsEnabledUpdateEvent
935
  * @param  TIMx Timer instance
936
  * @retval Inverted state of bit (0 or 1).
937
  */
938
__STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(const TIM_TypeDef *TIMx)
939
{
940
  return ((READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == (uint32_t)RESET) ? 1UL : 0UL);
941
}
942
 
943
/**
944
  * @brief  Set update event source
945
  * @note Update event source set to LL_TIM_UPDATESOURCE_REGULAR: any of the following events
946
  *       generate an update interrupt or DMA request if enabled:
947
  *        - Counter overflow/underflow
948
  *        - Setting the UG bit
949
  *        - Update generation through the slave mode controller
950
  * @note Update event source set to LL_TIM_UPDATESOURCE_COUNTER: only counter
951
  *       overflow/underflow generates an update interrupt or DMA request if enabled.
952
  * @rmtoll CR1          URS           LL_TIM_SetUpdateSource
953
  * @param  TIMx Timer instance
954
  * @param  UpdateSource This parameter can be one of the following values:
955
  *         @arg @ref LL_TIM_UPDATESOURCE_REGULAR
956
  *         @arg @ref LL_TIM_UPDATESOURCE_COUNTER
957
  * @retval None
958
  */
959
__STATIC_INLINE void LL_TIM_SetUpdateSource(TIM_TypeDef *TIMx, uint32_t UpdateSource)
960
{
961
  MODIFY_REG(TIMx->CR1, TIM_CR1_URS, UpdateSource);
962
}
963
 
964
/**
965
  * @brief  Get actual event update source
966
  * @rmtoll CR1          URS           LL_TIM_GetUpdateSource
967
  * @param  TIMx Timer instance
968
  * @retval Returned value can be one of the following values:
969
  *         @arg @ref LL_TIM_UPDATESOURCE_REGULAR
970
  *         @arg @ref LL_TIM_UPDATESOURCE_COUNTER
971
  */
972
__STATIC_INLINE uint32_t LL_TIM_GetUpdateSource(const TIM_TypeDef *TIMx)
973
{
974
  return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_URS));
975
}
976
 
977
/**
978
  * @brief  Set one pulse mode (one shot v.s. repetitive).
979
  * @rmtoll CR1          OPM           LL_TIM_SetOnePulseMode
980
  * @param  TIMx Timer instance
981
  * @param  OnePulseMode This parameter can be one of the following values:
982
  *         @arg @ref LL_TIM_ONEPULSEMODE_SINGLE
983
  *         @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE
984
  * @retval None
985
  */
986
__STATIC_INLINE void LL_TIM_SetOnePulseMode(TIM_TypeDef *TIMx, uint32_t OnePulseMode)
987
{
988
  MODIFY_REG(TIMx->CR1, TIM_CR1_OPM, OnePulseMode);
989
}
990
 
991
/**
992
  * @brief  Get actual one pulse mode.
993
  * @rmtoll CR1          OPM           LL_TIM_GetOnePulseMode
994
  * @param  TIMx Timer instance
995
  * @retval Returned value can be one of the following values:
996
  *         @arg @ref LL_TIM_ONEPULSEMODE_SINGLE
997
  *         @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE
998
  */
999
__STATIC_INLINE uint32_t LL_TIM_GetOnePulseMode(const TIM_TypeDef *TIMx)
1000
{
1001
  return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM));
1002
}
1003
 
1004
/**
1005
  * @brief  Set the timer counter counting mode.
1006
  * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to
1007
  *       check whether or not the counter mode selection feature is supported
1008
  *       by a timer instance.
1009
  * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse)
1010
  *       requires a timer reset to avoid unexpected direction
1011
  *       due to DIR bit readonly in center aligned mode.
1012
  * @rmtoll CR1          DIR           LL_TIM_SetCounterMode\n
1013
  *         CR1          CMS           LL_TIM_SetCounterMode
1014
  * @param  TIMx Timer instance
1015
  * @param  CounterMode This parameter can be one of the following values:
1016
  *         @arg @ref LL_TIM_COUNTERMODE_UP
1017
  *         @arg @ref LL_TIM_COUNTERMODE_DOWN
1018
  *         @arg @ref LL_TIM_COUNTERMODE_CENTER_UP
1019
  *         @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN
1020
  *         @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN
1021
  * @retval None
1022
  */
1023
__STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode)
1024
{
1025
  MODIFY_REG(TIMx->CR1, (TIM_CR1_DIR | TIM_CR1_CMS), CounterMode);
1026
}
1027
 
1028
/**
1029
  * @brief  Get actual counter mode.
1030
  * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to
1031
  *       check whether or not the counter mode selection feature is supported
1032
  *       by a timer instance.
1033
  * @rmtoll CR1          DIR           LL_TIM_GetCounterMode\n
1034
  *         CR1          CMS           LL_TIM_GetCounterMode
1035
  * @param  TIMx Timer instance
1036
  * @retval Returned value can be one of the following values:
1037
  *         @arg @ref LL_TIM_COUNTERMODE_UP
1038
  *         @arg @ref LL_TIM_COUNTERMODE_DOWN
1039
  *         @arg @ref LL_TIM_COUNTERMODE_CENTER_UP
1040
  *         @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN
1041
  *         @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN
1042
  */
1043
__STATIC_INLINE uint32_t LL_TIM_GetCounterMode(const TIM_TypeDef *TIMx)
1044
{
1045
  uint32_t counter_mode;
1046
 
1047
  counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CMS));
1048
 
1049
  if (counter_mode == 0U)
1050
  {
1051
    counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR));
1052
  }
1053
 
1054
  return counter_mode;
1055
}
1056
 
1057
/**
1058
  * @brief  Enable auto-reload (ARR) preload.
1059
  * @rmtoll CR1          ARPE          LL_TIM_EnableARRPreload
1060
  * @param  TIMx Timer instance
1061
  * @retval None
1062
  */
1063
__STATIC_INLINE void LL_TIM_EnableARRPreload(TIM_TypeDef *TIMx)
1064
{
1065
  SET_BIT(TIMx->CR1, TIM_CR1_ARPE);
1066
}
1067
 
1068
/**
1069
  * @brief  Disable auto-reload (ARR) preload.
1070
  * @rmtoll CR1          ARPE          LL_TIM_DisableARRPreload
1071
  * @param  TIMx Timer instance
1072
  * @retval None
1073
  */
1074
__STATIC_INLINE void LL_TIM_DisableARRPreload(TIM_TypeDef *TIMx)
1075
{
1076
  CLEAR_BIT(TIMx->CR1, TIM_CR1_ARPE);
1077
}
1078
 
1079
/**
1080
  * @brief  Indicates whether auto-reload (ARR) preload is enabled.
1081
  * @rmtoll CR1          ARPE          LL_TIM_IsEnabledARRPreload
1082
  * @param  TIMx Timer instance
1083
  * @retval State of bit (1 or 0).
1084
  */
1085
__STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(const TIM_TypeDef *TIMx)
1086
{
1087
  return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL);
1088
}
1089
 
1090
/**
1091
  * @brief  Set the division ratio between the timer clock  and the sampling clock used by the dead-time generators
1092
  *         (when supported) and the digital filters.
1093
  * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
1094
  *       whether or not the clock division feature is supported by the timer
1095
  *       instance.
1096
  * @rmtoll CR1          CKD           LL_TIM_SetClockDivision
1097
  * @param  TIMx Timer instance
1098
  * @param  ClockDivision This parameter can be one of the following values:
1099
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV1
1100
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV2
1101
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV4
1102
  * @retval None
1103
  */
1104
__STATIC_INLINE void LL_TIM_SetClockDivision(TIM_TypeDef *TIMx, uint32_t ClockDivision)
1105
{
1106
  MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision);
1107
}
1108
 
1109
/**
1110
  * @brief  Get the actual division ratio between the timer clock  and the sampling clock used by the dead-time
1111
  *         generators (when supported) and the digital filters.
1112
  * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
1113
  *       whether or not the clock division feature is supported by the timer
1114
  *       instance.
1115
  * @rmtoll CR1          CKD           LL_TIM_GetClockDivision
1116
  * @param  TIMx Timer instance
1117
  * @retval Returned value can be one of the following values:
1118
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV1
1119
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV2
1120
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV4
1121
  */
1122
__STATIC_INLINE uint32_t LL_TIM_GetClockDivision(const TIM_TypeDef *TIMx)
1123
{
1124
  return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CKD));
1125
}
1126
 
1127
/**
1128
  * @brief  Set the counter value.
1129
  * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1130
  *       whether or not a timer instance supports a 32 bits counter.
1131
  * @rmtoll CNT          CNT           LL_TIM_SetCounter
1132
  * @param  TIMx Timer instance
1133
  * @param  Counter Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF)
1134
  * @retval None
1135
  */
1136
__STATIC_INLINE void LL_TIM_SetCounter(TIM_TypeDef *TIMx, uint32_t Counter)
1137
{
1138
  WRITE_REG(TIMx->CNT, Counter);
1139
}
1140
 
1141
/**
1142
  * @brief  Get the counter value.
1143
  * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1144
  *       whether or not a timer instance supports a 32 bits counter.
1145
  * @rmtoll CNT          CNT           LL_TIM_GetCounter
1146
  * @param  TIMx Timer instance
1147
  * @retval Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF)
1148
  */
1149
__STATIC_INLINE uint32_t LL_TIM_GetCounter(const TIM_TypeDef *TIMx)
1150
{
1151
  return (uint32_t)(READ_REG(TIMx->CNT));
1152
}
1153
 
1154
/**
1155
  * @brief  Get the current direction of the counter
1156
  * @rmtoll CR1          DIR           LL_TIM_GetDirection
1157
  * @param  TIMx Timer instance
1158
  * @retval Returned value can be one of the following values:
1159
  *         @arg @ref LL_TIM_COUNTERDIRECTION_UP
1160
  *         @arg @ref LL_TIM_COUNTERDIRECTION_DOWN
1161
  */
1162
__STATIC_INLINE uint32_t LL_TIM_GetDirection(const TIM_TypeDef *TIMx)
1163
{
1164
  return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR));
1165
}
1166
 
1167
/**
1168
  * @brief  Set the prescaler value.
1169
  * @note The counter clock frequency CK_CNT is equal to fCK_PSC / (PSC[15:0] + 1).
1170
  * @note The prescaler can be changed on the fly as this control register is buffered. The new
1171
  *       prescaler ratio is taken into account at the next update event.
1172
  * @note Helper macro @ref __LL_TIM_CALC_PSC can be used to calculate the Prescaler parameter
1173
  * @rmtoll PSC          PSC           LL_TIM_SetPrescaler
1174
  * @param  TIMx Timer instance
1175
  * @param  Prescaler between Min_Data=0 and Max_Data=65535
1176
  * @retval None
1177
  */
1178
__STATIC_INLINE void LL_TIM_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Prescaler)
1179
{
1180
  WRITE_REG(TIMx->PSC, Prescaler);
1181
}
1182
 
1183
/**
1184
  * @brief  Get the prescaler value.
1185
  * @rmtoll PSC          PSC           LL_TIM_GetPrescaler
1186
  * @param  TIMx Timer instance
1187
  * @retval  Prescaler value between Min_Data=0 and Max_Data=65535
1188
  */
1189
__STATIC_INLINE uint32_t LL_TIM_GetPrescaler(const TIM_TypeDef *TIMx)
1190
{
1191
  return (uint32_t)(READ_REG(TIMx->PSC));
1192
}
1193
 
1194
/**
1195
  * @brief  Set the auto-reload value.
1196
  * @note The counter is blocked while the auto-reload value is null.
1197
  * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1198
  *       whether or not a timer instance supports a 32 bits counter.
1199
  * @note Helper macro @ref __LL_TIM_CALC_ARR can be used to calculate the AutoReload parameter
1200
  * @rmtoll ARR          ARR           LL_TIM_SetAutoReload
1201
  * @param  TIMx Timer instance
1202
  * @param  AutoReload between Min_Data=0 and Max_Data=65535
1203
  * @retval None
1204
  */
1205
__STATIC_INLINE void LL_TIM_SetAutoReload(TIM_TypeDef *TIMx, uint32_t AutoReload)
1206
{
1207
  WRITE_REG(TIMx->ARR, AutoReload);
1208
}
1209
 
1210
/**
1211
  * @brief  Get the auto-reload value.
1212
  * @rmtoll ARR          ARR           LL_TIM_GetAutoReload
1213
  * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1214
  *       whether or not a timer instance supports a 32 bits counter.
1215
  * @param  TIMx Timer instance
1216
  * @retval Auto-reload value
1217
  */
1218
__STATIC_INLINE uint32_t LL_TIM_GetAutoReload(const TIM_TypeDef *TIMx)
1219
{
1220
  return (uint32_t)(READ_REG(TIMx->ARR));
1221
}
1222
 
1223
/**
1224
  * @}
1225
  */
1226
 
1227
/** @defgroup TIM_LL_EF_Capture_Compare Capture Compare configuration
1228
  * @{
1229
  */
1230
/**
1231
  * @brief  Set the trigger of the capture/compare DMA request.
1232
  * @rmtoll CR2          CCDS          LL_TIM_CC_SetDMAReqTrigger
1233
  * @param  TIMx Timer instance
1234
  * @param  DMAReqTrigger This parameter can be one of the following values:
1235
  *         @arg @ref LL_TIM_CCDMAREQUEST_CC
1236
  *         @arg @ref LL_TIM_CCDMAREQUEST_UPDATE
1237
  * @retval None
1238
  */
1239
__STATIC_INLINE void LL_TIM_CC_SetDMAReqTrigger(TIM_TypeDef *TIMx, uint32_t DMAReqTrigger)
1240
{
1241
  MODIFY_REG(TIMx->CR2, TIM_CR2_CCDS, DMAReqTrigger);
1242
}
1243
 
1244
/**
1245
  * @brief  Get actual trigger of the capture/compare DMA request.
1246
  * @rmtoll CR2          CCDS          LL_TIM_CC_GetDMAReqTrigger
1247
  * @param  TIMx Timer instance
1248
  * @retval Returned value can be one of the following values:
1249
  *         @arg @ref LL_TIM_CCDMAREQUEST_CC
1250
  *         @arg @ref LL_TIM_CCDMAREQUEST_UPDATE
1251
  */
1252
__STATIC_INLINE uint32_t LL_TIM_CC_GetDMAReqTrigger(const TIM_TypeDef *TIMx)
1253
{
1254
  return (uint32_t)(READ_BIT(TIMx->CR2, TIM_CR2_CCDS));
1255
}
1256
 
1257
/**
1258
  * @brief  Enable capture/compare channels.
1259
  * @rmtoll CCER         CC1E          LL_TIM_CC_EnableChannel\n
1260
  *         CCER         CC2E          LL_TIM_CC_EnableChannel\n
1261
  *         CCER         CC3E          LL_TIM_CC_EnableChannel\n
1262
  *         CCER         CC4E          LL_TIM_CC_EnableChannel
1263
  * @param  TIMx Timer instance
1264
  * @param  Channels This parameter can be a combination of the following values:
1265
  *         @arg @ref LL_TIM_CHANNEL_CH1
1266
  *         @arg @ref LL_TIM_CHANNEL_CH2
1267
  *         @arg @ref LL_TIM_CHANNEL_CH3
1268
  *         @arg @ref LL_TIM_CHANNEL_CH4
1269
  * @retval None
1270
  */
1271
__STATIC_INLINE void LL_TIM_CC_EnableChannel(TIM_TypeDef *TIMx, uint32_t Channels)
1272
{
1273
  SET_BIT(TIMx->CCER, Channels);
1274
}
1275
 
1276
/**
1277
  * @brief  Disable capture/compare channels.
1278
  * @rmtoll CCER         CC1E          LL_TIM_CC_DisableChannel\n
1279
  *         CCER         CC2E          LL_TIM_CC_DisableChannel\n
1280
  *         CCER         CC3E          LL_TIM_CC_DisableChannel\n
1281
  *         CCER         CC4E          LL_TIM_CC_DisableChannel
1282
  * @param  TIMx Timer instance
1283
  * @param  Channels This parameter can be a combination of the following values:
1284
  *         @arg @ref LL_TIM_CHANNEL_CH1
1285
  *         @arg @ref LL_TIM_CHANNEL_CH2
1286
  *         @arg @ref LL_TIM_CHANNEL_CH3
1287
  *         @arg @ref LL_TIM_CHANNEL_CH4
1288
  * @retval None
1289
  */
1290
__STATIC_INLINE void LL_TIM_CC_DisableChannel(TIM_TypeDef *TIMx, uint32_t Channels)
1291
{
1292
  CLEAR_BIT(TIMx->CCER, Channels);
1293
}
1294
 
1295
/**
1296
  * @brief  Indicate whether channel(s) is(are) enabled.
1297
  * @rmtoll CCER         CC1E          LL_TIM_CC_IsEnabledChannel\n
1298
  *         CCER         CC2E          LL_TIM_CC_IsEnabledChannel\n
1299
  *         CCER         CC3E          LL_TIM_CC_IsEnabledChannel\n
1300
  *         CCER         CC4E          LL_TIM_CC_IsEnabledChannel
1301
  * @param  TIMx Timer instance
1302
  * @param  Channels This parameter can be a combination of the following values:
1303
  *         @arg @ref LL_TIM_CHANNEL_CH1
1304
  *         @arg @ref LL_TIM_CHANNEL_CH2
1305
  *         @arg @ref LL_TIM_CHANNEL_CH3
1306
  *         @arg @ref LL_TIM_CHANNEL_CH4
1307
  * @retval State of bit (1 or 0).
1308
  */
1309
__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(const TIM_TypeDef *TIMx, uint32_t Channels)
1310
{
1311
  return ((READ_BIT(TIMx->CCER, Channels) == (Channels)) ? 1UL : 0UL);
1312
}
1313
 
1314
/**
1315
  * @}
1316
  */
1317
 
1318
/** @defgroup TIM_LL_EF_Output_Channel Output channel configuration
1319
  * @{
1320
  */
1321
/**
1322
  * @brief  Configure an output channel.
1323
  * @rmtoll CCMR1        CC1S          LL_TIM_OC_ConfigOutput\n
1324
  *         CCMR1        CC2S          LL_TIM_OC_ConfigOutput\n
1325
  *         CCMR2        CC3S          LL_TIM_OC_ConfigOutput\n
1326
  *         CCMR2        CC4S          LL_TIM_OC_ConfigOutput\n
1327
  *         CCER         CC1P          LL_TIM_OC_ConfigOutput\n
1328
  *         CCER         CC2P          LL_TIM_OC_ConfigOutput\n
1329
  *         CCER         CC3P          LL_TIM_OC_ConfigOutput\n
1330
  *         CCER         CC4P          LL_TIM_OC_ConfigOutput\n
1331
  * @param  TIMx Timer instance
1332
  * @param  Channel This parameter can be one of the following values:
1333
  *         @arg @ref LL_TIM_CHANNEL_CH1
1334
  *         @arg @ref LL_TIM_CHANNEL_CH2
1335
  *         @arg @ref LL_TIM_CHANNEL_CH3
1336
  *         @arg @ref LL_TIM_CHANNEL_CH4
1337
  * @param  Configuration This parameter must be a combination of all the following values:
1338
  *         @arg @ref LL_TIM_OCPOLARITY_HIGH or @ref LL_TIM_OCPOLARITY_LOW
1339
  * @retval None
1340
  */
1341
__STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
1342
{
1343
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1344
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1345
  CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel]));
1346
  MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),
1347
             (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]);
1348
}
1349
 
1350
/**
1351
  * @brief  Define the behavior of the output reference signal OCxREF from which
1352
  *         OCx and OCxN (when relevant) are derived.
1353
  * @rmtoll CCMR1        OC1M          LL_TIM_OC_SetMode\n
1354
  *         CCMR1        OC2M          LL_TIM_OC_SetMode\n
1355
  *         CCMR2        OC3M          LL_TIM_OC_SetMode\n
1356
  *         CCMR2        OC4M          LL_TIM_OC_SetMode
1357
  * @param  TIMx Timer instance
1358
  * @param  Channel This parameter can be one of the following values:
1359
  *         @arg @ref LL_TIM_CHANNEL_CH1
1360
  *         @arg @ref LL_TIM_CHANNEL_CH2
1361
  *         @arg @ref LL_TIM_CHANNEL_CH3
1362
  *         @arg @ref LL_TIM_CHANNEL_CH4
1363
  * @param  Mode This parameter can be one of the following values:
1364
  *         @arg @ref LL_TIM_OCMODE_FROZEN
1365
  *         @arg @ref LL_TIM_OCMODE_ACTIVE
1366
  *         @arg @ref LL_TIM_OCMODE_INACTIVE
1367
  *         @arg @ref LL_TIM_OCMODE_TOGGLE
1368
  *         @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE
1369
  *         @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE
1370
  *         @arg @ref LL_TIM_OCMODE_PWM1
1371
  *         @arg @ref LL_TIM_OCMODE_PWM2
1372
  * @retval None
1373
  */
1374
__STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode)
1375
{
1376
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1377
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1378
  MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M  | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT_TAB_OCxx[iChannel]);
1379
}
1380
 
1381
/**
1382
  * @brief  Get the output compare mode of an output channel.
1383
  * @rmtoll CCMR1        OC1M          LL_TIM_OC_GetMode\n
1384
  *         CCMR1        OC2M          LL_TIM_OC_GetMode\n
1385
  *         CCMR2        OC3M          LL_TIM_OC_GetMode\n
1386
  *         CCMR2        OC4M          LL_TIM_OC_GetMode
1387
  * @param  TIMx Timer instance
1388
  * @param  Channel This parameter can be one of the following values:
1389
  *         @arg @ref LL_TIM_CHANNEL_CH1
1390
  *         @arg @ref LL_TIM_CHANNEL_CH2
1391
  *         @arg @ref LL_TIM_CHANNEL_CH3
1392
  *         @arg @ref LL_TIM_CHANNEL_CH4
1393
  * @retval Returned value can be one of the following values:
1394
  *         @arg @ref LL_TIM_OCMODE_FROZEN
1395
  *         @arg @ref LL_TIM_OCMODE_ACTIVE
1396
  *         @arg @ref LL_TIM_OCMODE_INACTIVE
1397
  *         @arg @ref LL_TIM_OCMODE_TOGGLE
1398
  *         @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE
1399
  *         @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE
1400
  *         @arg @ref LL_TIM_OCMODE_PWM1
1401
  *         @arg @ref LL_TIM_OCMODE_PWM2
1402
  */
1403
__STATIC_INLINE uint32_t LL_TIM_OC_GetMode(const TIM_TypeDef *TIMx, uint32_t Channel)
1404
{
1405
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1406
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1407
  return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]);
1408
}
1409
 
1410
/**
1411
  * @brief  Set the polarity of an output channel.
1412
  * @rmtoll CCER         CC1P          LL_TIM_OC_SetPolarity\n
1413
  *         CCER         CC2P          LL_TIM_OC_SetPolarity\n
1414
  *         CCER         CC3P          LL_TIM_OC_SetPolarity\n
1415
  *         CCER         CC4P          LL_TIM_OC_SetPolarity
1416
  * @param  TIMx Timer instance
1417
  * @param  Channel This parameter can be one of the following values:
1418
  *         @arg @ref LL_TIM_CHANNEL_CH1
1419
  *         @arg @ref LL_TIM_CHANNEL_CH2
1420
  *         @arg @ref LL_TIM_CHANNEL_CH3
1421
  *         @arg @ref LL_TIM_CHANNEL_CH4
1422
  * @param  Polarity This parameter can be one of the following values:
1423
  *         @arg @ref LL_TIM_OCPOLARITY_HIGH
1424
  *         @arg @ref LL_TIM_OCPOLARITY_LOW
1425
  * @retval None
1426
  */
1427
__STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity)
1428
{
1429
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1430
  MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),  Polarity << SHIFT_TAB_CCxP[iChannel]);
1431
}
1432
 
1433
/**
1434
  * @brief  Get the polarity of an output channel.
1435
  * @rmtoll CCER         CC1P          LL_TIM_OC_GetPolarity\n
1436
  *         CCER         CC2P          LL_TIM_OC_GetPolarity\n
1437
  *         CCER         CC3P          LL_TIM_OC_GetPolarity\n
1438
  *         CCER         CC4P          LL_TIM_OC_GetPolarity
1439
  * @param  TIMx Timer instance
1440
  * @param  Channel This parameter can be one of the following values:
1441
  *         @arg @ref LL_TIM_CHANNEL_CH1
1442
  *         @arg @ref LL_TIM_CHANNEL_CH2
1443
  *         @arg @ref LL_TIM_CHANNEL_CH3
1444
  *         @arg @ref LL_TIM_CHANNEL_CH4
1445
  * @retval Returned value can be one of the following values:
1446
  *         @arg @ref LL_TIM_OCPOLARITY_HIGH
1447
  *         @arg @ref LL_TIM_OCPOLARITY_LOW
1448
  */
1449
__STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel)
1450
{
1451
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1452
  return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChannel]);
1453
}
1454
 
1455
/**
1456
  * @brief  Enable fast mode for the output channel.
1457
  * @note Acts only if the channel is configured in PWM1 or PWM2 mode.
1458
  * @rmtoll CCMR1        OC1FE          LL_TIM_OC_EnableFast\n
1459
  *         CCMR1        OC2FE          LL_TIM_OC_EnableFast\n
1460
  *         CCMR2        OC3FE          LL_TIM_OC_EnableFast\n
1461
  *         CCMR2        OC4FE          LL_TIM_OC_EnableFast
1462
  * @param  TIMx Timer instance
1463
  * @param  Channel This parameter can be one of the following values:
1464
  *         @arg @ref LL_TIM_CHANNEL_CH1
1465
  *         @arg @ref LL_TIM_CHANNEL_CH2
1466
  *         @arg @ref LL_TIM_CHANNEL_CH3
1467
  *         @arg @ref LL_TIM_CHANNEL_CH4
1468
  * @retval None
1469
  */
1470
__STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1471
{
1472
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1473
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1474
  SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1475
 
1476
}
1477
 
1478
/**
1479
  * @brief  Disable fast mode for the output channel.
1480
  * @rmtoll CCMR1        OC1FE          LL_TIM_OC_DisableFast\n
1481
  *         CCMR1        OC2FE          LL_TIM_OC_DisableFast\n
1482
  *         CCMR2        OC3FE          LL_TIM_OC_DisableFast\n
1483
  *         CCMR2        OC4FE          LL_TIM_OC_DisableFast
1484
  * @param  TIMx Timer instance
1485
  * @param  Channel This parameter can be one of the following values:
1486
  *         @arg @ref LL_TIM_CHANNEL_CH1
1487
  *         @arg @ref LL_TIM_CHANNEL_CH2
1488
  *         @arg @ref LL_TIM_CHANNEL_CH3
1489
  *         @arg @ref LL_TIM_CHANNEL_CH4
1490
  * @retval None
1491
  */
1492
__STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1493
{
1494
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1495
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1496
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1497
 
1498
}
1499
 
1500
/**
1501
  * @brief  Indicates whether fast mode is enabled for the output channel.
1502
  * @rmtoll CCMR1        OC1FE          LL_TIM_OC_IsEnabledFast\n
1503
  *         CCMR1        OC2FE          LL_TIM_OC_IsEnabledFast\n
1504
  *         CCMR2        OC3FE          LL_TIM_OC_IsEnabledFast\n
1505
  *         CCMR2        OC4FE          LL_TIM_OC_IsEnabledFast\n
1506
  * @param  TIMx Timer instance
1507
  * @param  Channel This parameter can be one of the following values:
1508
  *         @arg @ref LL_TIM_CHANNEL_CH1
1509
  *         @arg @ref LL_TIM_CHANNEL_CH2
1510
  *         @arg @ref LL_TIM_CHANNEL_CH3
1511
  *         @arg @ref LL_TIM_CHANNEL_CH4
1512
  * @retval State of bit (1 or 0).
1513
  */
1514
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(const TIM_TypeDef *TIMx, uint32_t Channel)
1515
{
1516
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1517
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1518
  uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel];
1519
  return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
1520
}
1521
 
1522
/**
1523
  * @brief  Enable compare register (TIMx_CCRx) preload for the output channel.
1524
  * @rmtoll CCMR1        OC1PE          LL_TIM_OC_EnablePreload\n
1525
  *         CCMR1        OC2PE          LL_TIM_OC_EnablePreload\n
1526
  *         CCMR2        OC3PE          LL_TIM_OC_EnablePreload\n
1527
  *         CCMR2        OC4PE          LL_TIM_OC_EnablePreload
1528
  * @param  TIMx Timer instance
1529
  * @param  Channel This parameter can be one of the following values:
1530
  *         @arg @ref LL_TIM_CHANNEL_CH1
1531
  *         @arg @ref LL_TIM_CHANNEL_CH2
1532
  *         @arg @ref LL_TIM_CHANNEL_CH3
1533
  *         @arg @ref LL_TIM_CHANNEL_CH4
1534
  * @retval None
1535
  */
1536
__STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1537
{
1538
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1539
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1540
  SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1541
}
1542
 
1543
/**
1544
  * @brief  Disable compare register (TIMx_CCRx) preload for the output channel.
1545
  * @rmtoll CCMR1        OC1PE          LL_TIM_OC_DisablePreload\n
1546
  *         CCMR1        OC2PE          LL_TIM_OC_DisablePreload\n
1547
  *         CCMR2        OC3PE          LL_TIM_OC_DisablePreload\n
1548
  *         CCMR2        OC4PE          LL_TIM_OC_DisablePreload
1549
  * @param  TIMx Timer instance
1550
  * @param  Channel This parameter can be one of the following values:
1551
  *         @arg @ref LL_TIM_CHANNEL_CH1
1552
  *         @arg @ref LL_TIM_CHANNEL_CH2
1553
  *         @arg @ref LL_TIM_CHANNEL_CH3
1554
  *         @arg @ref LL_TIM_CHANNEL_CH4
1555
  * @retval None
1556
  */
1557
__STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1558
{
1559
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1560
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1561
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1562
}
1563
 
1564
/**
1565
  * @brief  Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channel.
1566
  * @rmtoll CCMR1        OC1PE          LL_TIM_OC_IsEnabledPreload\n
1567
  *         CCMR1        OC2PE          LL_TIM_OC_IsEnabledPreload\n
1568
  *         CCMR2        OC3PE          LL_TIM_OC_IsEnabledPreload\n
1569
  *         CCMR2        OC4PE          LL_TIM_OC_IsEnabledPreload\n
1570
  * @param  TIMx Timer instance
1571
  * @param  Channel This parameter can be one of the following values:
1572
  *         @arg @ref LL_TIM_CHANNEL_CH1
1573
  *         @arg @ref LL_TIM_CHANNEL_CH2
1574
  *         @arg @ref LL_TIM_CHANNEL_CH3
1575
  *         @arg @ref LL_TIM_CHANNEL_CH4
1576
  * @retval State of bit (1 or 0).
1577
  */
1578
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(const TIM_TypeDef *TIMx, uint32_t Channel)
1579
{
1580
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1581
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1582
  uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel];
1583
  return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
1584
}
1585
 
1586
/**
1587
  * @brief  Enable clearing the output channel on an external event.
1588
  * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode.
1589
  * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
1590
  *       or not a timer instance can clear the OCxREF signal on an external event.
1591
  * @rmtoll CCMR1        OC1CE          LL_TIM_OC_EnableClear\n
1592
  *         CCMR1        OC2CE          LL_TIM_OC_EnableClear\n
1593
  *         CCMR2        OC3CE          LL_TIM_OC_EnableClear\n
1594
  *         CCMR2        OC4CE          LL_TIM_OC_EnableClear
1595
  * @param  TIMx Timer instance
1596
  * @param  Channel This parameter can be one of the following values:
1597
  *         @arg @ref LL_TIM_CHANNEL_CH1
1598
  *         @arg @ref LL_TIM_CHANNEL_CH2
1599
  *         @arg @ref LL_TIM_CHANNEL_CH3
1600
  *         @arg @ref LL_TIM_CHANNEL_CH4
1601
  * @retval None
1602
  */
1603
__STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel)
1604
{
1605
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1606
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1607
  SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
1608
}
1609
 
1610
/**
1611
  * @brief  Disable clearing the output channel on an external event.
1612
  * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
1613
  *       or not a timer instance can clear the OCxREF signal on an external event.
1614
  * @rmtoll CCMR1        OC1CE          LL_TIM_OC_DisableClear\n
1615
  *         CCMR1        OC2CE          LL_TIM_OC_DisableClear\n
1616
  *         CCMR2        OC3CE          LL_TIM_OC_DisableClear\n
1617
  *         CCMR2        OC4CE          LL_TIM_OC_DisableClear
1618
  * @param  TIMx Timer instance
1619
  * @param  Channel This parameter can be one of the following values:
1620
  *         @arg @ref LL_TIM_CHANNEL_CH1
1621
  *         @arg @ref LL_TIM_CHANNEL_CH2
1622
  *         @arg @ref LL_TIM_CHANNEL_CH3
1623
  *         @arg @ref LL_TIM_CHANNEL_CH4
1624
  * @retval None
1625
  */
1626
__STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel)
1627
{
1628
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1629
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1630
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
1631
}
1632
 
1633
/**
1634
  * @brief  Indicates clearing the output channel on an external event is enabled for the output channel.
1635
  * @note This function enables clearing the output channel on an external event.
1636
  * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode.
1637
  * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
1638
  *       or not a timer instance can clear the OCxREF signal on an external event.
1639
  * @rmtoll CCMR1        OC1CE          LL_TIM_OC_IsEnabledClear\n
1640
  *         CCMR1        OC2CE          LL_TIM_OC_IsEnabledClear\n
1641
  *         CCMR2        OC3CE          LL_TIM_OC_IsEnabledClear\n
1642
  *         CCMR2        OC4CE          LL_TIM_OC_IsEnabledClear\n
1643
  * @param  TIMx Timer instance
1644
  * @param  Channel This parameter can be one of the following values:
1645
  *         @arg @ref LL_TIM_CHANNEL_CH1
1646
  *         @arg @ref LL_TIM_CHANNEL_CH2
1647
  *         @arg @ref LL_TIM_CHANNEL_CH3
1648
  *         @arg @ref LL_TIM_CHANNEL_CH4
1649
  * @retval State of bit (1 or 0).
1650
  */
1651
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(const TIM_TypeDef *TIMx, uint32_t Channel)
1652
{
1653
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1654
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1655
  uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel];
1656
  return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
1657
}
1658
 
1659
/**
1660
  * @brief  Set compare value for output channel 1 (TIMx_CCR1).
1661
  * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF.
1662
  * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1663
  *       whether or not a timer instance supports a 32 bits counter.
1664
  * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
1665
  *       output channel 1 is supported by a timer instance.
1666
  * @rmtoll CCR1         CCR1          LL_TIM_OC_SetCompareCH1
1667
  * @param  TIMx Timer instance
1668
  * @param  CompareValue between Min_Data=0 and Max_Data=65535
1669
  * @retval None
1670
  */
1671
__STATIC_INLINE void LL_TIM_OC_SetCompareCH1(TIM_TypeDef *TIMx, uint32_t CompareValue)
1672
{
1673
  WRITE_REG(TIMx->CCR1, CompareValue);
1674
}
1675
 
1676
/**
1677
  * @brief  Set compare value for output channel 2 (TIMx_CCR2).
1678
  * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF.
1679
  * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1680
  *       whether or not a timer instance supports a 32 bits counter.
1681
  * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
1682
  *       output channel 2 is supported by a timer instance.
1683
  * @rmtoll CCR2         CCR2          LL_TIM_OC_SetCompareCH2
1684
  * @param  TIMx Timer instance
1685
  * @param  CompareValue between Min_Data=0 and Max_Data=65535
1686
  * @retval None
1687
  */
1688
__STATIC_INLINE void LL_TIM_OC_SetCompareCH2(TIM_TypeDef *TIMx, uint32_t CompareValue)
1689
{
1690
  WRITE_REG(TIMx->CCR2, CompareValue);
1691
}
1692
 
1693
/**
1694
  * @brief  Set compare value for output channel 3 (TIMx_CCR3).
1695
  * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF.
1696
  * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1697
  *       whether or not a timer instance supports a 32 bits counter.
1698
  * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
1699
  *       output channel is supported by a timer instance.
1700
  * @rmtoll CCR3         CCR3          LL_TIM_OC_SetCompareCH3
1701
  * @param  TIMx Timer instance
1702
  * @param  CompareValue between Min_Data=0 and Max_Data=65535
1703
  * @retval None
1704
  */
1705
__STATIC_INLINE void LL_TIM_OC_SetCompareCH3(TIM_TypeDef *TIMx, uint32_t CompareValue)
1706
{
1707
  WRITE_REG(TIMx->CCR3, CompareValue);
1708
}
1709
 
1710
/**
1711
  * @brief  Set compare value for output channel 4 (TIMx_CCR4).
1712
  * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF.
1713
  * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1714
  *       whether or not a timer instance supports a 32 bits counter.
1715
  * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
1716
  *       output channel 4 is supported by a timer instance.
1717
  * @rmtoll CCR4         CCR4          LL_TIM_OC_SetCompareCH4
1718
  * @param  TIMx Timer instance
1719
  * @param  CompareValue between Min_Data=0 and Max_Data=65535
1720
  * @retval None
1721
  */
1722
__STATIC_INLINE void LL_TIM_OC_SetCompareCH4(TIM_TypeDef *TIMx, uint32_t CompareValue)
1723
{
1724
  WRITE_REG(TIMx->CCR4, CompareValue);
1725
}
1726
 
1727
/**
1728
  * @brief  Get compare value (TIMx_CCR1) set for  output channel 1.
1729
  * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF.
1730
  * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1731
  *       whether or not a timer instance supports a 32 bits counter.
1732
  * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
1733
  *       output channel 1 is supported by a timer instance.
1734
  * @rmtoll CCR1         CCR1          LL_TIM_OC_GetCompareCH1
1735
  * @param  TIMx Timer instance
1736
  * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
1737
  */
1738
__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH1(const TIM_TypeDef *TIMx)
1739
{
1740
  return (uint32_t)(READ_REG(TIMx->CCR1));
1741
}
1742
 
1743
/**
1744
  * @brief  Get compare value (TIMx_CCR2) set for  output channel 2.
1745
  * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF.
1746
  * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1747
  *       whether or not a timer instance supports a 32 bits counter.
1748
  * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
1749
  *       output channel 2 is supported by a timer instance.
1750
  * @rmtoll CCR2         CCR2          LL_TIM_OC_GetCompareCH2
1751
  * @param  TIMx Timer instance
1752
  * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
1753
  */
1754
__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH2(const TIM_TypeDef *TIMx)
1755
{
1756
  return (uint32_t)(READ_REG(TIMx->CCR2));
1757
}
1758
 
1759
/**
1760
  * @brief  Get compare value (TIMx_CCR3) set for  output channel 3.
1761
  * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF.
1762
  * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1763
  *       whether or not a timer instance supports a 32 bits counter.
1764
  * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
1765
  *       output channel 3 is supported by a timer instance.
1766
  * @rmtoll CCR3         CCR3          LL_TIM_OC_GetCompareCH3
1767
  * @param  TIMx Timer instance
1768
  * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
1769
  */
1770
__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH3(const TIM_TypeDef *TIMx)
1771
{
1772
  return (uint32_t)(READ_REG(TIMx->CCR3));
1773
}
1774
 
1775
/**
1776
  * @brief  Get compare value (TIMx_CCR4) set for  output channel 4.
1777
  * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF.
1778
  * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
1779
  *       whether or not a timer instance supports a 32 bits counter.
1780
  * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
1781
  *       output channel 4 is supported by a timer instance.
1782
  * @rmtoll CCR4         CCR4          LL_TIM_OC_GetCompareCH4
1783
  * @param  TIMx Timer instance
1784
  * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
1785
  */
1786
__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH4(const TIM_TypeDef *TIMx)
1787
{
1788
  return (uint32_t)(READ_REG(TIMx->CCR4));
1789
}
1790
 
1791
/**
1792
  * @}
1793
  */
1794
 
1795
/** @defgroup TIM_LL_EF_Input_Channel Input channel configuration
1796
  * @{
1797
  */
1798
/**
1799
  * @brief  Configure input channel.
1800
  * @rmtoll CCMR1        CC1S          LL_TIM_IC_Config\n
1801
  *         CCMR1        IC1PSC        LL_TIM_IC_Config\n
1802
  *         CCMR1        IC1F          LL_TIM_IC_Config\n
1803
  *         CCMR1        CC2S          LL_TIM_IC_Config\n
1804
  *         CCMR1        IC2PSC        LL_TIM_IC_Config\n
1805
  *         CCMR1        IC2F          LL_TIM_IC_Config\n
1806
  *         CCMR2        CC3S          LL_TIM_IC_Config\n
1807
  *         CCMR2        IC3PSC        LL_TIM_IC_Config\n
1808
  *         CCMR2        IC3F          LL_TIM_IC_Config\n
1809
  *         CCMR2        CC4S          LL_TIM_IC_Config\n
1810
  *         CCMR2        IC4PSC        LL_TIM_IC_Config\n
1811
  *         CCMR2        IC4F          LL_TIM_IC_Config\n
1812
  *         CCER         CC1P          LL_TIM_IC_Config\n
1813
  *         CCER         CC1NP         LL_TIM_IC_Config\n
1814
  *         CCER         CC2P          LL_TIM_IC_Config\n
1815
  *         CCER         CC2NP         LL_TIM_IC_Config\n
1816
  *         CCER         CC3P          LL_TIM_IC_Config\n
1817
  *         CCER         CC3NP         LL_TIM_IC_Config\n
1818
  *         CCER         CC4P          LL_TIM_IC_Config\n
1819
  *         CCER         CC4NP         LL_TIM_IC_Config
1820
  * @param  TIMx Timer instance
1821
  * @param  Channel This parameter can be one of the following values:
1822
  *         @arg @ref LL_TIM_CHANNEL_CH1
1823
  *         @arg @ref LL_TIM_CHANNEL_CH2
1824
  *         @arg @ref LL_TIM_CHANNEL_CH3
1825
  *         @arg @ref LL_TIM_CHANNEL_CH4
1826
  * @param  Configuration This parameter must be a combination of all the following values:
1827
  *         @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI or @ref LL_TIM_ACTIVEINPUT_INDIRECTTI or @ref LL_TIM_ACTIVEINPUT_TRC
1828
  *         @arg @ref LL_TIM_ICPSC_DIV1 or ... or @ref LL_TIM_ICPSC_DIV8
1829
  *         @arg @ref LL_TIM_IC_FILTER_FDIV1 or ... or @ref LL_TIM_IC_FILTER_FDIV32_N8
1830
  *         @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING or @ref LL_TIM_IC_POLARITY_BOTHEDGE
1831
  * @retval None
1832
  */
1833
__STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
1834
{
1835
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1836
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1837
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]),
1838
             ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S))                \
1839
             << SHIFT_TAB_ICxx[iChannel]);
1840
  MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
1841
             (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]);
1842
}
1843
 
1844
/**
1845
  * @brief  Set the active input.
1846
  * @rmtoll CCMR1        CC1S          LL_TIM_IC_SetActiveInput\n
1847
  *         CCMR1        CC2S          LL_TIM_IC_SetActiveInput\n
1848
  *         CCMR2        CC3S          LL_TIM_IC_SetActiveInput\n
1849
  *         CCMR2        CC4S          LL_TIM_IC_SetActiveInput
1850
  * @param  TIMx Timer instance
1851
  * @param  Channel This parameter can be one of the following values:
1852
  *         @arg @ref LL_TIM_CHANNEL_CH1
1853
  *         @arg @ref LL_TIM_CHANNEL_CH2
1854
  *         @arg @ref LL_TIM_CHANNEL_CH3
1855
  *         @arg @ref LL_TIM_CHANNEL_CH4
1856
  * @param  ICActiveInput This parameter can be one of the following values:
1857
  *         @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI
1858
  *         @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI
1859
  *         @arg @ref LL_TIM_ACTIVEINPUT_TRC
1860
  * @retval None
1861
  */
1862
__STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiveInput)
1863
{
1864
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1865
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1866
  MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT_TAB_ICxx[iChannel]);
1867
}
1868
 
1869
/**
1870
  * @brief  Get the current active input.
1871
  * @rmtoll CCMR1        CC1S          LL_TIM_IC_GetActiveInput\n
1872
  *         CCMR1        CC2S          LL_TIM_IC_GetActiveInput\n
1873
  *         CCMR2        CC3S          LL_TIM_IC_GetActiveInput\n
1874
  *         CCMR2        CC4S          LL_TIM_IC_GetActiveInput
1875
  * @param  TIMx Timer instance
1876
  * @param  Channel This parameter can be one of the following values:
1877
  *         @arg @ref LL_TIM_CHANNEL_CH1
1878
  *         @arg @ref LL_TIM_CHANNEL_CH2
1879
  *         @arg @ref LL_TIM_CHANNEL_CH3
1880
  *         @arg @ref LL_TIM_CHANNEL_CH4
1881
  * @retval Returned value can be one of the following values:
1882
  *         @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI
1883
  *         @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI
1884
  *         @arg @ref LL_TIM_ACTIVEINPUT_TRC
1885
  */
1886
__STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(const TIM_TypeDef *TIMx, uint32_t Channel)
1887
{
1888
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1889
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1890
  return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
1891
}
1892
 
1893
/**
1894
  * @brief  Set the prescaler of input channel.
1895
  * @rmtoll CCMR1        IC1PSC        LL_TIM_IC_SetPrescaler\n
1896
  *         CCMR1        IC2PSC        LL_TIM_IC_SetPrescaler\n
1897
  *         CCMR2        IC3PSC        LL_TIM_IC_SetPrescaler\n
1898
  *         CCMR2        IC4PSC        LL_TIM_IC_SetPrescaler
1899
  * @param  TIMx Timer instance
1900
  * @param  Channel This parameter can be one of the following values:
1901
  *         @arg @ref LL_TIM_CHANNEL_CH1
1902
  *         @arg @ref LL_TIM_CHANNEL_CH2
1903
  *         @arg @ref LL_TIM_CHANNEL_CH3
1904
  *         @arg @ref LL_TIM_CHANNEL_CH4
1905
  * @param  ICPrescaler This parameter can be one of the following values:
1906
  *         @arg @ref LL_TIM_ICPSC_DIV1
1907
  *         @arg @ref LL_TIM_ICPSC_DIV2
1908
  *         @arg @ref LL_TIM_ICPSC_DIV4
1909
  *         @arg @ref LL_TIM_ICPSC_DIV8
1910
  * @retval None
1911
  */
1912
__STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescaler)
1913
{
1914
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1915
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1916
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT_TAB_ICxx[iChannel]);
1917
}
1918
 
1919
/**
1920
  * @brief  Get the current prescaler value acting on an  input channel.
1921
  * @rmtoll CCMR1        IC1PSC        LL_TIM_IC_GetPrescaler\n
1922
  *         CCMR1        IC2PSC        LL_TIM_IC_GetPrescaler\n
1923
  *         CCMR2        IC3PSC        LL_TIM_IC_GetPrescaler\n
1924
  *         CCMR2        IC4PSC        LL_TIM_IC_GetPrescaler
1925
  * @param  TIMx Timer instance
1926
  * @param  Channel This parameter can be one of the following values:
1927
  *         @arg @ref LL_TIM_CHANNEL_CH1
1928
  *         @arg @ref LL_TIM_CHANNEL_CH2
1929
  *         @arg @ref LL_TIM_CHANNEL_CH3
1930
  *         @arg @ref LL_TIM_CHANNEL_CH4
1931
  * @retval Returned value can be one of the following values:
1932
  *         @arg @ref LL_TIM_ICPSC_DIV1
1933
  *         @arg @ref LL_TIM_ICPSC_DIV2
1934
  *         @arg @ref LL_TIM_ICPSC_DIV4
1935
  *         @arg @ref LL_TIM_ICPSC_DIV8
1936
  */
1937
__STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(const TIM_TypeDef *TIMx, uint32_t Channel)
1938
{
1939
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1940
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1941
  return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
1942
}
1943
 
1944
/**
1945
  * @brief  Set the input filter duration.
1946
  * @rmtoll CCMR1        IC1F          LL_TIM_IC_SetFilter\n
1947
  *         CCMR1        IC2F          LL_TIM_IC_SetFilter\n
1948
  *         CCMR2        IC3F          LL_TIM_IC_SetFilter\n
1949
  *         CCMR2        IC4F          LL_TIM_IC_SetFilter
1950
  * @param  TIMx Timer instance
1951
  * @param  Channel This parameter can be one of the following values:
1952
  *         @arg @ref LL_TIM_CHANNEL_CH1
1953
  *         @arg @ref LL_TIM_CHANNEL_CH2
1954
  *         @arg @ref LL_TIM_CHANNEL_CH3
1955
  *         @arg @ref LL_TIM_CHANNEL_CH4
1956
  * @param  ICFilter This parameter can be one of the following values:
1957
  *         @arg @ref LL_TIM_IC_FILTER_FDIV1
1958
  *         @arg @ref LL_TIM_IC_FILTER_FDIV1_N2
1959
  *         @arg @ref LL_TIM_IC_FILTER_FDIV1_N4
1960
  *         @arg @ref LL_TIM_IC_FILTER_FDIV1_N8
1961
  *         @arg @ref LL_TIM_IC_FILTER_FDIV2_N6
1962
  *         @arg @ref LL_TIM_IC_FILTER_FDIV2_N8
1963
  *         @arg @ref LL_TIM_IC_FILTER_FDIV4_N6
1964
  *         @arg @ref LL_TIM_IC_FILTER_FDIV4_N8
1965
  *         @arg @ref LL_TIM_IC_FILTER_FDIV8_N6
1966
  *         @arg @ref LL_TIM_IC_FILTER_FDIV8_N8
1967
  *         @arg @ref LL_TIM_IC_FILTER_FDIV16_N5
1968
  *         @arg @ref LL_TIM_IC_FILTER_FDIV16_N6
1969
  *         @arg @ref LL_TIM_IC_FILTER_FDIV16_N8
1970
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N5
1971
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N6
1972
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
1973
  * @retval None
1974
  */
1975
__STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter)
1976
{
1977
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1978
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1979
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ICxx[iChannel]);
1980
}
1981
 
1982
/**
1983
  * @brief  Get the input filter duration.
1984
  * @rmtoll CCMR1        IC1F          LL_TIM_IC_GetFilter\n
1985
  *         CCMR1        IC2F          LL_TIM_IC_GetFilter\n
1986
  *         CCMR2        IC3F          LL_TIM_IC_GetFilter\n
1987
  *         CCMR2        IC4F          LL_TIM_IC_GetFilter
1988
  * @param  TIMx Timer instance
1989
  * @param  Channel This parameter can be one of the following values:
1990
  *         @arg @ref LL_TIM_CHANNEL_CH1
1991
  *         @arg @ref LL_TIM_CHANNEL_CH2
1992
  *         @arg @ref LL_TIM_CHANNEL_CH3
1993
  *         @arg @ref LL_TIM_CHANNEL_CH4
1994
  * @retval Returned value can be one of the following values:
1995
  *         @arg @ref LL_TIM_IC_FILTER_FDIV1
1996
  *         @arg @ref LL_TIM_IC_FILTER_FDIV1_N2
1997
  *         @arg @ref LL_TIM_IC_FILTER_FDIV1_N4
1998
  *         @arg @ref LL_TIM_IC_FILTER_FDIV1_N8
1999
  *         @arg @ref LL_TIM_IC_FILTER_FDIV2_N6
2000
  *         @arg @ref LL_TIM_IC_FILTER_FDIV2_N8
2001
  *         @arg @ref LL_TIM_IC_FILTER_FDIV4_N6
2002
  *         @arg @ref LL_TIM_IC_FILTER_FDIV4_N8
2003
  *         @arg @ref LL_TIM_IC_FILTER_FDIV8_N6
2004
  *         @arg @ref LL_TIM_IC_FILTER_FDIV8_N8
2005
  *         @arg @ref LL_TIM_IC_FILTER_FDIV16_N5
2006
  *         @arg @ref LL_TIM_IC_FILTER_FDIV16_N6
2007
  *         @arg @ref LL_TIM_IC_FILTER_FDIV16_N8
2008
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N5
2009
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N6
2010
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
2011
  */
2012
__STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(const TIM_TypeDef *TIMx, uint32_t Channel)
2013
{
2014
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2015
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2016
  return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2017
}
2018
 
2019
/**
2020
  * @brief  Set the input channel polarity.
2021
  * @rmtoll CCER         CC1P          LL_TIM_IC_SetPolarity\n
2022
  *         CCER         CC1NP         LL_TIM_IC_SetPolarity\n
2023
  *         CCER         CC2P          LL_TIM_IC_SetPolarity\n
2024
  *         CCER         CC2NP         LL_TIM_IC_SetPolarity\n
2025
  *         CCER         CC3P          LL_TIM_IC_SetPolarity\n
2026
  *         CCER         CC3NP         LL_TIM_IC_SetPolarity\n
2027
  *         CCER         CC4P          LL_TIM_IC_SetPolarity\n
2028
  *         CCER         CC4NP         LL_TIM_IC_SetPolarity
2029
  * @param  TIMx Timer instance
2030
  * @param  Channel This parameter can be one of the following values:
2031
  *         @arg @ref LL_TIM_CHANNEL_CH1
2032
  *         @arg @ref LL_TIM_CHANNEL_CH2
2033
  *         @arg @ref LL_TIM_CHANNEL_CH3
2034
  *         @arg @ref LL_TIM_CHANNEL_CH4
2035
  * @param  ICPolarity This parameter can be one of the following values:
2036
  *         @arg @ref LL_TIM_IC_POLARITY_RISING
2037
  *         @arg @ref LL_TIM_IC_POLARITY_FALLING
2038
  *         @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE
2039
  * @retval None
2040
  */
2041
__STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity)
2042
{
2043
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2044
  MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
2045
             ICPolarity << SHIFT_TAB_CCxP[iChannel]);
2046
}
2047
 
2048
/**
2049
  * @brief  Get the current input channel polarity.
2050
  * @rmtoll CCER         CC1P          LL_TIM_IC_GetPolarity\n
2051
  *         CCER         CC1NP         LL_TIM_IC_GetPolarity\n
2052
  *         CCER         CC2P          LL_TIM_IC_GetPolarity\n
2053
  *         CCER         CC2NP         LL_TIM_IC_GetPolarity\n
2054
  *         CCER         CC3P          LL_TIM_IC_GetPolarity\n
2055
  *         CCER         CC3NP         LL_TIM_IC_GetPolarity\n
2056
  *         CCER         CC4P          LL_TIM_IC_GetPolarity\n
2057
  *         CCER         CC4NP         LL_TIM_IC_GetPolarity
2058
  * @param  TIMx Timer instance
2059
  * @param  Channel This parameter can be one of the following values:
2060
  *         @arg @ref LL_TIM_CHANNEL_CH1
2061
  *         @arg @ref LL_TIM_CHANNEL_CH2
2062
  *         @arg @ref LL_TIM_CHANNEL_CH3
2063
  *         @arg @ref LL_TIM_CHANNEL_CH4
2064
  * @retval Returned value can be one of the following values:
2065
  *         @arg @ref LL_TIM_IC_POLARITY_RISING
2066
  *         @arg @ref LL_TIM_IC_POLARITY_FALLING
2067
  *         @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE
2068
  */
2069
__STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel)
2070
{
2071
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2072
  return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >>
2073
          SHIFT_TAB_CCxP[iChannel]);
2074
}
2075
 
2076
/**
2077
  * @brief  Connect the TIMx_CH1, CH2 and CH3 pins  to the TI1 input (XOR combination).
2078
  * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
2079
  *       a timer instance provides an XOR input.
2080
  * @rmtoll CR2          TI1S          LL_TIM_IC_EnableXORCombination
2081
  * @param  TIMx Timer instance
2082
  * @retval None
2083
  */
2084
__STATIC_INLINE void LL_TIM_IC_EnableXORCombination(TIM_TypeDef *TIMx)
2085
{
2086
  SET_BIT(TIMx->CR2, TIM_CR2_TI1S);
2087
}
2088
 
2089
/**
2090
  * @brief  Disconnect the TIMx_CH1, CH2 and CH3 pins  from the TI1 input.
2091
  * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
2092
  *       a timer instance provides an XOR input.
2093
  * @rmtoll CR2          TI1S          LL_TIM_IC_DisableXORCombination
2094
  * @param  TIMx Timer instance
2095
  * @retval None
2096
  */
2097
__STATIC_INLINE void LL_TIM_IC_DisableXORCombination(TIM_TypeDef *TIMx)
2098
{
2099
  CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S);
2100
}
2101
 
2102
/**
2103
  * @brief  Indicates whether the TIMx_CH1, CH2 and CH3 pins are connectected to the TI1 input.
2104
  * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
2105
  * a timer instance provides an XOR input.
2106
  * @rmtoll CR2          TI1S          LL_TIM_IC_IsEnabledXORCombination
2107
  * @param  TIMx Timer instance
2108
  * @retval State of bit (1 or 0).
2109
  */
2110
__STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(const TIM_TypeDef *TIMx)
2111
{
2112
  return ((READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S)) ? 1UL : 0UL);
2113
}
2114
 
2115
/**
2116
  * @brief  Get captured value for input channel 1.
2117
  * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF.
2118
  * @note Macro 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 IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
2121
  *       input channel 1 is supported by a timer instance.
2122
  * @rmtoll CCR1         CCR1          LL_TIM_IC_GetCaptureCH1
2123
  * @param  TIMx Timer instance
2124
  * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2125
  */
2126
__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH1(const TIM_TypeDef *TIMx)
2127
{
2128
  return (uint32_t)(READ_REG(TIMx->CCR1));
2129
}
2130
 
2131
/**
2132
  * @brief  Get captured value for input channel 2.
2133
  * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF.
2134
  * @note Macro 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 IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
2137
  *       input channel 2 is supported by a timer instance.
2138
  * @rmtoll CCR2         CCR2          LL_TIM_IC_GetCaptureCH2
2139
  * @param  TIMx Timer instance
2140
  * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2141
  */
2142
__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH2(const TIM_TypeDef *TIMx)
2143
{
2144
  return (uint32_t)(READ_REG(TIMx->CCR2));
2145
}
2146
 
2147
/**
2148
  * @brief  Get captured value for input channel 3.
2149
  * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF.
2150
  * @note Macro 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 IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
2153
  *       input channel 3 is supported by a timer instance.
2154
  * @rmtoll CCR3         CCR3          LL_TIM_IC_GetCaptureCH3
2155
  * @param  TIMx Timer instance
2156
  * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2157
  */
2158
__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH3(const TIM_TypeDef *TIMx)
2159
{
2160
  return (uint32_t)(READ_REG(TIMx->CCR3));
2161
}
2162
 
2163
/**
2164
  * @brief  Get captured value for input channel 4.
2165
  * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF.
2166
  * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
2167
  *       whether or not a timer instance supports a 32 bits counter.
2168
  * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
2169
  *       input channel 4 is supported by a timer instance.
2170
  * @rmtoll CCR4         CCR4          LL_TIM_IC_GetCaptureCH4
2171
  * @param  TIMx Timer instance
2172
  * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2173
  */
2174
__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH4(const TIM_TypeDef *TIMx)
2175
{
2176
  return (uint32_t)(READ_REG(TIMx->CCR4));
2177
}
2178
 
2179
/**
2180
  * @}
2181
  */
2182
 
2183
/** @defgroup TIM_LL_EF_Clock_Selection Counter clock selection
2184
  * @{
2185
  */
2186
/**
2187
  * @brief  Enable external clock mode 2.
2188
  * @note When external clock mode 2 is enabled the counter is clocked by any active edge on the ETRF signal.
2189
  * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2190
  *       whether or not a timer instance supports external clock mode2.
2191
  * @rmtoll SMCR         ECE           LL_TIM_EnableExternalClock
2192
  * @param  TIMx Timer instance
2193
  * @retval None
2194
  */
2195
__STATIC_INLINE void LL_TIM_EnableExternalClock(TIM_TypeDef *TIMx)
2196
{
2197
  SET_BIT(TIMx->SMCR, TIM_SMCR_ECE);
2198
}
2199
 
2200
/**
2201
  * @brief  Disable external clock mode 2.
2202
  * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2203
  *       whether or not a timer instance supports external clock mode2.
2204
  * @rmtoll SMCR         ECE           LL_TIM_DisableExternalClock
2205
  * @param  TIMx Timer instance
2206
  * @retval None
2207
  */
2208
__STATIC_INLINE void LL_TIM_DisableExternalClock(TIM_TypeDef *TIMx)
2209
{
2210
  CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE);
2211
}
2212
 
2213
/**
2214
  * @brief  Indicate whether external clock mode 2 is enabled.
2215
  * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2216
  *       whether or not a timer instance supports external clock mode2.
2217
  * @rmtoll SMCR         ECE           LL_TIM_IsEnabledExternalClock
2218
  * @param  TIMx Timer instance
2219
  * @retval State of bit (1 or 0).
2220
  */
2221
__STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(const TIM_TypeDef *TIMx)
2222
{
2223
  return ((READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE)) ? 1UL : 0UL);
2224
}
2225
 
2226
/**
2227
  * @brief  Set the clock source of the counter clock.
2228
  * @note when selected clock source is external clock mode 1, the timer input
2229
  *       the external clock is applied is selected by calling the @ref LL_TIM_SetTriggerInput()
2230
  *       function. This timer input must be configured by calling
2231
  *       the @ref LL_TIM_IC_Config() function.
2232
  * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(TIMx) can be used to check
2233
  *       whether or not a timer instance supports external clock mode1.
2234
  * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2235
  *       whether or not a timer instance supports external clock mode2.
2236
  * @rmtoll SMCR         SMS           LL_TIM_SetClockSource\n
2237
  *         SMCR         ECE           LL_TIM_SetClockSource
2238
  * @param  TIMx Timer instance
2239
  * @param  ClockSource This parameter can be one of the following values:
2240
  *         @arg @ref LL_TIM_CLOCKSOURCE_INTERNAL
2241
  *         @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE1
2242
  *         @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE2
2243
  * @retval None
2244
  */
2245
__STATIC_INLINE void LL_TIM_SetClockSource(TIM_TypeDef *TIMx, uint32_t ClockSource)
2246
{
2247
  MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource);
2248
}
2249
 
2250
/**
2251
  * @brief  Set the encoder interface mode.
2252
  * @note Macro IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx) can be used to check
2253
  *       whether or not a timer instance supports the encoder mode.
2254
  * @rmtoll SMCR         SMS           LL_TIM_SetEncoderMode
2255
  * @param  TIMx Timer instance
2256
  * @param  EncoderMode This parameter can be one of the following values:
2257
  *         @arg @ref LL_TIM_ENCODERMODE_X2_TI1
2258
  *         @arg @ref LL_TIM_ENCODERMODE_X2_TI2
2259
  *         @arg @ref LL_TIM_ENCODERMODE_X4_TI12
2260
  * @retval None
2261
  */
2262
__STATIC_INLINE void LL_TIM_SetEncoderMode(TIM_TypeDef *TIMx, uint32_t EncoderMode)
2263
{
2264
  MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, EncoderMode);
2265
}
2266
 
2267
/**
2268
  * @}
2269
  */
2270
 
2271
/** @defgroup TIM_LL_EF_Timer_Synchronization Timer synchronisation configuration
2272
  * @{
2273
  */
2274
/**
2275
  * @brief  Set the trigger output (TRGO) used for timer synchronization .
2276
  * @note Macro IS_TIM_MASTER_INSTANCE(TIMx) can be used to check
2277
  *       whether or not a timer instance can operate as a master timer.
2278
  * @rmtoll CR2          MMS           LL_TIM_SetTriggerOutput
2279
  * @param  TIMx Timer instance
2280
  * @param  TimerSynchronization This parameter can be one of the following values:
2281
  *         @arg @ref LL_TIM_TRGO_RESET
2282
  *         @arg @ref LL_TIM_TRGO_ENABLE
2283
  *         @arg @ref LL_TIM_TRGO_UPDATE
2284
  *         @arg @ref LL_TIM_TRGO_CC1IF
2285
  *         @arg @ref LL_TIM_TRGO_OC1REF
2286
  *         @arg @ref LL_TIM_TRGO_OC2REF
2287
  *         @arg @ref LL_TIM_TRGO_OC3REF
2288
  *         @arg @ref LL_TIM_TRGO_OC4REF
2289
  * @retval None
2290
  */
2291
__STATIC_INLINE void LL_TIM_SetTriggerOutput(TIM_TypeDef *TIMx, uint32_t TimerSynchronization)
2292
{
2293
  MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization);
2294
}
2295
 
2296
/**
2297
  * @brief  Set the synchronization mode of a slave timer.
2298
  * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2299
  *       a timer instance can operate as a slave timer.
2300
  * @rmtoll SMCR         SMS           LL_TIM_SetSlaveMode
2301
  * @param  TIMx Timer instance
2302
  * @param  SlaveMode This parameter can be one of the following values:
2303
  *         @arg @ref LL_TIM_SLAVEMODE_DISABLED
2304
  *         @arg @ref LL_TIM_SLAVEMODE_RESET
2305
  *         @arg @ref LL_TIM_SLAVEMODE_GATED
2306
  *         @arg @ref LL_TIM_SLAVEMODE_TRIGGER
2307
  * @retval None
2308
  */
2309
__STATIC_INLINE void LL_TIM_SetSlaveMode(TIM_TypeDef *TIMx, uint32_t SlaveMode)
2310
{
2311
  MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode);
2312
}
2313
 
2314
/**
2315
  * @brief  Set the selects the trigger input to be used to synchronize the counter.
2316
  * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2317
  *       a timer instance can operate as a slave timer.
2318
  * @rmtoll SMCR         TS            LL_TIM_SetTriggerInput
2319
  * @param  TIMx Timer instance
2320
  * @param  TriggerInput This parameter can be one of the following values:
2321
  *         @arg @ref LL_TIM_TS_ITR0
2322
  *         @arg @ref LL_TIM_TS_ITR1
2323
  *         @arg @ref LL_TIM_TS_ITR2
2324
  *         @arg @ref LL_TIM_TS_ITR3
2325
  *         @arg @ref LL_TIM_TS_TI1F_ED
2326
  *         @arg @ref LL_TIM_TS_TI1FP1
2327
  *         @arg @ref LL_TIM_TS_TI2FP2
2328
  *         @arg @ref LL_TIM_TS_ETRF
2329
  * @retval None
2330
  */
2331
__STATIC_INLINE void LL_TIM_SetTriggerInput(TIM_TypeDef *TIMx, uint32_t TriggerInput)
2332
{
2333
  MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput);
2334
}
2335
 
2336
/**
2337
  * @brief  Enable the Master/Slave mode.
2338
  * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2339
  *       a timer instance can operate as a slave timer.
2340
  * @rmtoll SMCR         MSM           LL_TIM_EnableMasterSlaveMode
2341
  * @param  TIMx Timer instance
2342
  * @retval None
2343
  */
2344
__STATIC_INLINE void LL_TIM_EnableMasterSlaveMode(TIM_TypeDef *TIMx)
2345
{
2346
  SET_BIT(TIMx->SMCR, TIM_SMCR_MSM);
2347
}
2348
 
2349
/**
2350
  * @brief  Disable the Master/Slave mode.
2351
  * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2352
  *       a timer instance can operate as a slave timer.
2353
  * @rmtoll SMCR         MSM           LL_TIM_DisableMasterSlaveMode
2354
  * @param  TIMx Timer instance
2355
  * @retval None
2356
  */
2357
__STATIC_INLINE void LL_TIM_DisableMasterSlaveMode(TIM_TypeDef *TIMx)
2358
{
2359
  CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM);
2360
}
2361
 
2362
/**
2363
  * @brief Indicates whether the Master/Slave mode is enabled.
2364
  * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2365
  * a timer instance can operate as a slave timer.
2366
  * @rmtoll SMCR         MSM           LL_TIM_IsEnabledMasterSlaveMode
2367
  * @param  TIMx Timer instance
2368
  * @retval State of bit (1 or 0).
2369
  */
2370
__STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(const TIM_TypeDef *TIMx)
2371
{
2372
  return ((READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM)) ? 1UL : 0UL);
2373
}
2374
 
2375
/**
2376
  * @brief  Configure the external trigger (ETR) input.
2377
  * @note Macro IS_TIM_ETR_INSTANCE(TIMx) can be used to check whether or not
2378
  *       a timer instance provides an external trigger input.
2379
  * @rmtoll SMCR         ETP           LL_TIM_ConfigETR\n
2380
  *         SMCR         ETPS          LL_TIM_ConfigETR\n
2381
  *         SMCR         ETF           LL_TIM_ConfigETR
2382
  * @param  TIMx Timer instance
2383
  * @param  ETRPolarity This parameter can be one of the following values:
2384
  *         @arg @ref LL_TIM_ETR_POLARITY_NONINVERTED
2385
  *         @arg @ref LL_TIM_ETR_POLARITY_INVERTED
2386
  * @param  ETRPrescaler This parameter can be one of the following values:
2387
  *         @arg @ref LL_TIM_ETR_PRESCALER_DIV1
2388
  *         @arg @ref LL_TIM_ETR_PRESCALER_DIV2
2389
  *         @arg @ref LL_TIM_ETR_PRESCALER_DIV4
2390
  *         @arg @ref LL_TIM_ETR_PRESCALER_DIV8
2391
  * @param  ETRFilter This parameter can be one of the following values:
2392
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV1
2393
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV1_N2
2394
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV1_N4
2395
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV1_N8
2396
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV2_N6
2397
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV2_N8
2398
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV4_N6
2399
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV4_N8
2400
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV8_N6
2401
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV8_N8
2402
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV16_N5
2403
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV16_N6
2404
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV16_N8
2405
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV32_N5
2406
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV32_N6
2407
  *         @arg @ref LL_TIM_ETR_FILTER_FDIV32_N8
2408
  * @retval None
2409
  */
2410
__STATIC_INLINE void LL_TIM_ConfigETR(TIM_TypeDef *TIMx, uint32_t ETRPolarity, uint32_t ETRPrescaler,
2411
                                      uint32_t ETRFilter)
2412
{
2413
  MODIFY_REG(TIMx->SMCR, TIM_SMCR_ETP | TIM_SMCR_ETPS | TIM_SMCR_ETF, ETRPolarity | ETRPrescaler | ETRFilter);
2414
}
2415
 
2416
/**
2417
  * @}
2418
  */
2419
 
2420
/** @defgroup TIM_LL_EF_DMA_Burst_Mode DMA burst mode configuration
2421
  * @{
2422
  */
2423
/**
2424
  * @brief  Configures the timer DMA burst feature.
2425
  * @note Macro IS_TIM_DMABURST_INSTANCE(TIMx) can be used to check whether or
2426
  *       not a timer instance supports the DMA burst mode.
2427
  * @rmtoll DCR          DBL           LL_TIM_ConfigDMABurst\n
2428
  *         DCR          DBA           LL_TIM_ConfigDMABurst
2429
  * @param  TIMx Timer instance
2430
  * @param  DMABurstBaseAddress This parameter can be one of the following values:
2431
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CR1
2432
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CR2
2433
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_SMCR
2434
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_DIER
2435
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_SR
2436
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_EGR
2437
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR1
2438
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR2
2439
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCER
2440
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CNT
2441
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_PSC
2442
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_ARR
2443
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCR1
2444
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCR2
2445
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCR3
2446
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCR4
2447
  *         @arg @ref LL_TIM_DMABURST_BASEADDR_OR
2448
  * @param  DMABurstLength This parameter can be one of the following values:
2449
  *         @arg @ref LL_TIM_DMABURST_LENGTH_1TRANSFER
2450
  *         @arg @ref LL_TIM_DMABURST_LENGTH_2TRANSFERS
2451
  *         @arg @ref LL_TIM_DMABURST_LENGTH_3TRANSFERS
2452
  *         @arg @ref LL_TIM_DMABURST_LENGTH_4TRANSFERS
2453
  *         @arg @ref LL_TIM_DMABURST_LENGTH_5TRANSFERS
2454
  *         @arg @ref LL_TIM_DMABURST_LENGTH_6TRANSFERS
2455
  *         @arg @ref LL_TIM_DMABURST_LENGTH_7TRANSFERS
2456
  *         @arg @ref LL_TIM_DMABURST_LENGTH_8TRANSFERS
2457
  *         @arg @ref LL_TIM_DMABURST_LENGTH_9TRANSFERS
2458
  *         @arg @ref LL_TIM_DMABURST_LENGTH_10TRANSFERS
2459
  *         @arg @ref LL_TIM_DMABURST_LENGTH_11TRANSFERS
2460
  *         @arg @ref LL_TIM_DMABURST_LENGTH_12TRANSFERS
2461
  *         @arg @ref LL_TIM_DMABURST_LENGTH_13TRANSFERS
2462
  *         @arg @ref LL_TIM_DMABURST_LENGTH_14TRANSFERS
2463
  *         @arg @ref LL_TIM_DMABURST_LENGTH_15TRANSFERS
2464
  *         @arg @ref LL_TIM_DMABURST_LENGTH_16TRANSFERS
2465
  *         @arg @ref LL_TIM_DMABURST_LENGTH_17TRANSFERS
2466
  *         @arg @ref LL_TIM_DMABURST_LENGTH_18TRANSFERS
2467
  * @retval None
2468
  */
2469
__STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_t DMABurstLength)
2470
{
2471
  MODIFY_REG(TIMx->DCR, (TIM_DCR_DBL | TIM_DCR_DBA), (DMABurstBaseAddress | DMABurstLength));
2472
}
2473
 
2474
/**
2475
  * @}
2476
  */
2477
 
2478
/** @defgroup TIM_LL_EF_Timer_Inputs_Remapping Timer input remapping
2479
  * @{
2480
  */
2481
/**
2482
  * @brief  Remap TIM inputs (input channel, internal/external triggers).
2483
  * @note Macro IS_TIM_REMAP_INSTANCE(TIMx) can be used to check whether or not
2484
  *       a some timer inputs can be remapped.
2485
  * @rmtoll  TIM2_OR     ITR1_RMP      LL_TIM_SetRemap\n
2486
  *         TIM3_OR     ITR2_RMP      LL_TIM_SetRemap\n
2487
  *         TIM9_OR     TI1_RMP       LL_TIM_SetRemap\n
2488
  *         TIM9_OR     ITR1_RMP      LL_TIM_SetRemap\n
2489
  *         TIM10_OR    TI1_RMP       LL_TIM_SetRemap\n
2490
  *         TIM10_OR    ETR_RMP       LL_TIM_SetRemap\n
2491
  *         TIM10_OR    TI1_RMP_RI    LL_TIM_SetRemap\n
2492
  *         TIM11_OR    TI1_RMP       LL_TIM_SetRemap\n
2493
  *         TIM11_OR    ETR_RMP       LL_TIM_SetRemap\n
2494
  *         TIM11_OR    TI1_RMP_RI    LL_TIM_SetRemap
2495
  * @param  TIMx Timer instance
2496
  * @param  Remap Remap params depends on the TIMx. Description available only
2497
  *         in CHM version of the User Manual (not in .pdf).
2498
  *         Otherwise see Reference Manual description of OR registers.
2499
  *
2500
  *         Below description summarizes "Timer Instance" and "Remap" param combinations:
2501
  *
2502
  *         TIM2: any combination of ITR1_RMP where
2503
  *
2504
  *            . . ITR1_RMP can be one of the following values
2505
  *            @arg @ref LL_TIM_TIM2_TIR1_RMP_TIM10_OC  (**)
2506
  *            @arg @ref LL_TIM_TIM2_TIR1_RMP_TIM5_TGO  (**)
2507
  *
2508
  *         TIM3: any combination of ITR2_RMP where
2509
  *
2510
  *            . . ITR2_RMP can be one of the following values
2511
  *            @arg @ref LL_TIM_TIM3_TIR2_RMP_TIM11_OC  (**)
2512
  *            @arg @ref LL_TIM_TIM3_TIR2_RMP_TIM5_TGO  (**)
2513
  *
2514
  *         TIM9: any combination of TI1_RMP, ITR1_RMP where
2515
  *
2516
  *            . . TI1_RMP can be one of the following values
2517
  *            @arg @ref LL_TIM_TIM9_TI1_RMP_LSE
2518
  *            @arg @ref LL_TIM_TIM9_TI1_RMP_GPIO
2519
  *
2520
  *            . . ITR1_RMP can be one of the following values
2521
  *            @arg @ref LL_TIM_TIM9_ITR1_RMP_TIM3_TGO  (*)
2522
  *            @arg @ref LL_TIM_TIM9_ITR1_RMP_TOUCH_IO  (*)
2523
  *
2524
  *
2525
  *         TIM10: any combination of TI1_RMP, ETR_RMP, TI1_RMP_RI   where
2526
  *
2527
  *            . . TI1_RMP can be one of the following values
2528
  *            @arg @ref LL_TIM_TIM10_TI1_RMP_GPIO
2529
  *            @arg @ref LL_TIM_TIM10_TI1_RMP_LSI
2530
  *            @arg @ref LL_TIM_TIM10_TI1_RMP_LSE
2531
  *            @arg @ref LL_TIM_TIM10_TI1_RMP_RTC
2532
  *
2533
  *            . . ETR_RMP can be one of the following values
2534
  *            @arg @ref LL_TIM_TIM10_ETR_RMP_TIM9_TGO  (*)
2535
  *
2536
  *            . . TI1_RMP_RI can be one of the following values
2537
  *            @arg @ref LL_TIM_TIM10_TI1_RMP_RI        (*)
2538
  *
2539
  *
2540
  *         TIM11: any combination of TI1_RMP, ETR_RMP, TI1_RMP_RI   where
2541
  *
2542
  *            . . TI1_RMP can be one of the following values
2543
  *            @arg @ref LL_TIM_TIM11_TI1_RMP_MSI
2544
  *            @arg @ref LL_TIM_TIM11_TI1_RMP_HSE_RTC
2545
  *            @arg @ref LL_TIM_TIM11_TI1_RMP
2546
  *
2547
  *            . . ETR_RMP can be one of the following values
2548
  *            @arg @ref LL_TIM_TIM11_ETR_RMP_TIM9_TGO  (*)
2549
  *
2550
  *            . . TI1_RMP_RI can be one of the following values
2551
  *            @arg @ref LL_TIM_TIM11_TI1_RMP_RI        (*)
2552
  *
2553
  *           (*) value not available in all devices categories
2554
  *           (**) register not available in all devices categories
2555
  *
2556
  * @note Option registers are available only for cat.3, cat.4 and cat.5  devices
2557
  * @retval None
2558
  */
2559
__STATIC_INLINE void LL_TIM_SetRemap(TIM_TypeDef *TIMx, uint32_t Remap)
2560
{
2561
  MODIFY_REG(TIMx->OR, (Remap >> TIMx_OR_RMP_SHIFT), (Remap & TIMx_OR_RMP_MASK));
2562
}
2563
 
2564
/**
2565
  * @}
2566
  */
2567
 
2568
/** @defgroup TIM_LL_EF_OCREF_Clear OCREF_Clear_Management
2569
  * @{
2570
  */
2571
/**
2572
  * @brief  Set the OCREF clear input source
2573
  * @note The OCxREF signal of a given channel can be cleared when a high level is applied on the OCREF_CLR_INPUT
2574
  * @note This function can only be used in Output compare and PWM modes.
2575
  * @note the ETR signal can be connected to the output of a comparator to be used for current handling
2576
  * @rmtoll SMCR          OCCS                LL_TIM_SetOCRefClearInputSource
2577
  * @param  TIMx Timer instance
2578
  * @param  OCRefClearInputSource This parameter can be one of the following values:
2579
  *         @arg @ref LL_TIM_OCREF_CLR_INT_OCREF_CLR
2580
  *         @arg @ref LL_TIM_OCREF_CLR_INT_ETR
2581
  * @retval None
2582
  */
2583
__STATIC_INLINE void LL_TIM_SetOCRefClearInputSource(TIM_TypeDef *TIMx, uint32_t OCRefClearInputSource)
2584
{
2585
  MODIFY_REG(TIMx->SMCR, TIM_SMCR_OCCS, OCRefClearInputSource);
2586
}
2587
/**
2588
  * @}
2589
  */
2590
 
2591
/** @defgroup TIM_LL_EF_FLAG_Management FLAG-Management
2592
  * @{
2593
  */
2594
/**
2595
  * @brief  Clear the update interrupt flag (UIF).
2596
  * @rmtoll SR           UIF           LL_TIM_ClearFlag_UPDATE
2597
  * @param  TIMx Timer instance
2598
  * @retval None
2599
  */
2600
__STATIC_INLINE void LL_TIM_ClearFlag_UPDATE(TIM_TypeDef *TIMx)
2601
{
2602
  WRITE_REG(TIMx->SR, ~(TIM_SR_UIF));
2603
}
2604
 
2605
/**
2606
  * @brief  Indicate whether update interrupt flag (UIF) is set (update interrupt is pending).
2607
  * @rmtoll SR           UIF           LL_TIM_IsActiveFlag_UPDATE
2608
  * @param  TIMx Timer instance
2609
  * @retval State of bit (1 or 0).
2610
  */
2611
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(const TIM_TypeDef *TIMx)
2612
{
2613
  return ((READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF)) ? 1UL : 0UL);
2614
}
2615
 
2616
/**
2617
  * @brief  Clear the Capture/Compare 1 interrupt flag (CC1F).
2618
  * @rmtoll SR           CC1IF         LL_TIM_ClearFlag_CC1
2619
  * @param  TIMx Timer instance
2620
  * @retval None
2621
  */
2622
__STATIC_INLINE void LL_TIM_ClearFlag_CC1(TIM_TypeDef *TIMx)
2623
{
2624
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC1IF));
2625
}
2626
 
2627
/**
2628
  * @brief  Indicate whether Capture/Compare 1 interrupt flag (CC1F) is set (Capture/Compare 1 interrupt is pending).
2629
  * @rmtoll SR           CC1IF         LL_TIM_IsActiveFlag_CC1
2630
  * @param  TIMx Timer instance
2631
  * @retval State of bit (1 or 0).
2632
  */
2633
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1(const TIM_TypeDef *TIMx)
2634
{
2635
  return ((READ_BIT(TIMx->SR, TIM_SR_CC1IF) == (TIM_SR_CC1IF)) ? 1UL : 0UL);
2636
}
2637
 
2638
/**
2639
  * @brief  Clear the Capture/Compare 2 interrupt flag (CC2F).
2640
  * @rmtoll SR           CC2IF         LL_TIM_ClearFlag_CC2
2641
  * @param  TIMx Timer instance
2642
  * @retval None
2643
  */
2644
__STATIC_INLINE void LL_TIM_ClearFlag_CC2(TIM_TypeDef *TIMx)
2645
{
2646
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC2IF));
2647
}
2648
 
2649
/**
2650
  * @brief  Indicate whether Capture/Compare 2 interrupt flag (CC2F) is set (Capture/Compare 2 interrupt is pending).
2651
  * @rmtoll SR           CC2IF         LL_TIM_IsActiveFlag_CC2
2652
  * @param  TIMx Timer instance
2653
  * @retval State of bit (1 or 0).
2654
  */
2655
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2(const TIM_TypeDef *TIMx)
2656
{
2657
  return ((READ_BIT(TIMx->SR, TIM_SR_CC2IF) == (TIM_SR_CC2IF)) ? 1UL : 0UL);
2658
}
2659
 
2660
/**
2661
  * @brief  Clear the Capture/Compare 3 interrupt flag (CC3F).
2662
  * @rmtoll SR           CC3IF         LL_TIM_ClearFlag_CC3
2663
  * @param  TIMx Timer instance
2664
  * @retval None
2665
  */
2666
__STATIC_INLINE void LL_TIM_ClearFlag_CC3(TIM_TypeDef *TIMx)
2667
{
2668
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC3IF));
2669
}
2670
 
2671
/**
2672
  * @brief  Indicate whether Capture/Compare 3 interrupt flag (CC3F) is set (Capture/Compare 3 interrupt is pending).
2673
  * @rmtoll SR           CC3IF         LL_TIM_IsActiveFlag_CC3
2674
  * @param  TIMx Timer instance
2675
  * @retval State of bit (1 or 0).
2676
  */
2677
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3(const TIM_TypeDef *TIMx)
2678
{
2679
  return ((READ_BIT(TIMx->SR, TIM_SR_CC3IF) == (TIM_SR_CC3IF)) ? 1UL : 0UL);
2680
}
2681
 
2682
/**
2683
  * @brief  Clear the Capture/Compare 4 interrupt flag (CC4F).
2684
  * @rmtoll SR           CC4IF         LL_TIM_ClearFlag_CC4
2685
  * @param  TIMx Timer instance
2686
  * @retval None
2687
  */
2688
__STATIC_INLINE void LL_TIM_ClearFlag_CC4(TIM_TypeDef *TIMx)
2689
{
2690
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC4IF));
2691
}
2692
 
2693
/**
2694
  * @brief  Indicate whether Capture/Compare 4 interrupt flag (CC4F) is set (Capture/Compare 4 interrupt is pending).
2695
  * @rmtoll SR           CC4IF         LL_TIM_IsActiveFlag_CC4
2696
  * @param  TIMx Timer instance
2697
  * @retval State of bit (1 or 0).
2698
  */
2699
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4(const TIM_TypeDef *TIMx)
2700
{
2701
  return ((READ_BIT(TIMx->SR, TIM_SR_CC4IF) == (TIM_SR_CC4IF)) ? 1UL : 0UL);
2702
}
2703
 
2704
/**
2705
  * @brief  Clear the trigger interrupt flag (TIF).
2706
  * @rmtoll SR           TIF           LL_TIM_ClearFlag_TRIG
2707
  * @param  TIMx Timer instance
2708
  * @retval None
2709
  */
2710
__STATIC_INLINE void LL_TIM_ClearFlag_TRIG(TIM_TypeDef *TIMx)
2711
{
2712
  WRITE_REG(TIMx->SR, ~(TIM_SR_TIF));
2713
}
2714
 
2715
/**
2716
  * @brief  Indicate whether trigger interrupt flag (TIF) is set (trigger interrupt is pending).
2717
  * @rmtoll SR           TIF           LL_TIM_IsActiveFlag_TRIG
2718
  * @param  TIMx Timer instance
2719
  * @retval State of bit (1 or 0).
2720
  */
2721
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_TRIG(const TIM_TypeDef *TIMx)
2722
{
2723
  return ((READ_BIT(TIMx->SR, TIM_SR_TIF) == (TIM_SR_TIF)) ? 1UL : 0UL);
2724
}
2725
 
2726
/**
2727
  * @brief  Clear the Capture/Compare 1 over-capture interrupt flag (CC1OF).
2728
  * @rmtoll SR           CC1OF         LL_TIM_ClearFlag_CC1OVR
2729
  * @param  TIMx Timer instance
2730
  * @retval None
2731
  */
2732
__STATIC_INLINE void LL_TIM_ClearFlag_CC1OVR(TIM_TypeDef *TIMx)
2733
{
2734
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC1OF));
2735
}
2736
 
2737
/**
2738
  * @brief  Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set
2739
  *         (Capture/Compare 1 interrupt is pending).
2740
  * @rmtoll SR           CC1OF         LL_TIM_IsActiveFlag_CC1OVR
2741
  * @param  TIMx Timer instance
2742
  * @retval State of bit (1 or 0).
2743
  */
2744
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(const TIM_TypeDef *TIMx)
2745
{
2746
  return ((READ_BIT(TIMx->SR, TIM_SR_CC1OF) == (TIM_SR_CC1OF)) ? 1UL : 0UL);
2747
}
2748
 
2749
/**
2750
  * @brief  Clear the Capture/Compare 2 over-capture interrupt flag (CC2OF).
2751
  * @rmtoll SR           CC2OF         LL_TIM_ClearFlag_CC2OVR
2752
  * @param  TIMx Timer instance
2753
  * @retval None
2754
  */
2755
__STATIC_INLINE void LL_TIM_ClearFlag_CC2OVR(TIM_TypeDef *TIMx)
2756
{
2757
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC2OF));
2758
}
2759
 
2760
/**
2761
  * @brief  Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set
2762
  *         (Capture/Compare 2 over-capture interrupt is pending).
2763
  * @rmtoll SR           CC2OF         LL_TIM_IsActiveFlag_CC2OVR
2764
  * @param  TIMx Timer instance
2765
  * @retval State of bit (1 or 0).
2766
  */
2767
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(const TIM_TypeDef *TIMx)
2768
{
2769
  return ((READ_BIT(TIMx->SR, TIM_SR_CC2OF) == (TIM_SR_CC2OF)) ? 1UL : 0UL);
2770
}
2771
 
2772
/**
2773
  * @brief  Clear the Capture/Compare 3 over-capture interrupt flag (CC3OF).
2774
  * @rmtoll SR           CC3OF         LL_TIM_ClearFlag_CC3OVR
2775
  * @param  TIMx Timer instance
2776
  * @retval None
2777
  */
2778
__STATIC_INLINE void LL_TIM_ClearFlag_CC3OVR(TIM_TypeDef *TIMx)
2779
{
2780
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC3OF));
2781
}
2782
 
2783
/**
2784
  * @brief  Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set
2785
  *         (Capture/Compare 3 over-capture interrupt is pending).
2786
  * @rmtoll SR           CC3OF         LL_TIM_IsActiveFlag_CC3OVR
2787
  * @param  TIMx Timer instance
2788
  * @retval State of bit (1 or 0).
2789
  */
2790
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(const TIM_TypeDef *TIMx)
2791
{
2792
  return ((READ_BIT(TIMx->SR, TIM_SR_CC3OF) == (TIM_SR_CC3OF)) ? 1UL : 0UL);
2793
}
2794
 
2795
/**
2796
  * @brief  Clear the Capture/Compare 4 over-capture interrupt flag (CC4OF).
2797
  * @rmtoll SR           CC4OF         LL_TIM_ClearFlag_CC4OVR
2798
  * @param  TIMx Timer instance
2799
  * @retval None
2800
  */
2801
__STATIC_INLINE void LL_TIM_ClearFlag_CC4OVR(TIM_TypeDef *TIMx)
2802
{
2803
  WRITE_REG(TIMx->SR, ~(TIM_SR_CC4OF));
2804
}
2805
 
2806
/**
2807
  * @brief  Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set
2808
  *         (Capture/Compare 4 over-capture interrupt is pending).
2809
  * @rmtoll SR           CC4OF         LL_TIM_IsActiveFlag_CC4OVR
2810
  * @param  TIMx Timer instance
2811
  * @retval State of bit (1 or 0).
2812
  */
2813
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(const TIM_TypeDef *TIMx)
2814
{
2815
  return ((READ_BIT(TIMx->SR, TIM_SR_CC4OF) == (TIM_SR_CC4OF)) ? 1UL : 0UL);
2816
}
2817
 
2818
/**
2819
  * @}
2820
  */
2821
 
2822
/** @defgroup TIM_LL_EF_IT_Management IT-Management
2823
  * @{
2824
  */
2825
/**
2826
  * @brief  Enable update interrupt (UIE).
2827
  * @rmtoll DIER         UIE           LL_TIM_EnableIT_UPDATE
2828
  * @param  TIMx Timer instance
2829
  * @retval None
2830
  */
2831
__STATIC_INLINE void LL_TIM_EnableIT_UPDATE(TIM_TypeDef *TIMx)
2832
{
2833
  SET_BIT(TIMx->DIER, TIM_DIER_UIE);
2834
}
2835
 
2836
/**
2837
  * @brief  Disable update interrupt (UIE).
2838
  * @rmtoll DIER         UIE           LL_TIM_DisableIT_UPDATE
2839
  * @param  TIMx Timer instance
2840
  * @retval None
2841
  */
2842
__STATIC_INLINE void LL_TIM_DisableIT_UPDATE(TIM_TypeDef *TIMx)
2843
{
2844
  CLEAR_BIT(TIMx->DIER, TIM_DIER_UIE);
2845
}
2846
 
2847
/**
2848
  * @brief  Indicates whether the update interrupt (UIE) is enabled.
2849
  * @rmtoll DIER         UIE           LL_TIM_IsEnabledIT_UPDATE
2850
  * @param  TIMx Timer instance
2851
  * @retval State of bit (1 or 0).
2852
  */
2853
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_UPDATE(const TIM_TypeDef *TIMx)
2854
{
2855
  return ((READ_BIT(TIMx->DIER, TIM_DIER_UIE) == (TIM_DIER_UIE)) ? 1UL : 0UL);
2856
}
2857
 
2858
/**
2859
  * @brief  Enable capture/compare 1 interrupt (CC1IE).
2860
  * @rmtoll DIER         CC1IE         LL_TIM_EnableIT_CC1
2861
  * @param  TIMx Timer instance
2862
  * @retval None
2863
  */
2864
__STATIC_INLINE void LL_TIM_EnableIT_CC1(TIM_TypeDef *TIMx)
2865
{
2866
  SET_BIT(TIMx->DIER, TIM_DIER_CC1IE);
2867
}
2868
 
2869
/**
2870
  * @brief  Disable capture/compare 1  interrupt (CC1IE).
2871
  * @rmtoll DIER         CC1IE         LL_TIM_DisableIT_CC1
2872
  * @param  TIMx Timer instance
2873
  * @retval None
2874
  */
2875
__STATIC_INLINE void LL_TIM_DisableIT_CC1(TIM_TypeDef *TIMx)
2876
{
2877
  CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1IE);
2878
}
2879
 
2880
/**
2881
  * @brief  Indicates whether the capture/compare 1 interrupt (CC1IE) is enabled.
2882
  * @rmtoll DIER         CC1IE         LL_TIM_IsEnabledIT_CC1
2883
  * @param  TIMx Timer instance
2884
  * @retval State of bit (1 or 0).
2885
  */
2886
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC1(const TIM_TypeDef *TIMx)
2887
{
2888
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1IE) == (TIM_DIER_CC1IE)) ? 1UL : 0UL);
2889
}
2890
 
2891
/**
2892
  * @brief  Enable capture/compare 2 interrupt (CC2IE).
2893
  * @rmtoll DIER         CC2IE         LL_TIM_EnableIT_CC2
2894
  * @param  TIMx Timer instance
2895
  * @retval None
2896
  */
2897
__STATIC_INLINE void LL_TIM_EnableIT_CC2(TIM_TypeDef *TIMx)
2898
{
2899
  SET_BIT(TIMx->DIER, TIM_DIER_CC2IE);
2900
}
2901
 
2902
/**
2903
  * @brief  Disable capture/compare 2  interrupt (CC2IE).
2904
  * @rmtoll DIER         CC2IE         LL_TIM_DisableIT_CC2
2905
  * @param  TIMx Timer instance
2906
  * @retval None
2907
  */
2908
__STATIC_INLINE void LL_TIM_DisableIT_CC2(TIM_TypeDef *TIMx)
2909
{
2910
  CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2IE);
2911
}
2912
 
2913
/**
2914
  * @brief  Indicates whether the capture/compare 2 interrupt (CC2IE) is enabled.
2915
  * @rmtoll DIER         CC2IE         LL_TIM_IsEnabledIT_CC2
2916
  * @param  TIMx Timer instance
2917
  * @retval State of bit (1 or 0).
2918
  */
2919
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC2(const TIM_TypeDef *TIMx)
2920
{
2921
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2IE) == (TIM_DIER_CC2IE)) ? 1UL : 0UL);
2922
}
2923
 
2924
/**
2925
  * @brief  Enable capture/compare 3 interrupt (CC3IE).
2926
  * @rmtoll DIER         CC3IE         LL_TIM_EnableIT_CC3
2927
  * @param  TIMx Timer instance
2928
  * @retval None
2929
  */
2930
__STATIC_INLINE void LL_TIM_EnableIT_CC3(TIM_TypeDef *TIMx)
2931
{
2932
  SET_BIT(TIMx->DIER, TIM_DIER_CC3IE);
2933
}
2934
 
2935
/**
2936
  * @brief  Disable capture/compare 3  interrupt (CC3IE).
2937
  * @rmtoll DIER         CC3IE         LL_TIM_DisableIT_CC3
2938
  * @param  TIMx Timer instance
2939
  * @retval None
2940
  */
2941
__STATIC_INLINE void LL_TIM_DisableIT_CC3(TIM_TypeDef *TIMx)
2942
{
2943
  CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3IE);
2944
}
2945
 
2946
/**
2947
  * @brief  Indicates whether the capture/compare 3 interrupt (CC3IE) is enabled.
2948
  * @rmtoll DIER         CC3IE         LL_TIM_IsEnabledIT_CC3
2949
  * @param  TIMx Timer instance
2950
  * @retval State of bit (1 or 0).
2951
  */
2952
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC3(const TIM_TypeDef *TIMx)
2953
{
2954
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3IE) == (TIM_DIER_CC3IE)) ? 1UL : 0UL);
2955
}
2956
 
2957
/**
2958
  * @brief  Enable capture/compare 4 interrupt (CC4IE).
2959
  * @rmtoll DIER         CC4IE         LL_TIM_EnableIT_CC4
2960
  * @param  TIMx Timer instance
2961
  * @retval None
2962
  */
2963
__STATIC_INLINE void LL_TIM_EnableIT_CC4(TIM_TypeDef *TIMx)
2964
{
2965
  SET_BIT(TIMx->DIER, TIM_DIER_CC4IE);
2966
}
2967
 
2968
/**
2969
  * @brief  Disable capture/compare 4  interrupt (CC4IE).
2970
  * @rmtoll DIER         CC4IE         LL_TIM_DisableIT_CC4
2971
  * @param  TIMx Timer instance
2972
  * @retval None
2973
  */
2974
__STATIC_INLINE void LL_TIM_DisableIT_CC4(TIM_TypeDef *TIMx)
2975
{
2976
  CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4IE);
2977
}
2978
 
2979
/**
2980
  * @brief  Indicates whether the capture/compare 4 interrupt (CC4IE) is enabled.
2981
  * @rmtoll DIER         CC4IE         LL_TIM_IsEnabledIT_CC4
2982
  * @param  TIMx Timer instance
2983
  * @retval State of bit (1 or 0).
2984
  */
2985
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC4(const TIM_TypeDef *TIMx)
2986
{
2987
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4IE) == (TIM_DIER_CC4IE)) ? 1UL : 0UL);
2988
}
2989
 
2990
/**
2991
  * @brief  Enable trigger interrupt (TIE).
2992
  * @rmtoll DIER         TIE           LL_TIM_EnableIT_TRIG
2993
  * @param  TIMx Timer instance
2994
  * @retval None
2995
  */
2996
__STATIC_INLINE void LL_TIM_EnableIT_TRIG(TIM_TypeDef *TIMx)
2997
{
2998
  SET_BIT(TIMx->DIER, TIM_DIER_TIE);
2999
}
3000
 
3001
/**
3002
  * @brief  Disable trigger interrupt (TIE).
3003
  * @rmtoll DIER         TIE           LL_TIM_DisableIT_TRIG
3004
  * @param  TIMx Timer instance
3005
  * @retval None
3006
  */
3007
__STATIC_INLINE void LL_TIM_DisableIT_TRIG(TIM_TypeDef *TIMx)
3008
{
3009
  CLEAR_BIT(TIMx->DIER, TIM_DIER_TIE);
3010
}
3011
 
3012
/**
3013
  * @brief  Indicates whether the trigger interrupt (TIE) is enabled.
3014
  * @rmtoll DIER         TIE           LL_TIM_IsEnabledIT_TRIG
3015
  * @param  TIMx Timer instance
3016
  * @retval State of bit (1 or 0).
3017
  */
3018
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_TRIG(const TIM_TypeDef *TIMx)
3019
{
3020
  return ((READ_BIT(TIMx->DIER, TIM_DIER_TIE) == (TIM_DIER_TIE)) ? 1UL : 0UL);
3021
}
3022
 
3023
/**
3024
  * @}
3025
  */
3026
 
3027
/** @defgroup TIM_LL_EF_DMA_Management DMA Management
3028
  * @{
3029
  */
3030
/**
3031
  * @brief  Enable update DMA request (UDE).
3032
  * @rmtoll DIER         UDE           LL_TIM_EnableDMAReq_UPDATE
3033
  * @param  TIMx Timer instance
3034
  * @retval None
3035
  */
3036
__STATIC_INLINE void LL_TIM_EnableDMAReq_UPDATE(TIM_TypeDef *TIMx)
3037
{
3038
  SET_BIT(TIMx->DIER, TIM_DIER_UDE);
3039
}
3040
 
3041
/**
3042
  * @brief  Disable update DMA request (UDE).
3043
  * @rmtoll DIER         UDE           LL_TIM_DisableDMAReq_UPDATE
3044
  * @param  TIMx Timer instance
3045
  * @retval None
3046
  */
3047
__STATIC_INLINE void LL_TIM_DisableDMAReq_UPDATE(TIM_TypeDef *TIMx)
3048
{
3049
  CLEAR_BIT(TIMx->DIER, TIM_DIER_UDE);
3050
}
3051
 
3052
/**
3053
  * @brief  Indicates whether the update DMA request  (UDE) is enabled.
3054
  * @rmtoll DIER         UDE           LL_TIM_IsEnabledDMAReq_UPDATE
3055
  * @param  TIMx Timer instance
3056
  * @retval State of bit (1 or 0).
3057
  */
3058
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_UPDATE(const TIM_TypeDef *TIMx)
3059
{
3060
  return ((READ_BIT(TIMx->DIER, TIM_DIER_UDE) == (TIM_DIER_UDE)) ? 1UL : 0UL);
3061
}
3062
 
3063
/**
3064
  * @brief  Enable capture/compare 1 DMA request (CC1DE).
3065
  * @rmtoll DIER         CC1DE         LL_TIM_EnableDMAReq_CC1
3066
  * @param  TIMx Timer instance
3067
  * @retval None
3068
  */
3069
__STATIC_INLINE void LL_TIM_EnableDMAReq_CC1(TIM_TypeDef *TIMx)
3070
{
3071
  SET_BIT(TIMx->DIER, TIM_DIER_CC1DE);
3072
}
3073
 
3074
/**
3075
  * @brief  Disable capture/compare 1  DMA request (CC1DE).
3076
  * @rmtoll DIER         CC1DE         LL_TIM_DisableDMAReq_CC1
3077
  * @param  TIMx Timer instance
3078
  * @retval None
3079
  */
3080
__STATIC_INLINE void LL_TIM_DisableDMAReq_CC1(TIM_TypeDef *TIMx)
3081
{
3082
  CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1DE);
3083
}
3084
 
3085
/**
3086
  * @brief  Indicates whether the capture/compare 1 DMA request (CC1DE) is enabled.
3087
  * @rmtoll DIER         CC1DE         LL_TIM_IsEnabledDMAReq_CC1
3088
  * @param  TIMx Timer instance
3089
  * @retval State of bit (1 or 0).
3090
  */
3091
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC1(const TIM_TypeDef *TIMx)
3092
{
3093
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1DE) == (TIM_DIER_CC1DE)) ? 1UL : 0UL);
3094
}
3095
 
3096
/**
3097
  * @brief  Enable capture/compare 2 DMA request (CC2DE).
3098
  * @rmtoll DIER         CC2DE         LL_TIM_EnableDMAReq_CC2
3099
  * @param  TIMx Timer instance
3100
  * @retval None
3101
  */
3102
__STATIC_INLINE void LL_TIM_EnableDMAReq_CC2(TIM_TypeDef *TIMx)
3103
{
3104
  SET_BIT(TIMx->DIER, TIM_DIER_CC2DE);
3105
}
3106
 
3107
/**
3108
  * @brief  Disable capture/compare 2  DMA request (CC2DE).
3109
  * @rmtoll DIER         CC2DE         LL_TIM_DisableDMAReq_CC2
3110
  * @param  TIMx Timer instance
3111
  * @retval None
3112
  */
3113
__STATIC_INLINE void LL_TIM_DisableDMAReq_CC2(TIM_TypeDef *TIMx)
3114
{
3115
  CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2DE);
3116
}
3117
 
3118
/**
3119
  * @brief  Indicates whether the capture/compare 2 DMA request (CC2DE) is enabled.
3120
  * @rmtoll DIER         CC2DE         LL_TIM_IsEnabledDMAReq_CC2
3121
  * @param  TIMx Timer instance
3122
  * @retval State of bit (1 or 0).
3123
  */
3124
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC2(const TIM_TypeDef *TIMx)
3125
{
3126
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2DE) == (TIM_DIER_CC2DE)) ? 1UL : 0UL);
3127
}
3128
 
3129
/**
3130
  * @brief  Enable capture/compare 3 DMA request (CC3DE).
3131
  * @rmtoll DIER         CC3DE         LL_TIM_EnableDMAReq_CC3
3132
  * @param  TIMx Timer instance
3133
  * @retval None
3134
  */
3135
__STATIC_INLINE void LL_TIM_EnableDMAReq_CC3(TIM_TypeDef *TIMx)
3136
{
3137
  SET_BIT(TIMx->DIER, TIM_DIER_CC3DE);
3138
}
3139
 
3140
/**
3141
  * @brief  Disable capture/compare 3  DMA request (CC3DE).
3142
  * @rmtoll DIER         CC3DE         LL_TIM_DisableDMAReq_CC3
3143
  * @param  TIMx Timer instance
3144
  * @retval None
3145
  */
3146
__STATIC_INLINE void LL_TIM_DisableDMAReq_CC3(TIM_TypeDef *TIMx)
3147
{
3148
  CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3DE);
3149
}
3150
 
3151
/**
3152
  * @brief  Indicates whether the capture/compare 3 DMA request (CC3DE) is enabled.
3153
  * @rmtoll DIER         CC3DE         LL_TIM_IsEnabledDMAReq_CC3
3154
  * @param  TIMx Timer instance
3155
  * @retval State of bit (1 or 0).
3156
  */
3157
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC3(const TIM_TypeDef *TIMx)
3158
{
3159
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3DE) == (TIM_DIER_CC3DE)) ? 1UL : 0UL);
3160
}
3161
 
3162
/**
3163
  * @brief  Enable capture/compare 4 DMA request (CC4DE).
3164
  * @rmtoll DIER         CC4DE         LL_TIM_EnableDMAReq_CC4
3165
  * @param  TIMx Timer instance
3166
  * @retval None
3167
  */
3168
__STATIC_INLINE void LL_TIM_EnableDMAReq_CC4(TIM_TypeDef *TIMx)
3169
{
3170
  SET_BIT(TIMx->DIER, TIM_DIER_CC4DE);
3171
}
3172
 
3173
/**
3174
  * @brief  Disable capture/compare 4  DMA request (CC4DE).
3175
  * @rmtoll DIER         CC4DE         LL_TIM_DisableDMAReq_CC4
3176
  * @param  TIMx Timer instance
3177
  * @retval None
3178
  */
3179
__STATIC_INLINE void LL_TIM_DisableDMAReq_CC4(TIM_TypeDef *TIMx)
3180
{
3181
  CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4DE);
3182
}
3183
 
3184
/**
3185
  * @brief  Indicates whether the capture/compare 4 DMA request (CC4DE) is enabled.
3186
  * @rmtoll DIER         CC4DE         LL_TIM_IsEnabledDMAReq_CC4
3187
  * @param  TIMx Timer instance
3188
  * @retval State of bit (1 or 0).
3189
  */
3190
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC4(const TIM_TypeDef *TIMx)
3191
{
3192
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4DE) == (TIM_DIER_CC4DE)) ? 1UL : 0UL);
3193
}
3194
 
3195
/**
3196
  * @brief  Enable trigger interrupt (TDE).
3197
  * @rmtoll DIER         TDE           LL_TIM_EnableDMAReq_TRIG
3198
  * @param  TIMx Timer instance
3199
  * @retval None
3200
  */
3201
__STATIC_INLINE void LL_TIM_EnableDMAReq_TRIG(TIM_TypeDef *TIMx)
3202
{
3203
  SET_BIT(TIMx->DIER, TIM_DIER_TDE);
3204
}
3205
 
3206
/**
3207
  * @brief  Disable trigger interrupt (TDE).
3208
  * @rmtoll DIER         TDE           LL_TIM_DisableDMAReq_TRIG
3209
  * @param  TIMx Timer instance
3210
  * @retval None
3211
  */
3212
__STATIC_INLINE void LL_TIM_DisableDMAReq_TRIG(TIM_TypeDef *TIMx)
3213
{
3214
  CLEAR_BIT(TIMx->DIER, TIM_DIER_TDE);
3215
}
3216
 
3217
/**
3218
  * @brief  Indicates whether the trigger interrupt (TDE) is enabled.
3219
  * @rmtoll DIER         TDE           LL_TIM_IsEnabledDMAReq_TRIG
3220
  * @param  TIMx Timer instance
3221
  * @retval State of bit (1 or 0).
3222
  */
3223
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_TRIG(const TIM_TypeDef *TIMx)
3224
{
3225
  return ((READ_BIT(TIMx->DIER, TIM_DIER_TDE) == (TIM_DIER_TDE)) ? 1UL : 0UL);
3226
}
3227
 
3228
/**
3229
  * @}
3230
  */
3231
 
3232
/** @defgroup TIM_LL_EF_EVENT_Management EVENT-Management
3233
  * @{
3234
  */
3235
/**
3236
  * @brief  Generate an update event.
3237
  * @rmtoll EGR          UG            LL_TIM_GenerateEvent_UPDATE
3238
  * @param  TIMx Timer instance
3239
  * @retval None
3240
  */
3241
__STATIC_INLINE void LL_TIM_GenerateEvent_UPDATE(TIM_TypeDef *TIMx)
3242
{
3243
  SET_BIT(TIMx->EGR, TIM_EGR_UG);
3244
}
3245
 
3246
/**
3247
  * @brief  Generate Capture/Compare 1 event.
3248
  * @rmtoll EGR          CC1G          LL_TIM_GenerateEvent_CC1
3249
  * @param  TIMx Timer instance
3250
  * @retval None
3251
  */
3252
__STATIC_INLINE void LL_TIM_GenerateEvent_CC1(TIM_TypeDef *TIMx)
3253
{
3254
  SET_BIT(TIMx->EGR, TIM_EGR_CC1G);
3255
}
3256
 
3257
/**
3258
  * @brief  Generate Capture/Compare 2 event.
3259
  * @rmtoll EGR          CC2G          LL_TIM_GenerateEvent_CC2
3260
  * @param  TIMx Timer instance
3261
  * @retval None
3262
  */
3263
__STATIC_INLINE void LL_TIM_GenerateEvent_CC2(TIM_TypeDef *TIMx)
3264
{
3265
  SET_BIT(TIMx->EGR, TIM_EGR_CC2G);
3266
}
3267
 
3268
/**
3269
  * @brief  Generate Capture/Compare 3 event.
3270
  * @rmtoll EGR          CC3G          LL_TIM_GenerateEvent_CC3
3271
  * @param  TIMx Timer instance
3272
  * @retval None
3273
  */
3274
__STATIC_INLINE void LL_TIM_GenerateEvent_CC3(TIM_TypeDef *TIMx)
3275
{
3276
  SET_BIT(TIMx->EGR, TIM_EGR_CC3G);
3277
}
3278
 
3279
/**
3280
  * @brief  Generate Capture/Compare 4 event.
3281
  * @rmtoll EGR          CC4G          LL_TIM_GenerateEvent_CC4
3282
  * @param  TIMx Timer instance
3283
  * @retval None
3284
  */
3285
__STATIC_INLINE void LL_TIM_GenerateEvent_CC4(TIM_TypeDef *TIMx)
3286
{
3287
  SET_BIT(TIMx->EGR, TIM_EGR_CC4G);
3288
}
3289
 
3290
/**
3291
  * @brief  Generate trigger event.
3292
  * @rmtoll EGR          TG            LL_TIM_GenerateEvent_TRIG
3293
  * @param  TIMx Timer instance
3294
  * @retval None
3295
  */
3296
__STATIC_INLINE void LL_TIM_GenerateEvent_TRIG(TIM_TypeDef *TIMx)
3297
{
3298
  SET_BIT(TIMx->EGR, TIM_EGR_TG);
3299
}
3300
 
3301
/**
3302
  * @}
3303
  */
3304
 
3305
#if defined(USE_FULL_LL_DRIVER)
3306
/** @defgroup TIM_LL_EF_Init Initialisation and deinitialisation functions
3307
  * @{
3308
  */
3309
 
3310
ErrorStatus LL_TIM_DeInit(const TIM_TypeDef *TIMx);
3311
void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct);
3312
ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, const LL_TIM_InitTypeDef *TIM_InitStruct);
3313
void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct);
3314
ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct);
3315
void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct);
3316
ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_IC_InitTypeDef *TIM_IC_InitStruct);
3317
void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct);
3318
ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, const LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct);
3319
/**
3320
  * @}
3321
  */
3322
#endif /* USE_FULL_LL_DRIVER */
3323
 
3324
/**
3325
  * @}
3326
  */
3327
 
3328
/**
3329
  * @}
3330
  */
3331
 
3332
#endif /* TIM2 || TIM3 || TIM4 || TIM5 || TIM9 || TIM10 || TIM11 TIM6 || TIM7 */
3333
 
3334
/**
3335
  * @}
3336
  */
3337
 
3338
#ifdef __cplusplus
3339
}
3340
#endif
3341
 
3342
#endif /* __STM32L1xx_LL_TIM_H */