STM32F4xx HAL Driver master
STM32CubeF4 HAL / LL Drivers API Reference
Loading...
Searching...
No Matches
stm32f4xx_ll_tim.h
Go to the documentation of this file.
1
18
19/* Define to prevent recursive inclusion -------------------------------------*/
20#ifndef __STM32F4xx_LL_TIM_H
21#define __STM32F4xx_LL_TIM_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/* Includes ------------------------------------------------------------------*/
28#include "stm32f4xx.h"
29
33
34#if defined (TIM1) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM5) || defined (TIM6) || defined (TIM7) || defined (TIM8) || defined (TIM9) || defined (TIM10) || defined (TIM11) || defined (TIM12) || defined (TIM13) || defined (TIM14)
35
39
40/* Private types -------------------------------------------------------------*/
41/* Private variables ---------------------------------------------------------*/
45static const uint8_t OFFSET_TAB_CCMRx[] =
46{
47 0x00U, /* 0: TIMx_CH1 */
48 0x00U, /* 1: TIMx_CH1N */
49 0x00U, /* 2: TIMx_CH2 */
50 0x00U, /* 3: TIMx_CH2N */
51 0x04U, /* 4: TIMx_CH3 */
52 0x04U, /* 5: TIMx_CH3N */
53 0x04U /* 6: TIMx_CH4 */
54};
55
56static 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
67static 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
78static const uint8_t SHIFT_TAB_CCxP[] =
79{
80 0U, /* 0: CC1P */
81 2U, /* 1: CC1NP */
82 4U, /* 2: CC2P */
83 6U, /* 3: CC2NP */
84 8U, /* 4: CC3P */
85 10U, /* 5: CC3NP */
86 12U /* 6: CC4P */
87};
88
89static const uint8_t SHIFT_TAB_OISx[] =
90{
91 0U, /* 0: OIS1 */
92 1U, /* 1: OIS1N */
93 2U, /* 2: OIS2 */
94 3U, /* 3: OIS2N */
95 4U, /* 4: OIS3 */
96 5U, /* 5: OIS3N */
97 6U /* 6: OIS4 */
98};
102
103/* Private constants ---------------------------------------------------------*/
107
108
109/* Remap mask definitions */
110#define TIMx_OR_RMP_SHIFT 16U
111#define TIMx_OR_RMP_MASK 0x0000FFFFU
112#define TIM2_OR_RMP_MASK (TIM_OR_ITR1_RMP << TIMx_OR_RMP_SHIFT)
113#define TIM5_OR_RMP_MASK (TIM_OR_TI4_RMP << TIMx_OR_RMP_SHIFT)
114#define TIM11_OR_RMP_MASK (TIM_OR_TI1_RMP << TIMx_OR_RMP_SHIFT)
115
116/* Mask used to set the TDG[x:0] of the DTG bits of the TIMx_BDTR register */
117#define DT_DELAY_1 ((uint8_t)0x7F)
118#define DT_DELAY_2 ((uint8_t)0x3F)
119#define DT_DELAY_3 ((uint8_t)0x1F)
120#define DT_DELAY_4 ((uint8_t)0x1F)
121
122/* Mask used to set the DTG[7:5] bits of the DTG bits of the TIMx_BDTR register */
123#define DT_RANGE_1 ((uint8_t)0x00)
124#define DT_RANGE_2 ((uint8_t)0x80)
125#define DT_RANGE_3 ((uint8_t)0xC0)
126#define DT_RANGE_4 ((uint8_t)0xE0)
127
128
132
133/* Private macros ------------------------------------------------------------*/
148#define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \
149 (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\
150 ((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\
151 ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\
152 ((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\
153 ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\
154 ((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U : 6U)
155
164#define TIM_CALC_DTS(__TIMCLK__, __CKD__) \
165 (((__CKD__) == LL_TIM_CLOCKDIVISION_DIV1) ? ((uint64_t)1000000000000U/(__TIMCLK__)) : \
166 ((__CKD__) == LL_TIM_CLOCKDIVISION_DIV2) ? ((uint64_t)1000000000000U/((__TIMCLK__) >> 1U)) : \
167 ((uint64_t)1000000000000U/((__TIMCLK__) >> 2U)))
171
172
173/* Exported types ------------------------------------------------------------*/
174#if defined(USE_FULL_LL_DRIVER)
178
182typedef struct
183{
184 uint16_t Prescaler;
189
190 uint32_t CounterMode;
195
196 uint32_t Autoreload;
204
205 uint32_t ClockDivision;
210
211 uint32_t RepetitionCounter;
224} LL_TIM_InitTypeDef;
225
229typedef struct
230{
231 uint32_t OCMode;
236
237 uint32_t OCState;
242
243 uint32_t OCNState;
248
249 uint32_t CompareValue;
254
255 uint32_t OCPolarity;
260
261 uint32_t OCNPolarity;
266
267
268 uint32_t OCIdleState;
273
274 uint32_t OCNIdleState;
279} LL_TIM_OC_InitTypeDef;
280
284
285typedef struct
286{
287
288 uint32_t ICPolarity;
293
294 uint32_t ICActiveInput;
299
300 uint32_t ICPrescaler;
305
306 uint32_t ICFilter;
311} LL_TIM_IC_InitTypeDef;
312
313
317typedef struct
318{
319 uint32_t EncoderMode;
324
325 uint32_t IC1Polarity;
330
331 uint32_t IC1ActiveInput;
336
337 uint32_t IC1Prescaler;
342
343 uint32_t IC1Filter;
348
349 uint32_t IC2Polarity;
354
355 uint32_t IC2ActiveInput;
360
361 uint32_t IC2Prescaler;
366
367 uint32_t IC2Filter;
372
373} LL_TIM_ENCODER_InitTypeDef;
374
378typedef struct
379{
380
381 uint32_t IC1Polarity;
386
387 uint32_t IC1Prescaler;
394
395 uint32_t IC1Filter;
401
402 uint32_t CommutationDelay;
409} LL_TIM_HALLSENSOR_InitTypeDef;
410
414typedef struct
415{
416 uint32_t OSSRState;
424
425 uint32_t OSSIState;
433
434 uint32_t LockLevel;
439
440 uint8_t DeadTime;
449
450 uint16_t BreakState;
458
459 uint32_t BreakPolarity;
467
468
469 uint32_t AutomaticOutput;
477} LL_TIM_BDTR_InitTypeDef;
478
482#endif /* USE_FULL_LL_DRIVER */
483
484/* Exported constants --------------------------------------------------------*/
488
493#define LL_TIM_SR_UIF TIM_SR_UIF
494#define LL_TIM_SR_CC1IF TIM_SR_CC1IF
495#define LL_TIM_SR_CC2IF TIM_SR_CC2IF
496#define LL_TIM_SR_CC3IF TIM_SR_CC3IF
497#define LL_TIM_SR_CC4IF TIM_SR_CC4IF
498#define LL_TIM_SR_COMIF TIM_SR_COMIF
499#define LL_TIM_SR_TIF TIM_SR_TIF
500#define LL_TIM_SR_BIF TIM_SR_BIF
501#define LL_TIM_SR_CC1OF TIM_SR_CC1OF
502#define LL_TIM_SR_CC2OF TIM_SR_CC2OF
503#define LL_TIM_SR_CC3OF TIM_SR_CC3OF
504#define LL_TIM_SR_CC4OF TIM_SR_CC4OF
508
509#if defined(USE_FULL_LL_DRIVER)
513#define LL_TIM_BREAK_DISABLE 0x00000000U
514#define LL_TIM_BREAK_ENABLE TIM_BDTR_BKE
518
522#define LL_TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U
523#define LL_TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE
527#endif /* USE_FULL_LL_DRIVER */
528
533#define LL_TIM_DIER_UIE TIM_DIER_UIE
534#define LL_TIM_DIER_CC1IE TIM_DIER_CC1IE
535#define LL_TIM_DIER_CC2IE TIM_DIER_CC2IE
536#define LL_TIM_DIER_CC3IE TIM_DIER_CC3IE
537#define LL_TIM_DIER_CC4IE TIM_DIER_CC4IE
538#define LL_TIM_DIER_COMIE TIM_DIER_COMIE
539#define LL_TIM_DIER_TIE TIM_DIER_TIE
540#define LL_TIM_DIER_BIE TIM_DIER_BIE
544
548#define LL_TIM_UPDATESOURCE_REGULAR 0x00000000U
549#define LL_TIM_UPDATESOURCE_COUNTER TIM_CR1_URS
553
557#define LL_TIM_ONEPULSEMODE_SINGLE TIM_CR1_OPM
558#define LL_TIM_ONEPULSEMODE_REPETITIVE 0x00000000U
562
566#define LL_TIM_COUNTERMODE_UP 0x00000000U
567#define LL_TIM_COUNTERMODE_DOWN TIM_CR1_DIR
568#define LL_TIM_COUNTERMODE_CENTER_DOWN TIM_CR1_CMS_0
569#define LL_TIM_COUNTERMODE_CENTER_UP TIM_CR1_CMS_1
570#define LL_TIM_COUNTERMODE_CENTER_UP_DOWN TIM_CR1_CMS
574
578#define LL_TIM_CLOCKDIVISION_DIV1 0x00000000U
579#define LL_TIM_CLOCKDIVISION_DIV2 TIM_CR1_CKD_0
580#define LL_TIM_CLOCKDIVISION_DIV4 TIM_CR1_CKD_1
584
588#define LL_TIM_COUNTERDIRECTION_UP 0x00000000U
589#define LL_TIM_COUNTERDIRECTION_DOWN TIM_CR1_DIR
593
597#define LL_TIM_CCUPDATESOURCE_COMG_ONLY 0x00000000U
598#define LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI TIM_CR2_CCUS
602
606#define LL_TIM_CCDMAREQUEST_CC 0x00000000U
607#define LL_TIM_CCDMAREQUEST_UPDATE TIM_CR2_CCDS
611
615#define LL_TIM_LOCKLEVEL_OFF 0x00000000U
616#define LL_TIM_LOCKLEVEL_1 TIM_BDTR_LOCK_0
617#define LL_TIM_LOCKLEVEL_2 TIM_BDTR_LOCK_1
618#define LL_TIM_LOCKLEVEL_3 TIM_BDTR_LOCK
622
626#define LL_TIM_CHANNEL_CH1 TIM_CCER_CC1E
627#define LL_TIM_CHANNEL_CH1N TIM_CCER_CC1NE
628#define LL_TIM_CHANNEL_CH2 TIM_CCER_CC2E
629#define LL_TIM_CHANNEL_CH2N TIM_CCER_CC2NE
630#define LL_TIM_CHANNEL_CH3 TIM_CCER_CC3E
631#define LL_TIM_CHANNEL_CH3N TIM_CCER_CC3NE
632#define LL_TIM_CHANNEL_CH4 TIM_CCER_CC4E
636
637#if defined(USE_FULL_LL_DRIVER)
641#define LL_TIM_OCSTATE_DISABLE 0x00000000U
642#define LL_TIM_OCSTATE_ENABLE TIM_CCER_CC1E
646#endif /* USE_FULL_LL_DRIVER */
647
651#define LL_TIM_OCMODE_FROZEN 0x00000000U
652#define LL_TIM_OCMODE_ACTIVE TIM_CCMR1_OC1M_0
653#define LL_TIM_OCMODE_INACTIVE TIM_CCMR1_OC1M_1
654#define LL_TIM_OCMODE_TOGGLE (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0)
655#define LL_TIM_OCMODE_FORCED_INACTIVE TIM_CCMR1_OC1M_2
656#define LL_TIM_OCMODE_FORCED_ACTIVE (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0)
657#define LL_TIM_OCMODE_PWM1 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1)
658#define LL_TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0)
662
666#define LL_TIM_OCPOLARITY_HIGH 0x00000000U
667#define LL_TIM_OCPOLARITY_LOW TIM_CCER_CC1P
671
675#define LL_TIM_OCIDLESTATE_LOW 0x00000000U
676#define LL_TIM_OCIDLESTATE_HIGH TIM_CR2_OIS1
680
681
685#define LL_TIM_ACTIVEINPUT_DIRECTTI (TIM_CCMR1_CC1S_0 << 16U)
686#define LL_TIM_ACTIVEINPUT_INDIRECTTI (TIM_CCMR1_CC1S_1 << 16U)
687#define LL_TIM_ACTIVEINPUT_TRC (TIM_CCMR1_CC1S << 16U)
691
695#define LL_TIM_ICPSC_DIV1 0x00000000U
696#define LL_TIM_ICPSC_DIV2 (TIM_CCMR1_IC1PSC_0 << 16U)
697#define LL_TIM_ICPSC_DIV4 (TIM_CCMR1_IC1PSC_1 << 16U)
698#define LL_TIM_ICPSC_DIV8 (TIM_CCMR1_IC1PSC << 16U)
702
706#define LL_TIM_IC_FILTER_FDIV1 0x00000000U
707#define LL_TIM_IC_FILTER_FDIV1_N2 (TIM_CCMR1_IC1F_0 << 16U)
708#define LL_TIM_IC_FILTER_FDIV1_N4 (TIM_CCMR1_IC1F_1 << 16U)
709#define LL_TIM_IC_FILTER_FDIV1_N8 ((TIM_CCMR1_IC1F_1 | TIM_CCMR1_IC1F_0) << 16U)
710#define LL_TIM_IC_FILTER_FDIV2_N6 (TIM_CCMR1_IC1F_2 << 16U)
711#define LL_TIM_IC_FILTER_FDIV2_N8 ((TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_0) << 16U)
712#define LL_TIM_IC_FILTER_FDIV4_N6 ((TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_1) << 16U)
713#define LL_TIM_IC_FILTER_FDIV4_N8 ((TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_1 | TIM_CCMR1_IC1F_0) << 16U)
714#define LL_TIM_IC_FILTER_FDIV8_N6 (TIM_CCMR1_IC1F_3 << 16U)
715#define LL_TIM_IC_FILTER_FDIV8_N8 ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_0) << 16U)
716#define LL_TIM_IC_FILTER_FDIV16_N5 ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_1) << 16U)
717#define LL_TIM_IC_FILTER_FDIV16_N6 ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_1 | TIM_CCMR1_IC1F_0) << 16U)
718#define LL_TIM_IC_FILTER_FDIV16_N8 ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_2) << 16U)
719#define LL_TIM_IC_FILTER_FDIV32_N5 ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_0) << 16U)
720#define LL_TIM_IC_FILTER_FDIV32_N6 ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_1) << 16U)
721#define LL_TIM_IC_FILTER_FDIV32_N8 (TIM_CCMR1_IC1F << 16U)
725
729#define LL_TIM_IC_POLARITY_RISING 0x00000000U
730#define LL_TIM_IC_POLARITY_FALLING TIM_CCER_CC1P
731#define LL_TIM_IC_POLARITY_BOTHEDGE (TIM_CCER_CC1P | TIM_CCER_CC1NP)
735
739#define LL_TIM_CLOCKSOURCE_INTERNAL 0x00000000U
740#define LL_TIM_CLOCKSOURCE_EXT_MODE1 (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0)
741#define LL_TIM_CLOCKSOURCE_EXT_MODE2 TIM_SMCR_ECE
745
749#define LL_TIM_ENCODERMODE_X2_TI1 TIM_SMCR_SMS_0
750#define LL_TIM_ENCODERMODE_X2_TI2 TIM_SMCR_SMS_1
751#define LL_TIM_ENCODERMODE_X4_TI12 (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0)
755
759#define LL_TIM_TRGO_RESET 0x00000000U
760#define LL_TIM_TRGO_ENABLE TIM_CR2_MMS_0
761#define LL_TIM_TRGO_UPDATE TIM_CR2_MMS_1
762#define LL_TIM_TRGO_CC1IF (TIM_CR2_MMS_1 | TIM_CR2_MMS_0)
763#define LL_TIM_TRGO_OC1REF TIM_CR2_MMS_2
764#define LL_TIM_TRGO_OC2REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_0)
765#define LL_TIM_TRGO_OC3REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1)
766#define LL_TIM_TRGO_OC4REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0)
770
771
775#define LL_TIM_SLAVEMODE_DISABLED 0x00000000U
776#define LL_TIM_SLAVEMODE_RESET TIM_SMCR_SMS_2
777#define LL_TIM_SLAVEMODE_GATED (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0)
778#define LL_TIM_SLAVEMODE_TRIGGER (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1)
782
786#define LL_TIM_TS_ITR0 0x00000000U
787#define LL_TIM_TS_ITR1 TIM_SMCR_TS_0
788#define LL_TIM_TS_ITR2 TIM_SMCR_TS_1
789#define LL_TIM_TS_ITR3 (TIM_SMCR_TS_0 | TIM_SMCR_TS_1)
790#define LL_TIM_TS_TI1F_ED TIM_SMCR_TS_2
791#define LL_TIM_TS_TI1FP1 (TIM_SMCR_TS_2 | TIM_SMCR_TS_0)
792#define LL_TIM_TS_TI2FP2 (TIM_SMCR_TS_2 | TIM_SMCR_TS_1)
793#define LL_TIM_TS_ETRF (TIM_SMCR_TS_2 | TIM_SMCR_TS_1 | TIM_SMCR_TS_0)
797
801#define LL_TIM_ETR_POLARITY_NONINVERTED 0x00000000U
802#define LL_TIM_ETR_POLARITY_INVERTED TIM_SMCR_ETP
806
810#define LL_TIM_ETR_PRESCALER_DIV1 0x00000000U
811#define LL_TIM_ETR_PRESCALER_DIV2 TIM_SMCR_ETPS_0
812#define LL_TIM_ETR_PRESCALER_DIV4 TIM_SMCR_ETPS_1
813#define LL_TIM_ETR_PRESCALER_DIV8 TIM_SMCR_ETPS
817
821#define LL_TIM_ETR_FILTER_FDIV1 0x00000000U
822#define LL_TIM_ETR_FILTER_FDIV1_N2 TIM_SMCR_ETF_0
823#define LL_TIM_ETR_FILTER_FDIV1_N4 TIM_SMCR_ETF_1
824#define LL_TIM_ETR_FILTER_FDIV1_N8 (TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0)
825#define LL_TIM_ETR_FILTER_FDIV2_N6 TIM_SMCR_ETF_2
826#define LL_TIM_ETR_FILTER_FDIV2_N8 (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_0)
827#define LL_TIM_ETR_FILTER_FDIV4_N6 (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1)
828#define LL_TIM_ETR_FILTER_FDIV4_N8 (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0)
829#define LL_TIM_ETR_FILTER_FDIV8_N6 TIM_SMCR_ETF_3
830#define LL_TIM_ETR_FILTER_FDIV8_N8 (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_0)
831#define LL_TIM_ETR_FILTER_FDIV16_N5 (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_1)
832#define LL_TIM_ETR_FILTER_FDIV16_N6 (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0)
833#define LL_TIM_ETR_FILTER_FDIV16_N8 (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2)
834#define LL_TIM_ETR_FILTER_FDIV32_N5 (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2 | TIM_SMCR_ETF_0)
835#define LL_TIM_ETR_FILTER_FDIV32_N6 (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1)
836#define LL_TIM_ETR_FILTER_FDIV32_N8 TIM_SMCR_ETF
840
841
845#define LL_TIM_BREAK_POLARITY_LOW 0x00000000U
846#define LL_TIM_BREAK_POLARITY_HIGH TIM_BDTR_BKP
850
851
855#define LL_TIM_OSSI_DISABLE 0x00000000U
856#define LL_TIM_OSSI_ENABLE TIM_BDTR_OSSI
860
864#define LL_TIM_OSSR_DISABLE 0x00000000U
865#define LL_TIM_OSSR_ENABLE TIM_BDTR_OSSR
869
870
874#define LL_TIM_DMABURST_BASEADDR_CR1 0x00000000U
875#define LL_TIM_DMABURST_BASEADDR_CR2 TIM_DCR_DBA_0
876#define LL_TIM_DMABURST_BASEADDR_SMCR TIM_DCR_DBA_1
877#define LL_TIM_DMABURST_BASEADDR_DIER (TIM_DCR_DBA_1 | TIM_DCR_DBA_0)
878#define LL_TIM_DMABURST_BASEADDR_SR TIM_DCR_DBA_2
879#define LL_TIM_DMABURST_BASEADDR_EGR (TIM_DCR_DBA_2 | TIM_DCR_DBA_0)
880#define LL_TIM_DMABURST_BASEADDR_CCMR1 (TIM_DCR_DBA_2 | TIM_DCR_DBA_1)
881#define LL_TIM_DMABURST_BASEADDR_CCMR2 (TIM_DCR_DBA_2 | TIM_DCR_DBA_1 | TIM_DCR_DBA_0)
882#define LL_TIM_DMABURST_BASEADDR_CCER TIM_DCR_DBA_3
883#define LL_TIM_DMABURST_BASEADDR_CNT (TIM_DCR_DBA_3 | TIM_DCR_DBA_0)
884#define LL_TIM_DMABURST_BASEADDR_PSC (TIM_DCR_DBA_3 | TIM_DCR_DBA_1)
885#define LL_TIM_DMABURST_BASEADDR_ARR (TIM_DCR_DBA_3 | TIM_DCR_DBA_1 | TIM_DCR_DBA_0)
886#define LL_TIM_DMABURST_BASEADDR_RCR (TIM_DCR_DBA_3 | TIM_DCR_DBA_2)
887#define LL_TIM_DMABURST_BASEADDR_CCR1 (TIM_DCR_DBA_3 | TIM_DCR_DBA_2 | TIM_DCR_DBA_0)
888#define LL_TIM_DMABURST_BASEADDR_CCR2 (TIM_DCR_DBA_3 | TIM_DCR_DBA_2 | TIM_DCR_DBA_1)
889#define LL_TIM_DMABURST_BASEADDR_CCR3 (TIM_DCR_DBA_3 | TIM_DCR_DBA_2 | TIM_DCR_DBA_1 | TIM_DCR_DBA_0)
890#define LL_TIM_DMABURST_BASEADDR_CCR4 TIM_DCR_DBA_4
891#define LL_TIM_DMABURST_BASEADDR_BDTR (TIM_DCR_DBA_4 | TIM_DCR_DBA_0)
895
899#define LL_TIM_DMABURST_LENGTH_1TRANSFER 0x00000000U
900#define LL_TIM_DMABURST_LENGTH_2TRANSFERS TIM_DCR_DBL_0
901#define LL_TIM_DMABURST_LENGTH_3TRANSFERS TIM_DCR_DBL_1
902#define LL_TIM_DMABURST_LENGTH_4TRANSFERS (TIM_DCR_DBL_1 | TIM_DCR_DBL_0)
903#define LL_TIM_DMABURST_LENGTH_5TRANSFERS TIM_DCR_DBL_2
904#define LL_TIM_DMABURST_LENGTH_6TRANSFERS (TIM_DCR_DBL_2 | TIM_DCR_DBL_0)
905#define LL_TIM_DMABURST_LENGTH_7TRANSFERS (TIM_DCR_DBL_2 | TIM_DCR_DBL_1)
906#define LL_TIM_DMABURST_LENGTH_8TRANSFERS (TIM_DCR_DBL_2 | TIM_DCR_DBL_1 | TIM_DCR_DBL_0)
907#define LL_TIM_DMABURST_LENGTH_9TRANSFERS TIM_DCR_DBL_3
908#define LL_TIM_DMABURST_LENGTH_10TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_0)
909#define LL_TIM_DMABURST_LENGTH_11TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_1)
910#define LL_TIM_DMABURST_LENGTH_12TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_1 | TIM_DCR_DBL_0)
911#define LL_TIM_DMABURST_LENGTH_13TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_2)
912#define LL_TIM_DMABURST_LENGTH_14TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_2 | TIM_DCR_DBL_0)
913#define LL_TIM_DMABURST_LENGTH_15TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_2 | TIM_DCR_DBL_1)
914#define LL_TIM_DMABURST_LENGTH_16TRANSFERS (TIM_DCR_DBL_3 | TIM_DCR_DBL_2 | TIM_DCR_DBL_1 | TIM_DCR_DBL_0)
915#define LL_TIM_DMABURST_LENGTH_17TRANSFERS TIM_DCR_DBL_4
916#define LL_TIM_DMABURST_LENGTH_18TRANSFERS (TIM_DCR_DBL_4 | TIM_DCR_DBL_0)
920
921
925#define LL_TIM_TIM2_ITR1_RMP_TIM8_TRGO TIM2_OR_RMP_MASK
926#define LL_TIM_TIM2_ITR1_RMP_ETH_PTP (TIM_OR_ITR1_RMP_0 | TIM2_OR_RMP_MASK)
927#define LL_TIM_TIM2_ITR1_RMP_OTG_FS_SOF (TIM_OR_ITR1_RMP_1 | TIM2_OR_RMP_MASK)
928#define LL_TIM_TIM2_ITR1_RMP_OTG_HS_SOF (TIM_OR_ITR1_RMP | TIM2_OR_RMP_MASK)
932
936#define LL_TIM_TIM5_TI4_RMP_GPIO TIM5_OR_RMP_MASK
937#define LL_TIM_TIM5_TI4_RMP_LSI (TIM_OR_TI4_RMP_0 | TIM5_OR_RMP_MASK)
938#define LL_TIM_TIM5_TI4_RMP_LSE (TIM_OR_TI4_RMP_1 | TIM5_OR_RMP_MASK)
939#define LL_TIM_TIM5_TI4_RMP_RTC (TIM_OR_TI4_RMP | TIM5_OR_RMP_MASK)
943
947#define LL_TIM_TIM11_TI1_RMP_GPIO TIM11_OR_RMP_MASK
948#if defined(SPDIFRX)
949#define LL_TIM_TIM11_TI1_RMP_SPDIFRX (TIM_OR_TI1_RMP_0 | TIM11_OR_RMP_MASK)
950
951/* Legacy define */
952#define LL_TIM_TIM11_TI1_RMP_GPIO1 LL_TIM_TIM11_TI1_RMP_SPDIFRX
953
954#else
955#define LL_TIM_TIM11_TI1_RMP_GPIO1 (TIM_OR_TI1_RMP_0 | TIM11_OR_RMP_MASK)
956#endif /* SPDIFRX */
957#define LL_TIM_TIM11_TI1_RMP_GPIO2 (TIM_OR_TI1_RMP | TIM11_OR_RMP_MASK)
958#define LL_TIM_TIM11_TI1_RMP_HSE_RTC (TIM_OR_TI1_RMP_1 | TIM11_OR_RMP_MASK)
962#if defined(LPTIM_OR_TIM1_ITR2_RMP) && defined(LPTIM_OR_TIM5_ITR1_RMP) && defined(LPTIM_OR_TIM9_ITR1_RMP)
963
964#define LL_TIM_LPTIM_REMAP_MASK 0x10000000U
965
966#define LL_TIM_TIM9_ITR1_RMP_TIM3_TRGO LL_TIM_LPTIM_REMAP_MASK
967#define LL_TIM_TIM9_ITR1_RMP_LPTIM (LL_TIM_LPTIM_REMAP_MASK | LPTIM_OR_TIM9_ITR1_RMP)
968
969#define LL_TIM_TIM5_ITR1_RMP_TIM3_TRGO LL_TIM_LPTIM_REMAP_MASK
970#define LL_TIM_TIM5_ITR1_RMP_LPTIM (LL_TIM_LPTIM_REMAP_MASK | LPTIM_OR_TIM5_ITR1_RMP)
971
972#define LL_TIM_TIM1_ITR2_RMP_TIM3_TRGO LL_TIM_LPTIM_REMAP_MASK
973#define LL_TIM_TIM1_ITR2_RMP_LPTIM (LL_TIM_LPTIM_REMAP_MASK | LPTIM_OR_TIM1_ITR2_RMP)
974
975#endif /* LPTIM_OR_TIM1_ITR2_RMP && LPTIM_OR_TIM5_ITR1_RMP && LPTIM_OR_TIM9_ITR1_RMP */
976
977
981
982/* Exported macro ------------------------------------------------------------*/
986
997#define LL_TIM_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
998
1005#define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__)
1009
1021#define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__) \
1022 ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \
1023 (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__))) & DT_DELAY_1) : \
1024 (((uint64_t)((__DT__)*1000U)) < ((64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \
1025 (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), \
1026 (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) :\
1027 (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \
1028 (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), \
1029 (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) :\
1030 (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \
1031 (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), \
1032 (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) :\
1033 0U)
1034
1042#define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__) \
1043 (((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)((((__TIMCLK__) + (__CNTCLK__)/2U)/(__CNTCLK__)) - 1U) : 0U)
1044
1053#define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \
1054 ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U))) - 1U) : 0U)
1055
1065#define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__) \
1066 ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \
1067 / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U))))
1068
1079#define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__) \
1080 ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \
1081 + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__))))
1082
1093#define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__) \
1094 ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos)))
1095
1096
1100
1101/* Exported functions --------------------------------------------------------*/
1105
1115__STATIC_INLINE void LL_TIM_EnableCounter(TIM_TypeDef *TIMx)
1116{
1117 SET_BIT(TIMx->CR1, TIM_CR1_CEN);
1118}
1119
1126__STATIC_INLINE void LL_TIM_DisableCounter(TIM_TypeDef *TIMx)
1127{
1128 CLEAR_BIT(TIMx->CR1, TIM_CR1_CEN);
1129}
1130
1137__STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(const TIM_TypeDef *TIMx)
1138{
1139 return ((READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN)) ? 1UL : 0UL);
1140}
1141
1148__STATIC_INLINE void LL_TIM_EnableUpdateEvent(TIM_TypeDef *TIMx)
1149{
1150 CLEAR_BIT(TIMx->CR1, TIM_CR1_UDIS);
1151}
1152
1159__STATIC_INLINE void LL_TIM_DisableUpdateEvent(TIM_TypeDef *TIMx)
1160{
1161 SET_BIT(TIMx->CR1, TIM_CR1_UDIS);
1162}
1163
1170__STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(const TIM_TypeDef *TIMx)
1171{
1172 return ((READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == (uint32_t)RESET) ? 1UL : 0UL);
1173}
1174
1191__STATIC_INLINE void LL_TIM_SetUpdateSource(TIM_TypeDef *TIMx, uint32_t UpdateSource)
1192{
1193 MODIFY_REG(TIMx->CR1, TIM_CR1_URS, UpdateSource);
1194}
1195
1204__STATIC_INLINE uint32_t LL_TIM_GetUpdateSource(const TIM_TypeDef *TIMx)
1205{
1206 return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_URS));
1207}
1208
1218__STATIC_INLINE void LL_TIM_SetOnePulseMode(TIM_TypeDef *TIMx, uint32_t OnePulseMode)
1219{
1220 MODIFY_REG(TIMx->CR1, TIM_CR1_OPM, OnePulseMode);
1221}
1222
1231__STATIC_INLINE uint32_t LL_TIM_GetOnePulseMode(const TIM_TypeDef *TIMx)
1232{
1233 return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM));
1234}
1235
1255__STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode)
1256{
1257 MODIFY_REG(TIMx->CR1, (TIM_CR1_DIR | TIM_CR1_CMS), CounterMode);
1258}
1259
1275__STATIC_INLINE uint32_t LL_TIM_GetCounterMode(const TIM_TypeDef *TIMx)
1276{
1277 uint32_t counter_mode;
1278
1279 counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CMS));
1280
1281 if (counter_mode == 0U)
1282 {
1283 counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR));
1284 }
1285
1286 return counter_mode;
1287}
1288
1295__STATIC_INLINE void LL_TIM_EnableARRPreload(TIM_TypeDef *TIMx)
1296{
1297 SET_BIT(TIMx->CR1, TIM_CR1_ARPE);
1298}
1299
1306__STATIC_INLINE void LL_TIM_DisableARRPreload(TIM_TypeDef *TIMx)
1307{
1308 CLEAR_BIT(TIMx->CR1, TIM_CR1_ARPE);
1309}
1310
1317__STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(const TIM_TypeDef *TIMx)
1318{
1319 return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL);
1320}
1321
1336__STATIC_INLINE void LL_TIM_SetClockDivision(TIM_TypeDef *TIMx, uint32_t ClockDivision)
1337{
1338 MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision);
1339}
1340
1354__STATIC_INLINE uint32_t LL_TIM_GetClockDivision(const TIM_TypeDef *TIMx)
1355{
1356 return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CKD));
1357}
1358
1368__STATIC_INLINE void LL_TIM_SetCounter(TIM_TypeDef *TIMx, uint32_t Counter)
1369{
1370 WRITE_REG(TIMx->CNT, Counter);
1371}
1372
1381__STATIC_INLINE uint32_t LL_TIM_GetCounter(const TIM_TypeDef *TIMx)
1382{
1383 return (uint32_t)(READ_REG(TIMx->CNT));
1384}
1385
1394__STATIC_INLINE uint32_t LL_TIM_GetDirection(const TIM_TypeDef *TIMx)
1395{
1396 return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR));
1397}
1398
1410__STATIC_INLINE void LL_TIM_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Prescaler)
1411{
1412 WRITE_REG(TIMx->PSC, Prescaler);
1413}
1414
1421__STATIC_INLINE uint32_t LL_TIM_GetPrescaler(const TIM_TypeDef *TIMx)
1422{
1423 return (uint32_t)(READ_REG(TIMx->PSC));
1424}
1425
1437__STATIC_INLINE void LL_TIM_SetAutoReload(TIM_TypeDef *TIMx, uint32_t AutoReload)
1438{
1439 WRITE_REG(TIMx->ARR, AutoReload);
1440}
1441
1450__STATIC_INLINE uint32_t LL_TIM_GetAutoReload(const TIM_TypeDef *TIMx)
1451{
1452 return (uint32_t)(READ_REG(TIMx->ARR));
1453}
1454
1464__STATIC_INLINE void LL_TIM_SetRepetitionCounter(TIM_TypeDef *TIMx, uint32_t RepetitionCounter)
1465{
1466 WRITE_REG(TIMx->RCR, RepetitionCounter);
1467}
1468
1477__STATIC_INLINE uint32_t LL_TIM_GetRepetitionCounter(const TIM_TypeDef *TIMx)
1478{
1479 return (uint32_t)(READ_REG(TIMx->RCR));
1480}
1481
1485
1500__STATIC_INLINE void LL_TIM_CC_EnablePreload(TIM_TypeDef *TIMx)
1501{
1502 SET_BIT(TIMx->CR2, TIM_CR2_CCPC);
1503}
1504
1513__STATIC_INLINE void LL_TIM_CC_DisablePreload(TIM_TypeDef *TIMx)
1514{
1515 CLEAR_BIT(TIMx->CR2, TIM_CR2_CCPC);
1516}
1517
1524__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledPreload(const TIM_TypeDef *TIMx)
1525{
1526 return ((READ_BIT(TIMx->CR2, TIM_CR2_CCPC) == (TIM_CR2_CCPC)) ? 1UL : 0UL);
1527}
1528
1540__STATIC_INLINE void LL_TIM_CC_SetUpdate(TIM_TypeDef *TIMx, uint32_t CCUpdateSource)
1541{
1542 MODIFY_REG(TIMx->CR2, TIM_CR2_CCUS, CCUpdateSource);
1543}
1544
1554__STATIC_INLINE void LL_TIM_CC_SetDMAReqTrigger(TIM_TypeDef *TIMx, uint32_t DMAReqTrigger)
1555{
1556 MODIFY_REG(TIMx->CR2, TIM_CR2_CCDS, DMAReqTrigger);
1557}
1558
1567__STATIC_INLINE uint32_t LL_TIM_CC_GetDMAReqTrigger(const TIM_TypeDef *TIMx)
1568{
1569 return (uint32_t)(READ_BIT(TIMx->CR2, TIM_CR2_CCDS));
1570}
1571
1586__STATIC_INLINE void LL_TIM_CC_SetLockLevel(TIM_TypeDef *TIMx, uint32_t LockLevel)
1587{
1588 MODIFY_REG(TIMx->BDTR, TIM_BDTR_LOCK, LockLevel);
1589}
1590
1611__STATIC_INLINE void LL_TIM_CC_EnableChannel(TIM_TypeDef *TIMx, uint32_t Channels)
1612{
1613 SET_BIT(TIMx->CCER, Channels);
1614}
1615
1636__STATIC_INLINE void LL_TIM_CC_DisableChannel(TIM_TypeDef *TIMx, uint32_t Channels)
1637{
1638 CLEAR_BIT(TIMx->CCER, Channels);
1639}
1640
1661__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(const TIM_TypeDef *TIMx, uint32_t Channels)
1662{
1663 return ((READ_BIT(TIMx->CCER, Channels) == (Channels)) ? 1UL : 0UL);
1664}
1665
1669
1698__STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
1699{
1700 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1701 __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1702 CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel]));
1703 MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),
1704 (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]);
1705 MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]),
1706 (Configuration & TIM_CR2_OIS1) << SHIFT_TAB_OISx[iChannel]);
1707}
1708
1733__STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode)
1734{
1735 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1736 __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1737 MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT_TAB_OCxx[iChannel]);
1738}
1739
1762__STATIC_INLINE uint32_t LL_TIM_OC_GetMode(const TIM_TypeDef *TIMx, uint32_t Channel)
1763{
1764 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1765 const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1766 return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]);
1767}
1768
1792__STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity)
1793{
1794 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1795 MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), Polarity << SHIFT_TAB_CCxP[iChannel]);
1796}
1797
1820__STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel)
1821{
1822 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1823 return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChannel]);
1824}
1825
1853__STATIC_INLINE void LL_TIM_OC_SetIdleState(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t IdleState)
1854{
1855 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1856 MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), IdleState << SHIFT_TAB_OISx[iChannel]);
1857}
1858
1881__STATIC_INLINE uint32_t LL_TIM_OC_GetIdleState(const TIM_TypeDef *TIMx, uint32_t Channel)
1882{
1883 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1884 return (READ_BIT(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel])) >> SHIFT_TAB_OISx[iChannel]);
1885}
1886
1902__STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1903{
1904 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1905 __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1906 SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1907
1908}
1909
1924__STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1925{
1926 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1927 __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1928 CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1929
1930}
1931
1946__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(const TIM_TypeDef *TIMx, uint32_t Channel)
1947{
1948 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1949 const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1950 uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel];
1951 return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
1952}
1953
1968__STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1969{
1970 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1971 __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1972 SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1973}
1974
1989__STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1990{
1991 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1992 __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1993 CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1994}
1995
2010__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(const TIM_TypeDef *TIMx, uint32_t Channel)
2011{
2012 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2013 const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2014 uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel];
2015 return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
2016}
2017
2035__STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel)
2036{
2037 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2038 __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2039 SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
2040}
2041
2058__STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel)
2059{
2060 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2061 __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2062 CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
2063}
2064
2083__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(const TIM_TypeDef *TIMx, uint32_t Channel)
2084{
2085 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2086 const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2087 uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel];
2088 return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
2089}
2090
2102__STATIC_INLINE void LL_TIM_OC_SetDeadTime(TIM_TypeDef *TIMx, uint32_t DeadTime)
2103{
2104 MODIFY_REG(TIMx->BDTR, TIM_BDTR_DTG, DeadTime);
2105}
2106
2119__STATIC_INLINE void LL_TIM_OC_SetCompareCH1(TIM_TypeDef *TIMx, uint32_t CompareValue)
2120{
2121 WRITE_REG(TIMx->CCR1, CompareValue);
2122}
2123
2136__STATIC_INLINE void LL_TIM_OC_SetCompareCH2(TIM_TypeDef *TIMx, uint32_t CompareValue)
2137{
2138 WRITE_REG(TIMx->CCR2, CompareValue);
2139}
2140
2153__STATIC_INLINE void LL_TIM_OC_SetCompareCH3(TIM_TypeDef *TIMx, uint32_t CompareValue)
2154{
2155 WRITE_REG(TIMx->CCR3, CompareValue);
2156}
2157
2170__STATIC_INLINE void LL_TIM_OC_SetCompareCH4(TIM_TypeDef *TIMx, uint32_t CompareValue)
2171{
2172 WRITE_REG(TIMx->CCR4, CompareValue);
2173}
2174
2186__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH1(const TIM_TypeDef *TIMx)
2187{
2188 return (uint32_t)(READ_REG(TIMx->CCR1));
2189}
2190
2202__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH2(const TIM_TypeDef *TIMx)
2203{
2204 return (uint32_t)(READ_REG(TIMx->CCR2));
2205}
2206
2218__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH3(const TIM_TypeDef *TIMx)
2219{
2220 return (uint32_t)(READ_REG(TIMx->CCR3));
2221}
2222
2234__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH4(const TIM_TypeDef *TIMx)
2235{
2236 return (uint32_t)(READ_REG(TIMx->CCR4));
2237}
2238
2242
2281__STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
2282{
2283 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2284 __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2285 MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]),
2286 ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S)) \
2287 << SHIFT_TAB_ICxx[iChannel]);
2288 MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
2289 (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]);
2290}
2291
2310__STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiveInput)
2311{
2312 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2313 __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2314 MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT_TAB_ICxx[iChannel]);
2315}
2316
2334__STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(const TIM_TypeDef *TIMx, uint32_t Channel)
2335{
2336 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2337 const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2338 return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2339}
2340
2360__STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescaler)
2361{
2362 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2363 __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2364 MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT_TAB_ICxx[iChannel]);
2365}
2366
2385__STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(const TIM_TypeDef *TIMx, uint32_t Channel)
2386{
2387 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2388 const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2389 return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2390}
2391
2423__STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter)
2424{
2425 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2426 __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2427 MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ICxx[iChannel]);
2428}
2429
2460__STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(const TIM_TypeDef *TIMx, uint32_t Channel)
2461{
2462 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2463 const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2464 return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2465}
2466
2489__STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity)
2490{
2491 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2492 MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
2493 ICPolarity << SHIFT_TAB_CCxP[iChannel]);
2494}
2495
2517__STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel)
2518{
2519 uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2520 return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >>
2521 SHIFT_TAB_CCxP[iChannel]);
2522}
2523
2532__STATIC_INLINE void LL_TIM_IC_EnableXORCombination(TIM_TypeDef *TIMx)
2533{
2534 SET_BIT(TIMx->CR2, TIM_CR2_TI1S);
2535}
2536
2545__STATIC_INLINE void LL_TIM_IC_DisableXORCombination(TIM_TypeDef *TIMx)
2546{
2547 CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S);
2548}
2549
2558__STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(const TIM_TypeDef *TIMx)
2559{
2560 return ((READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S)) ? 1UL : 0UL);
2561}
2562
2574__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH1(const TIM_TypeDef *TIMx)
2575{
2576 return (uint32_t)(READ_REG(TIMx->CCR1));
2577}
2578
2590__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH2(const TIM_TypeDef *TIMx)
2591{
2592 return (uint32_t)(READ_REG(TIMx->CCR2));
2593}
2594
2606__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH3(const TIM_TypeDef *TIMx)
2607{
2608 return (uint32_t)(READ_REG(TIMx->CCR3));
2609}
2610
2622__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH4(const TIM_TypeDef *TIMx)
2623{
2624 return (uint32_t)(READ_REG(TIMx->CCR4));
2625}
2626
2630
2643__STATIC_INLINE void LL_TIM_EnableExternalClock(TIM_TypeDef *TIMx)
2644{
2645 SET_BIT(TIMx->SMCR, TIM_SMCR_ECE);
2646}
2647
2656__STATIC_INLINE void LL_TIM_DisableExternalClock(TIM_TypeDef *TIMx)
2657{
2658 CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE);
2659}
2660
2669__STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(const TIM_TypeDef *TIMx)
2670{
2671 return ((READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE)) ? 1UL : 0UL);
2672}
2673
2693__STATIC_INLINE void LL_TIM_SetClockSource(TIM_TypeDef *TIMx, uint32_t ClockSource)
2694{
2695 MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource);
2696}
2697
2710__STATIC_INLINE void LL_TIM_SetEncoderMode(TIM_TypeDef *TIMx, uint32_t EncoderMode)
2711{
2712 MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, EncoderMode);
2713}
2714
2718
2739__STATIC_INLINE void LL_TIM_SetTriggerOutput(TIM_TypeDef *TIMx, uint32_t TimerSynchronization)
2740{
2741 MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization);
2742}
2743
2757__STATIC_INLINE void LL_TIM_SetSlaveMode(TIM_TypeDef *TIMx, uint32_t SlaveMode)
2758{
2759 MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode);
2760}
2761
2779__STATIC_INLINE void LL_TIM_SetTriggerInput(TIM_TypeDef *TIMx, uint32_t TriggerInput)
2780{
2781 MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput);
2782}
2783
2792__STATIC_INLINE void LL_TIM_EnableMasterSlaveMode(TIM_TypeDef *TIMx)
2793{
2794 SET_BIT(TIMx->SMCR, TIM_SMCR_MSM);
2795}
2796
2805__STATIC_INLINE void LL_TIM_DisableMasterSlaveMode(TIM_TypeDef *TIMx)
2806{
2807 CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM);
2808}
2809
2818__STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(const TIM_TypeDef *TIMx)
2819{
2820 return ((READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM)) ? 1UL : 0UL);
2821}
2822
2858__STATIC_INLINE void LL_TIM_ConfigETR(TIM_TypeDef *TIMx, uint32_t ETRPolarity, uint32_t ETRPrescaler,
2859 uint32_t ETRFilter)
2860{
2861 MODIFY_REG(TIMx->SMCR, TIM_SMCR_ETP | TIM_SMCR_ETPS | TIM_SMCR_ETF, ETRPolarity | ETRPrescaler | ETRFilter);
2862}
2863
2867
2879__STATIC_INLINE void LL_TIM_EnableBRK(TIM_TypeDef *TIMx)
2880{
2881 __IO uint32_t tmpreg;
2882 SET_BIT(TIMx->BDTR, TIM_BDTR_BKE);
2883 /* Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. */
2884 tmpreg = READ_REG(TIMx->BDTR);
2885 (void)(tmpreg);
2886}
2887
2896__STATIC_INLINE void LL_TIM_DisableBRK(TIM_TypeDef *TIMx)
2897{
2898 __IO uint32_t tmpreg;
2899 CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKE);
2900 /* Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. */
2901 tmpreg = READ_REG(TIMx->BDTR);
2902 (void)(tmpreg);
2903}
2904
2916__STATIC_INLINE void LL_TIM_ConfigBRK(TIM_TypeDef *TIMx, uint32_t BreakPolarity)
2917{
2918 __IO uint32_t tmpreg;
2919 MODIFY_REG(TIMx->BDTR, TIM_BDTR_BKP, BreakPolarity);
2920 /* Note: Any write operation to BKP bit takes a delay of 1 APB clock cycle to become effective. */
2921 tmpreg = READ_REG(TIMx->BDTR);
2922 (void)(tmpreg);
2923}
2924
2940__STATIC_INLINE void LL_TIM_SetOffStates(TIM_TypeDef *TIMx, uint32_t OffStateIdle, uint32_t OffStateRun)
2941{
2942 MODIFY_REG(TIMx->BDTR, TIM_BDTR_OSSI | TIM_BDTR_OSSR, OffStateIdle | OffStateRun);
2943}
2944
2953__STATIC_INLINE void LL_TIM_EnableAutomaticOutput(TIM_TypeDef *TIMx)
2954{
2955 SET_BIT(TIMx->BDTR, TIM_BDTR_AOE);
2956}
2957
2966__STATIC_INLINE void LL_TIM_DisableAutomaticOutput(TIM_TypeDef *TIMx)
2967{
2968 CLEAR_BIT(TIMx->BDTR, TIM_BDTR_AOE);
2969}
2970
2979__STATIC_INLINE uint32_t LL_TIM_IsEnabledAutomaticOutput(const TIM_TypeDef *TIMx)
2980{
2981 return ((READ_BIT(TIMx->BDTR, TIM_BDTR_AOE) == (TIM_BDTR_AOE)) ? 1UL : 0UL);
2982}
2983
2994__STATIC_INLINE void LL_TIM_EnableAllOutputs(TIM_TypeDef *TIMx)
2995{
2996 SET_BIT(TIMx->BDTR, TIM_BDTR_MOE);
2997}
2998
3009__STATIC_INLINE void LL_TIM_DisableAllOutputs(TIM_TypeDef *TIMx)
3010{
3011 CLEAR_BIT(TIMx->BDTR, TIM_BDTR_MOE);
3012}
3013
3022__STATIC_INLINE uint32_t LL_TIM_IsEnabledAllOutputs(const TIM_TypeDef *TIMx)
3023{
3024 return ((READ_BIT(TIMx->BDTR, TIM_BDTR_MOE) == (TIM_BDTR_MOE)) ? 1UL : 0UL);
3025}
3026
3030
3081__STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_t DMABurstLength)
3082{
3083 MODIFY_REG(TIMx->DCR, (TIM_DCR_DBL | TIM_DCR_DBA), (DMABurstBaseAddress | DMABurstLength));
3084}
3085
3089
3151__STATIC_INLINE void LL_TIM_SetRemap(TIM_TypeDef *TIMx, uint32_t Remap)
3152{
3153#if defined(LPTIM_OR_TIM1_ITR2_RMP) && defined(LPTIM_OR_TIM5_ITR1_RMP) && defined(LPTIM_OR_TIM9_ITR1_RMP)
3154 if ((Remap & LL_TIM_LPTIM_REMAP_MASK) == LL_TIM_LPTIM_REMAP_MASK)
3155 {
3156 /* Connect TIMx internal trigger to LPTIM1 output */
3157 SET_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN);
3158 MODIFY_REG(LPTIM1->OR,
3159 (LPTIM_OR_TIM1_ITR2_RMP | LPTIM_OR_TIM5_ITR1_RMP | LPTIM_OR_TIM9_ITR1_RMP),
3160 Remap & ~(LL_TIM_LPTIM_REMAP_MASK));
3161 }
3162 else
3163 {
3164 MODIFY_REG(TIMx->OR, (Remap >> TIMx_OR_RMP_SHIFT), (Remap & TIMx_OR_RMP_MASK));
3165 }
3166#else
3167 MODIFY_REG(TIMx->OR, (Remap >> TIMx_OR_RMP_SHIFT), (Remap & TIMx_OR_RMP_MASK));
3168#endif /* LPTIM_OR_TIM1_ITR2_RMP && LPTIM_OR_TIM5_ITR1_RMP && LPTIM_OR_TIM9_ITR1_RMP */
3169}
3170
3174
3184__STATIC_INLINE void LL_TIM_ClearFlag_UPDATE(TIM_TypeDef *TIMx)
3185{
3186 WRITE_REG(TIMx->SR, ~(TIM_SR_UIF));
3187}
3188
3195__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(const TIM_TypeDef *TIMx)
3196{
3197 return ((READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF)) ? 1UL : 0UL);
3198}
3199
3206__STATIC_INLINE void LL_TIM_ClearFlag_CC1(TIM_TypeDef *TIMx)
3207{
3208 WRITE_REG(TIMx->SR, ~(TIM_SR_CC1IF));
3209}
3210
3217__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1(const TIM_TypeDef *TIMx)
3218{
3219 return ((READ_BIT(TIMx->SR, TIM_SR_CC1IF) == (TIM_SR_CC1IF)) ? 1UL : 0UL);
3220}
3221
3228__STATIC_INLINE void LL_TIM_ClearFlag_CC2(TIM_TypeDef *TIMx)
3229{
3230 WRITE_REG(TIMx->SR, ~(TIM_SR_CC2IF));
3231}
3232
3239__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2(const TIM_TypeDef *TIMx)
3240{
3241 return ((READ_BIT(TIMx->SR, TIM_SR_CC2IF) == (TIM_SR_CC2IF)) ? 1UL : 0UL);
3242}
3243
3250__STATIC_INLINE void LL_TIM_ClearFlag_CC3(TIM_TypeDef *TIMx)
3251{
3252 WRITE_REG(TIMx->SR, ~(TIM_SR_CC3IF));
3253}
3254
3261__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3(const TIM_TypeDef *TIMx)
3262{
3263 return ((READ_BIT(TIMx->SR, TIM_SR_CC3IF) == (TIM_SR_CC3IF)) ? 1UL : 0UL);
3264}
3265
3272__STATIC_INLINE void LL_TIM_ClearFlag_CC4(TIM_TypeDef *TIMx)
3273{
3274 WRITE_REG(TIMx->SR, ~(TIM_SR_CC4IF));
3275}
3276
3283__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4(const TIM_TypeDef *TIMx)
3284{
3285 return ((READ_BIT(TIMx->SR, TIM_SR_CC4IF) == (TIM_SR_CC4IF)) ? 1UL : 0UL);
3286}
3287
3294__STATIC_INLINE void LL_TIM_ClearFlag_COM(TIM_TypeDef *TIMx)
3295{
3296 WRITE_REG(TIMx->SR, ~(TIM_SR_COMIF));
3297}
3298
3305__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_COM(const TIM_TypeDef *TIMx)
3306{
3307 return ((READ_BIT(TIMx->SR, TIM_SR_COMIF) == (TIM_SR_COMIF)) ? 1UL : 0UL);
3308}
3309
3316__STATIC_INLINE void LL_TIM_ClearFlag_TRIG(TIM_TypeDef *TIMx)
3317{
3318 WRITE_REG(TIMx->SR, ~(TIM_SR_TIF));
3319}
3320
3327__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_TRIG(const TIM_TypeDef *TIMx)
3328{
3329 return ((READ_BIT(TIMx->SR, TIM_SR_TIF) == (TIM_SR_TIF)) ? 1UL : 0UL);
3330}
3331
3338__STATIC_INLINE void LL_TIM_ClearFlag_BRK(TIM_TypeDef *TIMx)
3339{
3340 WRITE_REG(TIMx->SR, ~(TIM_SR_BIF));
3341}
3342
3349__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK(const TIM_TypeDef *TIMx)
3350{
3351 return ((READ_BIT(TIMx->SR, TIM_SR_BIF) == (TIM_SR_BIF)) ? 1UL : 0UL);
3352}
3353
3360__STATIC_INLINE void LL_TIM_ClearFlag_CC1OVR(TIM_TypeDef *TIMx)
3361{
3362 WRITE_REG(TIMx->SR, ~(TIM_SR_CC1OF));
3363}
3364
3372__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(const TIM_TypeDef *TIMx)
3373{
3374 return ((READ_BIT(TIMx->SR, TIM_SR_CC1OF) == (TIM_SR_CC1OF)) ? 1UL : 0UL);
3375}
3376
3383__STATIC_INLINE void LL_TIM_ClearFlag_CC2OVR(TIM_TypeDef *TIMx)
3384{
3385 WRITE_REG(TIMx->SR, ~(TIM_SR_CC2OF));
3386}
3387
3395__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(const TIM_TypeDef *TIMx)
3396{
3397 return ((READ_BIT(TIMx->SR, TIM_SR_CC2OF) == (TIM_SR_CC2OF)) ? 1UL : 0UL);
3398}
3399
3406__STATIC_INLINE void LL_TIM_ClearFlag_CC3OVR(TIM_TypeDef *TIMx)
3407{
3408 WRITE_REG(TIMx->SR, ~(TIM_SR_CC3OF));
3409}
3410
3418__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(const TIM_TypeDef *TIMx)
3419{
3420 return ((READ_BIT(TIMx->SR, TIM_SR_CC3OF) == (TIM_SR_CC3OF)) ? 1UL : 0UL);
3421}
3422
3429__STATIC_INLINE void LL_TIM_ClearFlag_CC4OVR(TIM_TypeDef *TIMx)
3430{
3431 WRITE_REG(TIMx->SR, ~(TIM_SR_CC4OF));
3432}
3433
3441__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(const TIM_TypeDef *TIMx)
3442{
3443 return ((READ_BIT(TIMx->SR, TIM_SR_CC4OF) == (TIM_SR_CC4OF)) ? 1UL : 0UL);
3444}
3445
3449
3459__STATIC_INLINE void LL_TIM_EnableIT_UPDATE(TIM_TypeDef *TIMx)
3460{
3461 SET_BIT(TIMx->DIER, TIM_DIER_UIE);
3462}
3463
3470__STATIC_INLINE void LL_TIM_DisableIT_UPDATE(TIM_TypeDef *TIMx)
3471{
3472 CLEAR_BIT(TIMx->DIER, TIM_DIER_UIE);
3473}
3474
3481__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_UPDATE(const TIM_TypeDef *TIMx)
3482{
3483 return ((READ_BIT(TIMx->DIER, TIM_DIER_UIE) == (TIM_DIER_UIE)) ? 1UL : 0UL);
3484}
3485
3492__STATIC_INLINE void LL_TIM_EnableIT_CC1(TIM_TypeDef *TIMx)
3493{
3494 SET_BIT(TIMx->DIER, TIM_DIER_CC1IE);
3495}
3496
3503__STATIC_INLINE void LL_TIM_DisableIT_CC1(TIM_TypeDef *TIMx)
3504{
3505 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1IE);
3506}
3507
3514__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC1(const TIM_TypeDef *TIMx)
3515{
3516 return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1IE) == (TIM_DIER_CC1IE)) ? 1UL : 0UL);
3517}
3518
3525__STATIC_INLINE void LL_TIM_EnableIT_CC2(TIM_TypeDef *TIMx)
3526{
3527 SET_BIT(TIMx->DIER, TIM_DIER_CC2IE);
3528}
3529
3536__STATIC_INLINE void LL_TIM_DisableIT_CC2(TIM_TypeDef *TIMx)
3537{
3538 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2IE);
3539}
3540
3547__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC2(const TIM_TypeDef *TIMx)
3548{
3549 return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2IE) == (TIM_DIER_CC2IE)) ? 1UL : 0UL);
3550}
3551
3558__STATIC_INLINE void LL_TIM_EnableIT_CC3(TIM_TypeDef *TIMx)
3559{
3560 SET_BIT(TIMx->DIER, TIM_DIER_CC3IE);
3561}
3562
3569__STATIC_INLINE void LL_TIM_DisableIT_CC3(TIM_TypeDef *TIMx)
3570{
3571 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3IE);
3572}
3573
3580__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC3(const TIM_TypeDef *TIMx)
3581{
3582 return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3IE) == (TIM_DIER_CC3IE)) ? 1UL : 0UL);
3583}
3584
3591__STATIC_INLINE void LL_TIM_EnableIT_CC4(TIM_TypeDef *TIMx)
3592{
3593 SET_BIT(TIMx->DIER, TIM_DIER_CC4IE);
3594}
3595
3602__STATIC_INLINE void LL_TIM_DisableIT_CC4(TIM_TypeDef *TIMx)
3603{
3604 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4IE);
3605}
3606
3613__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC4(const TIM_TypeDef *TIMx)
3614{
3615 return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4IE) == (TIM_DIER_CC4IE)) ? 1UL : 0UL);
3616}
3617
3624__STATIC_INLINE void LL_TIM_EnableIT_COM(TIM_TypeDef *TIMx)
3625{
3626 SET_BIT(TIMx->DIER, TIM_DIER_COMIE);
3627}
3628
3635__STATIC_INLINE void LL_TIM_DisableIT_COM(TIM_TypeDef *TIMx)
3636{
3637 CLEAR_BIT(TIMx->DIER, TIM_DIER_COMIE);
3638}
3639
3646__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_COM(const TIM_TypeDef *TIMx)
3647{
3648 return ((READ_BIT(TIMx->DIER, TIM_DIER_COMIE) == (TIM_DIER_COMIE)) ? 1UL : 0UL);
3649}
3650
3657__STATIC_INLINE void LL_TIM_EnableIT_TRIG(TIM_TypeDef *TIMx)
3658{
3659 SET_BIT(TIMx->DIER, TIM_DIER_TIE);
3660}
3661
3668__STATIC_INLINE void LL_TIM_DisableIT_TRIG(TIM_TypeDef *TIMx)
3669{
3670 CLEAR_BIT(TIMx->DIER, TIM_DIER_TIE);
3671}
3672
3679__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_TRIG(const TIM_TypeDef *TIMx)
3680{
3681 return ((READ_BIT(TIMx->DIER, TIM_DIER_TIE) == (TIM_DIER_TIE)) ? 1UL : 0UL);
3682}
3683
3690__STATIC_INLINE void LL_TIM_EnableIT_BRK(TIM_TypeDef *TIMx)
3691{
3692 SET_BIT(TIMx->DIER, TIM_DIER_BIE);
3693}
3694
3701__STATIC_INLINE void LL_TIM_DisableIT_BRK(TIM_TypeDef *TIMx)
3702{
3703 CLEAR_BIT(TIMx->DIER, TIM_DIER_BIE);
3704}
3705
3712__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_BRK(const TIM_TypeDef *TIMx)
3713{
3714 return ((READ_BIT(TIMx->DIER, TIM_DIER_BIE) == (TIM_DIER_BIE)) ? 1UL : 0UL);
3715}
3716
3720
3730__STATIC_INLINE void LL_TIM_EnableDMAReq_UPDATE(TIM_TypeDef *TIMx)
3731{
3732 SET_BIT(TIMx->DIER, TIM_DIER_UDE);
3733}
3734
3741__STATIC_INLINE void LL_TIM_DisableDMAReq_UPDATE(TIM_TypeDef *TIMx)
3742{
3743 CLEAR_BIT(TIMx->DIER, TIM_DIER_UDE);
3744}
3745
3752__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_UPDATE(const TIM_TypeDef *TIMx)
3753{
3754 return ((READ_BIT(TIMx->DIER, TIM_DIER_UDE) == (TIM_DIER_UDE)) ? 1UL : 0UL);
3755}
3756
3763__STATIC_INLINE void LL_TIM_EnableDMAReq_CC1(TIM_TypeDef *TIMx)
3764{
3765 SET_BIT(TIMx->DIER, TIM_DIER_CC1DE);
3766}
3767
3774__STATIC_INLINE void LL_TIM_DisableDMAReq_CC1(TIM_TypeDef *TIMx)
3775{
3776 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1DE);
3777}
3778
3785__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC1(const TIM_TypeDef *TIMx)
3786{
3787 return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1DE) == (TIM_DIER_CC1DE)) ? 1UL : 0UL);
3788}
3789
3796__STATIC_INLINE void LL_TIM_EnableDMAReq_CC2(TIM_TypeDef *TIMx)
3797{
3798 SET_BIT(TIMx->DIER, TIM_DIER_CC2DE);
3799}
3800
3807__STATIC_INLINE void LL_TIM_DisableDMAReq_CC2(TIM_TypeDef *TIMx)
3808{
3809 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2DE);
3810}
3811
3818__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC2(const TIM_TypeDef *TIMx)
3819{
3820 return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2DE) == (TIM_DIER_CC2DE)) ? 1UL : 0UL);
3821}
3822
3829__STATIC_INLINE void LL_TIM_EnableDMAReq_CC3(TIM_TypeDef *TIMx)
3830{
3831 SET_BIT(TIMx->DIER, TIM_DIER_CC3DE);
3832}
3833
3840__STATIC_INLINE void LL_TIM_DisableDMAReq_CC3(TIM_TypeDef *TIMx)
3841{
3842 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3DE);
3843}
3844
3851__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC3(const TIM_TypeDef *TIMx)
3852{
3853 return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3DE) == (TIM_DIER_CC3DE)) ? 1UL : 0UL);
3854}
3855
3862__STATIC_INLINE void LL_TIM_EnableDMAReq_CC4(TIM_TypeDef *TIMx)
3863{
3864 SET_BIT(TIMx->DIER, TIM_DIER_CC4DE);
3865}
3866
3873__STATIC_INLINE void LL_TIM_DisableDMAReq_CC4(TIM_TypeDef *TIMx)
3874{
3875 CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4DE);
3876}
3877
3884__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC4(const TIM_TypeDef *TIMx)
3885{
3886 return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4DE) == (TIM_DIER_CC4DE)) ? 1UL : 0UL);
3887}
3888
3895__STATIC_INLINE void LL_TIM_EnableDMAReq_COM(TIM_TypeDef *TIMx)
3896{
3897 SET_BIT(TIMx->DIER, TIM_DIER_COMDE);
3898}
3899
3906__STATIC_INLINE void LL_TIM_DisableDMAReq_COM(TIM_TypeDef *TIMx)
3907{
3908 CLEAR_BIT(TIMx->DIER, TIM_DIER_COMDE);
3909}
3910
3917__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_COM(const TIM_TypeDef *TIMx)
3918{
3919 return ((READ_BIT(TIMx->DIER, TIM_DIER_COMDE) == (TIM_DIER_COMDE)) ? 1UL : 0UL);
3920}
3921
3928__STATIC_INLINE void LL_TIM_EnableDMAReq_TRIG(TIM_TypeDef *TIMx)
3929{
3930 SET_BIT(TIMx->DIER, TIM_DIER_TDE);
3931}
3932
3939__STATIC_INLINE void LL_TIM_DisableDMAReq_TRIG(TIM_TypeDef *TIMx)
3940{
3941 CLEAR_BIT(TIMx->DIER, TIM_DIER_TDE);
3942}
3943
3950__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_TRIG(const TIM_TypeDef *TIMx)
3951{
3952 return ((READ_BIT(TIMx->DIER, TIM_DIER_TDE) == (TIM_DIER_TDE)) ? 1UL : 0UL);
3953}
3954
3958
3968__STATIC_INLINE void LL_TIM_GenerateEvent_UPDATE(TIM_TypeDef *TIMx)
3969{
3970 SET_BIT(TIMx->EGR, TIM_EGR_UG);
3971}
3972
3979__STATIC_INLINE void LL_TIM_GenerateEvent_CC1(TIM_TypeDef *TIMx)
3980{
3981 SET_BIT(TIMx->EGR, TIM_EGR_CC1G);
3982}
3983
3990__STATIC_INLINE void LL_TIM_GenerateEvent_CC2(TIM_TypeDef *TIMx)
3991{
3992 SET_BIT(TIMx->EGR, TIM_EGR_CC2G);
3993}
3994
4001__STATIC_INLINE void LL_TIM_GenerateEvent_CC3(TIM_TypeDef *TIMx)
4002{
4003 SET_BIT(TIMx->EGR, TIM_EGR_CC3G);
4004}
4005
4012__STATIC_INLINE void LL_TIM_GenerateEvent_CC4(TIM_TypeDef *TIMx)
4013{
4014 SET_BIT(TIMx->EGR, TIM_EGR_CC4G);
4015}
4016
4023__STATIC_INLINE void LL_TIM_GenerateEvent_COM(TIM_TypeDef *TIMx)
4024{
4025 SET_BIT(TIMx->EGR, TIM_EGR_COMG);
4026}
4027
4034__STATIC_INLINE void LL_TIM_GenerateEvent_TRIG(TIM_TypeDef *TIMx)
4035{
4036 SET_BIT(TIMx->EGR, TIM_EGR_TG);
4037}
4038
4045__STATIC_INLINE void LL_TIM_GenerateEvent_BRK(TIM_TypeDef *TIMx)
4046{
4047 SET_BIT(TIMx->EGR, TIM_EGR_BG);
4048}
4049
4053
4054#if defined(USE_FULL_LL_DRIVER)
4058
4059ErrorStatus LL_TIM_DeInit(const TIM_TypeDef *TIMx);
4060void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct);
4061ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, const LL_TIM_InitTypeDef *TIM_InitStruct);
4062void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct);
4063ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct);
4064void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct);
4065ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_IC_InitTypeDef *TIM_IC_InitStruct);
4066void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct);
4067ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, const LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct);
4068void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct);
4069ErrorStatus LL_TIM_HALLSENSOR_Init(TIM_TypeDef *TIMx, const LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct);
4070void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct);
4071ErrorStatus LL_TIM_BDTR_Init(TIM_TypeDef *TIMx, const LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct);
4075#endif /* USE_FULL_LL_DRIVER */
4076
4080
4084
4085#endif /* TIM1 || TIM2 || TIM3 || TIM4 || TIM5 || TIM6 || TIM7 || TIM8 || TIM9 || TIM10 || TIM11 || TIM12 || TIM13 || TIM14 */
4086
4090
4091#ifdef __cplusplus
4092}
4093#endif
4094
4095#endif /* __STM32F4xx_LL_TIM_H */