Subversion Repositories LedShow

Rev

Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 9
Line 4... Line 4...
4
  * @author  MCD Application Team
4
  * @author  MCD Application Team
5
  * @brief   Header file of TIM LL module.
5
  * @brief   Header file of TIM LL module.
6
  ******************************************************************************
6
  ******************************************************************************
7
  * @attention
7
  * @attention
8
  *
8
  *
9
  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
9
  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
-
 
10
  * All rights reserved.</center></h2>
10
  *
11
  *
11
  * Redistribution and use in source and binary forms, with or without modification,
12
  * This software component is licensed by ST under BSD 3-Clause license,
12
  * are permitted provided that the following conditions are met:
13
  * the "License"; You may not use this file except in compliance with the
13
  *   1. Redistributions of source code must retain the above copyright notice,
-
 
14
  *      this list of conditions and the following disclaimer.
-
 
15
  *   2. Redistributions in binary form must reproduce the above copyright notice,
-
 
16
  *      this list of conditions and the following disclaimer in the documentation
-
 
17
  *      and/or other materials provided with the distribution.
14
  * License. You may obtain a copy of the License at:
18
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
-
 
19
  *      may be used to endorse or promote products derived from this software
15
  *                        opensource.org/licenses/BSD-3-Clause
20
  *      without specific prior written permission.
-
 
21
  *
-
 
22
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
 
23
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
 
24
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-
 
25
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-
 
26
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-
 
27
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-
 
28
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-
 
29
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-
 
30
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-
 
31
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
 
32
  *
16
  *
33
  ******************************************************************************
17
  ******************************************************************************
34
  */
18
  */
35
 
19
 
36
/* Define to prevent recursive inclusion -------------------------------------*/
20
/* Define to prevent recursive inclusion -------------------------------------*/
Line 46... Line 30...
46
 
30
 
47
/** @addtogroup STM32F1xx_LL_Driver
31
/** @addtogroup STM32F1xx_LL_Driver
48
  * @{
32
  * @{
49
  */
33
  */
50
 
34
 
51
#if defined (TIM1) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM5) || defined (TIM6) || defined (TIM7) || defined (TIM8) || defined (TIM9) || defined (TIM10) || defined (TIM11) || defined (TIM12) || defined (TIM13) || defined (TIM14) || defined (TIM15) || defined (TIM16) || defined (TIM17) 
35
#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) || defined (TIM15) || defined (TIM16) || defined (TIM17)
52
 
36
 
53
/** @defgroup TIM_LL TIM
37
/** @defgroup TIM_LL TIM
54
  * @{
38
  * @{
55
  */
39
  */
56
 
40
 
Line 115... Line 99...
115
};
99
};
116
/**
100
/**
117
  * @}
101
  * @}
118
  */
102
  */
119
 
103
 
120
 
-
 
121
/* Private constants ---------------------------------------------------------*/
104
/* Private constants ---------------------------------------------------------*/
122
/** @defgroup TIM_LL_Private_Constants TIM Private Constants
105
/** @defgroup TIM_LL_Private_Constants TIM Private Constants
123
  * @{
106
  * @{
124
  */
107
  */
125
 
108
 
Line 156... Line 139...
156
  *         @arg @ref LL_TIM_CHANNEL_CH3N
139
  *         @arg @ref LL_TIM_CHANNEL_CH3N
157
  *         @arg @ref LL_TIM_CHANNEL_CH4
140
  *         @arg @ref LL_TIM_CHANNEL_CH4
158
  * @retval none
141
  * @retval none
159
  */
142
  */
160
#define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \
143
#define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \
161
(((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\
144
  (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\
162
((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\
145
   ((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\
163
((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\
146
   ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\
164
((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\
147
   ((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\
165
((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\
148
   ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\
166
((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U : 6U)
149
   ((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U : 6U)
167
 
150
 
168
/** @brief  Calculate the deadtime sampling period(in ps).
151
/** @brief  Calculate the deadtime sampling period(in ps).
169
  * @param  __TIMCLK__ timer input clock frequency (in Hz).
152
  * @param  __TIMCLK__ timer input clock frequency (in Hz).
170
  * @param  __CKD__ This parameter can be one of the following values:
153
  * @param  __CKD__ This parameter can be one of the following values:
171
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV1
154
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV1
172
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV2
155
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV2
173
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV4
156
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV4
174
  * @retval none
157
  * @retval none
175
  */
158
  */
176
#define TIM_CALC_DTS(__TIMCLK__, __CKD__)                                                        \
159
#define TIM_CALC_DTS(__TIMCLK__, __CKD__)                                                        \
177
    (((__CKD__) == LL_TIM_CLOCKDIVISION_DIV1) ? ((uint64_t)1000000000000U/(__TIMCLK__))         : \
160
  (((__CKD__) == LL_TIM_CLOCKDIVISION_DIV1) ? ((uint64_t)1000000000000U/(__TIMCLK__))         : \
178
     ((__CKD__) == LL_TIM_CLOCKDIVISION_DIV2) ? ((uint64_t)1000000000000U/((__TIMCLK__) >> 1U)) : \
161
   ((__CKD__) == LL_TIM_CLOCKDIVISION_DIV2) ? ((uint64_t)1000000000000U/((__TIMCLK__) >> 1U)) : \
179
     ((uint64_t)1000000000000U/((__TIMCLK__) >> 2U)))
162
   ((uint64_t)1000000000000U/((__TIMCLK__) >> 2U)))
180
/**
163
/**
181
  * @}
164
  * @}
182
  */
165
  */
183
 
166
 
184
 
167
 
Line 213... Line 196...
213
  uint32_t ClockDivision;     /*!< Specifies the clock division.
196
  uint32_t ClockDivision;     /*!< Specifies the clock division.
214
                                   This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION.
197
                                   This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION.
215
 
198
 
216
                                   This feature can be modified afterwards using unitary function @ref LL_TIM_SetClockDivision().*/
199
                                   This feature can be modified afterwards using unitary function @ref LL_TIM_SetClockDivision().*/
217
 
200
 
218
  uint8_t RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter
201
  uint32_t RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter
219
                                   reaches zero, an update event is generated and counting restarts
202
                                   reaches zero, an update event is generated and counting restarts
220
                                   from the RCR value (N).
203
                                   from the RCR value (N).
221
                                   This means in PWM mode that (N+1) corresponds to:
204
                                   This means in PWM mode that (N+1) corresponds to:
222
                                      - the number of PWM periods in edge-aligned mode
205
                                      - the number of PWM periods in edge-aligned mode
223
                                      - the number of half PWM period in center-aligned mode
206
                                      - the number of half PWM period in center-aligned mode
224
                                   This parameter must be a number between 0x00 and 0xFF.
207
                                   GP timers: this parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
-
 
208
                                   Advanced timers: this parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF.
225
 
209
 
226
                                   This feature can be modified afterwards using unitary function @ref LL_TIM_SetRepetitionCounter().*/
210
                                   This feature can be modified afterwards using unitary function @ref LL_TIM_SetRepetitionCounter().*/
227
} LL_TIM_InitTypeDef;
211
} LL_TIM_InitTypeDef;
228
 
212
 
229
/**
213
/**
Line 527... Line 511...
527
/** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode
511
/** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode
528
  * @{
512
  * @{
529
  */
513
  */
530
#define LL_TIM_COUNTERMODE_UP                  0x00000000U          /*!<Counter used as upcounter */
514
#define LL_TIM_COUNTERMODE_UP                  0x00000000U          /*!<Counter used as upcounter */
531
#define LL_TIM_COUNTERMODE_DOWN                TIM_CR1_DIR          /*!< Counter used as downcounter */
515
#define LL_TIM_COUNTERMODE_DOWN                TIM_CR1_DIR          /*!< Counter used as downcounter */
532
#define LL_TIM_COUNTERMODE_CENTER_UP           TIM_CR1_CMS_0        /*!< The counter counts up and down alternatively. Output compare interrupt flags of output channels  are set only when the counter is counting down. */
516
#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. */
533
#define LL_TIM_COUNTERMODE_CENTER_DOWN         TIM_CR1_CMS_1        /*!<The counter counts up and down alternatively. Output compare interrupt flags of output channels  are set only when the counter is counting up */
517
#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 */
534
#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. */
518
#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. */
535
/**
519
/**
536
  * @}
520
  * @}
537
  */
521
  */
538
 
522
 
Line 614... Line 598...
614
  */
598
  */
615
#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 */
599
#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 */
616
#define LL_TIM_OCMODE_ACTIVE                   TIM_CCMR1_OC1M_0                                         /*!<OCyREF is forced high on compare match*/
600
#define LL_TIM_OCMODE_ACTIVE                   TIM_CCMR1_OC1M_0                                         /*!<OCyREF is forced high on compare match*/
617
#define LL_TIM_OCMODE_INACTIVE                 TIM_CCMR1_OC1M_1                                         /*!<OCyREF is forced low on compare match*/
601
#define LL_TIM_OCMODE_INACTIVE                 TIM_CCMR1_OC1M_1                                         /*!<OCyREF is forced low on compare match*/
618
#define LL_TIM_OCMODE_TOGGLE                   (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0)                    /*!<OCyREF toggles on compare match*/
602
#define LL_TIM_OCMODE_TOGGLE                   (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0)                    /*!<OCyREF toggles on compare match*/
619
#define LL_TIM_OCMODE_FORCED_INACTIVE          TIM_CCMR1_OC1M_2                                       /*!<OCyREF is forced low*/
603
#define LL_TIM_OCMODE_FORCED_INACTIVE          TIM_CCMR1_OC1M_2                                         /*!<OCyREF is forced low*/
620
#define LL_TIM_OCMODE_FORCED_ACTIVE            (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0)                    /*!<OCyREF is forced high*/
604
#define LL_TIM_OCMODE_FORCED_ACTIVE            (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0)                    /*!<OCyREF is forced high*/
621
#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.*/
605
#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.*/
622
#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*/
606
#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*/
623
/**
607
/**
624
  * @}
608
  * @}
Line 654... Line 638...
654
  */
638
  */
655
 
639
 
656
/** @defgroup TIM_LL_EC_ICPSC Input Configuration Prescaler
640
/** @defgroup TIM_LL_EC_ICPSC Input Configuration Prescaler
657
  * @{
641
  * @{
658
  */
642
  */
659
#define LL_TIM_ICPSC_DIV1                      0x00000000U                              /*!< No prescaler, capture is done each time an edge is detected on the capture input */
643
#define LL_TIM_ICPSC_DIV1                      0x00000000U                    /*!< No prescaler, capture is done each time an edge is detected on the capture input */
660
#define LL_TIM_ICPSC_DIV2                      (TIM_CCMR1_IC1PSC_0 << 16U)    /*!< Capture is done once every 2 events */
644
#define LL_TIM_ICPSC_DIV2                      (TIM_CCMR1_IC1PSC_0 << 16U)    /*!< Capture is done once every 2 events */
661
#define LL_TIM_ICPSC_DIV4                      (TIM_CCMR1_IC1PSC_1 << 16U)    /*!< Capture is done once every 4 events */
645
#define LL_TIM_ICPSC_DIV4                      (TIM_CCMR1_IC1PSC_1 << 16U)    /*!< Capture is done once every 4 events */
662
#define LL_TIM_ICPSC_DIV8                      (TIM_CCMR1_IC1PSC << 16U)      /*!< Capture is done once every 8 events */
646
#define LL_TIM_ICPSC_DIV8                      (TIM_CCMR1_IC1PSC << 16U)      /*!< Capture is done once every 8 events */
663
/**
647
/**
664
  * @}
648
  * @}
Line 698... Line 682...
698
 
682
 
699
/** @defgroup TIM_LL_EC_CLOCKSOURCE Clock Source
683
/** @defgroup TIM_LL_EC_CLOCKSOURCE Clock Source
700
  * @{
684
  * @{
701
  */
685
  */
702
#define LL_TIM_CLOCKSOURCE_INTERNAL            0x00000000U                                          /*!< The timer is clocked by the internal clock provided from the RCC */
686
#define LL_TIM_CLOCKSOURCE_INTERNAL            0x00000000U                                          /*!< The timer is clocked by the internal clock provided from the RCC */
703
#define LL_TIM_CLOCKSOURCE_EXT_MODE1           (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0)   /*!< Counter counts at each rising or falling edge on a selected inpu t*/
687
#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*/
704
#define LL_TIM_CLOCKSOURCE_EXT_MODE2           TIM_SMCR_ECE                                         /*!< Counter counts at each rising or falling edge on the external trigger input ETR */
688
#define LL_TIM_CLOCKSOURCE_EXT_MODE2           TIM_SMCR_ECE                                         /*!< Counter counts at each rising or falling edge on the external trigger input ETR */
705
/**
689
/**
706
  * @}
690
  * @}
707
  */
691
  */
708
 
692
 
709
/** @defgroup TIM_LL_EC_ENCODERMODE Encoder Mode
693
/** @defgroup TIM_LL_EC_ENCODERMODE Encoder Mode
710
  * @{
694
  * @{
711
  */
695
  */
712
#define LL_TIM_ENCODERMODE_X2_TI1              TIM_SMCR_SMS_0                    /*!< Encoder mode 1 - Counter counts up/down on TI2FP2 edge depending on TI1FP1 level */
696
#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 */
713
#define LL_TIM_ENCODERMODE_X2_TI2              TIM_SMCR_SMS_1                    /*!< Encoder mode 2 - Counter counts up/down on TI1FP1 edge depending on TI2FP2 level */
697
#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 */
714
#define LL_TIM_ENCODERMODE_X4_TI12             (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges                                                                                                                                                                   depending on the level of the other input l */
698
#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 */
715
/**
699
/**
716
  * @}
700
  * @}
717
  */
701
  */
718
 
702
 
719
/** @defgroup TIM_LL_EC_TRGO Trigger Output
703
/** @defgroup TIM_LL_EC_TRGO Trigger Output
Line 744... Line 728...
744
  */
728
  */
745
 
729
 
746
/** @defgroup TIM_LL_EC_TS Trigger Selection
730
/** @defgroup TIM_LL_EC_TS Trigger Selection
747
  * @{
731
  * @{
748
  */
732
  */
749
#define LL_TIM_TS_ITR0                         0x00000000U                                      /*!< Internal Trigger 0 (ITR0) is used as trigger input */
733
#define LL_TIM_TS_ITR0                         0x00000000U                                                     /*!< Internal Trigger 0 (ITR0) is used as trigger input */
750
#define LL_TIM_TS_ITR1                         TIM_SMCR_TS_0                                    /*!< Internal Trigger 1 (ITR1) is used as trigger input */
734
#define LL_TIM_TS_ITR1                         TIM_SMCR_TS_0                                                   /*!< Internal Trigger 1 (ITR1) is used as trigger input */
751
#define LL_TIM_TS_ITR2                         TIM_SMCR_TS_1                                    /*!< Internal Trigger 2 (ITR2) is used as trigger input */
735
#define LL_TIM_TS_ITR2                         TIM_SMCR_TS_1                                                   /*!< Internal Trigger 2 (ITR2) is used as trigger input */
752
#define LL_TIM_TS_ITR3                         (TIM_SMCR_TS_0 | TIM_SMCR_TS_1)                  /*!< Internal Trigger 3 (ITR3) is used as trigger input */
736
#define LL_TIM_TS_ITR3                         (TIM_SMCR_TS_0 | TIM_SMCR_TS_1)                                 /*!< Internal Trigger 3 (ITR3) is used as trigger input */
753
#define LL_TIM_TS_TI1F_ED                      TIM_SMCR_TS_2                                    /*!< TI1 Edge Detector (TI1F_ED) is used as trigger input */
737
#define LL_TIM_TS_TI1F_ED                      TIM_SMCR_TS_2                                                   /*!< TI1 Edge Detector (TI1F_ED) is used as trigger input */
754
#define LL_TIM_TS_TI1FP1                       (TIM_SMCR_TS_2 | TIM_SMCR_TS_0)                  /*!< Filtered Timer Input 1 (TI1FP1) is used as trigger input */
738
#define LL_TIM_TS_TI1FP1                       (TIM_SMCR_TS_2 | TIM_SMCR_TS_0)                                 /*!< Filtered Timer Input 1 (TI1FP1) is used as trigger input */
755
#define LL_TIM_TS_TI2FP2                       (TIM_SMCR_TS_2 | TIM_SMCR_TS_1)                  /*!< Filtered Timer Input 2 (TI12P2) is used as trigger input */
739
#define LL_TIM_TS_TI2FP2                       (TIM_SMCR_TS_2 | TIM_SMCR_TS_1)                                 /*!< Filtered Timer Input 2 (TI12P2) is used as trigger input */
756
#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 */
740
#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 */
757
/**
741
/**
758
  * @}
742
  * @}
759
  */
743
  */
760
 
744
 
761
/** @defgroup TIM_LL_EC_ETR_POLARITY External Trigger Polarity
745
/** @defgroup TIM_LL_EC_ETR_POLARITY External Trigger Polarity
Line 882... Line 866...
882
/**
866
/**
883
  * @}
867
  * @}
884
  */
868
  */
885
 
869
 
886
 
870
 
887
 
-
 
888
/**
871
/**
889
  * @}
872
  * @}
890
  */
873
  */
891
 
874
 
892
/* Exported macro ------------------------------------------------------------*/
875
/* Exported macro ------------------------------------------------------------*/
Line 902... Line 885...
902
  * @param  __INSTANCE__ TIM Instance
885
  * @param  __INSTANCE__ TIM Instance
903
  * @param  __REG__ Register to be written
886
  * @param  __REG__ Register to be written
904
  * @param  __VALUE__ Value to be written in the register
887
  * @param  __VALUE__ Value to be written in the register
905
  * @retval None
888
  * @retval None
906
  */
889
  */
907
#define LL_TIM_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
890
#define LL_TIM_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
908
 
891
 
909
/**
892
/**
910
  * @brief  Read a value in TIM register.
893
  * @brief  Read a value in TIM register.
911
  * @param  __INSTANCE__ TIM Instance
894
  * @param  __INSTANCE__ TIM Instance
912
  * @param  __REG__ Register to be read
895
  * @param  __REG__ Register to be read
913
  * @retval Register value
896
  * @retval Register value
914
  */
897
  */
915
#define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
898
#define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__)
916
/**
899
/**
917
  * @}
900
  * @}
918
  */
901
  */
919
 
902
 
920
/** @defgroup TIM_LL_EM_Exported_Macros Exported_Macros
903
/** @defgroup TIM_LL_EM_Exported_Macros Exported_Macros
Line 931... Line 914...
931
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV4
914
  *         @arg @ref LL_TIM_CLOCKDIVISION_DIV4
932
  * @param  __DT__ deadtime duration (in ns)
915
  * @param  __DT__ deadtime duration (in ns)
933
  * @retval DTG[0:7]
916
  * @retval DTG[0:7]
934
  */
917
  */
935
#define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__)  \
918
#define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__)  \
936
    ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__))))           ? (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__)))  & DT_DELAY_1) :                                               \
919
  ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__))))    ? (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__)))  & DT_DELAY_1) :                                               \
937
      (((uint64_t)((__DT__)*1000U)) < (64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))  ? (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) :\
920
    (((uint64_t)((__DT__)*1000U)) < ((64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__CKD__))))  ? (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) :\
938
      (((uint64_t)((__DT__)*1000U)) < (32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))  ? (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) :\
921
    (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__CKD__))))  ? (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) :\
939
      (((uint64_t)((__DT__)*1000U)) < (32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__CKD__))) ? (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) :\
922
    (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) :\
940
       0U)
923
    0U)
941
 
924
 
942
/**
925
/**
943
  * @brief  HELPER macro calculating the prescaler value to achieve the required counter clock frequency.
926
  * @brief  HELPER macro calculating the prescaler value to achieve the required counter clock frequency.
944
  * @note ex: @ref __LL_TIM_CALC_PSC (80000000, 1000000);
927
  * @note ex: @ref __LL_TIM_CALC_PSC (80000000, 1000000);
945
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
928
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
946
  * @param  __CNTCLK__ counter clock frequency (in Hz)
929
  * @param  __CNTCLK__ counter clock frequency (in Hz)
947
  * @retval Prescaler value  (between Min_Data=0 and Max_Data=65535)
930
  * @retval Prescaler value  (between Min_Data=0 and Max_Data=65535)
948
  */
931
  */
949
#define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__)   \
932
#define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__)   \
950
   ((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)((__TIMCLK__)/(__CNTCLK__) - 1U) : 0U
933
  (((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)(((__TIMCLK__)/(__CNTCLK__)) - 1U) : 0U)
951
 
934
 
952
/**
935
/**
953
  * @brief  HELPER macro calculating the auto-reload value to achieve the required output signal frequency.
936
  * @brief  HELPER macro calculating the auto-reload value to achieve the required output signal frequency.
954
  * @note ex: @ref __LL_TIM_CALC_ARR (1000000, @ref LL_TIM_GetPrescaler (), 10000);
937
  * @note ex: @ref __LL_TIM_CALC_ARR (1000000, @ref LL_TIM_GetPrescaler (), 10000);
955
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
938
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
956
  * @param  __PSC__ prescaler
939
  * @param  __PSC__ prescaler
957
  * @param  __FREQ__ output signal frequency (in Hz)
940
  * @param  __FREQ__ output signal frequency (in Hz)
958
  * @retval  Auto-reload value  (between Min_Data=0 and Max_Data=65535)
941
  * @retval  Auto-reload value  (between Min_Data=0 and Max_Data=65535)
959
  */
942
  */
960
#define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \
943
#define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \
961
     (((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? ((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U)) - 1U) : 0U
944
  ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U))) - 1U) : 0U)
962
 
945
 
963
/**
946
/**
964
  * @brief  HELPER macro calculating the compare value required to achieve the required timer output compare active/inactive delay.
947
  * @brief  HELPER macro calculating the compare value required to achieve the required timer output compare active/inactive delay.
965
  * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10);
948
  * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10);
966
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
949
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
967
  * @param  __PSC__ prescaler
950
  * @param  __PSC__ prescaler
968
  * @param  __DELAY__ timer output compare active/inactive delay (in us)
951
  * @param  __DELAY__ timer output compare active/inactive delay (in us)
969
  * @retval Compare value  (between Min_Data=0 and Max_Data=65535)
952
  * @retval Compare value  (between Min_Data=0 and Max_Data=65535)
970
  */
953
  */
971
#define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__)  \
954
#define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__)  \
972
((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \
955
  ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \
973
          / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U))))
956
              / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U))))
974
 
957
 
975
/**
958
/**
976
  * @brief  HELPER macro calculating the auto-reload value to achieve the required pulse duration (when the timer operates in one pulse mode).
959
  * @brief  HELPER macro calculating the auto-reload value to achieve the required pulse duration (when the timer operates in one pulse mode).
977
  * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20);
960
  * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20);
978
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
961
  * @param  __TIMCLK__ timer input clock frequency (in Hz)
Line 980... Line 963...
980
  * @param  __DELAY__ timer output compare active/inactive delay (in us)
963
  * @param  __DELAY__ timer output compare active/inactive delay (in us)
981
  * @param  __PULSE__ pulse duration (in us)
964
  * @param  __PULSE__ pulse duration (in us)
982
  * @retval Auto-reload value  (between Min_Data=0 and Max_Data=65535)
965
  * @retval Auto-reload value  (between Min_Data=0 and Max_Data=65535)
983
  */
966
  */
984
#define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__)  \
967
#define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__)  \
985
 ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \
968
  ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \
986
           + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__))))
969
              + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__))))
987
 
970
 
988
/**
971
/**
989
  * @brief  HELPER macro retrieving the ratio of the input capture prescaler
972
  * @brief  HELPER macro retrieving the ratio of the input capture prescaler
990
  * @note ex: @ref __LL_TIM_GET_ICPSC_RATIO (@ref LL_TIM_IC_GetPrescaler ());
973
  * @note ex: @ref __LL_TIM_GET_ICPSC_RATIO (@ref LL_TIM_IC_GetPrescaler ());
991
  * @param  __ICPSC__ This parameter can be one of the following values:
974
  * @param  __ICPSC__ This parameter can be one of the following values:
Line 994... Line 977...
994
  *         @arg @ref LL_TIM_ICPSC_DIV4
977
  *         @arg @ref LL_TIM_ICPSC_DIV4
995
  *         @arg @ref LL_TIM_ICPSC_DIV8
978
  *         @arg @ref LL_TIM_ICPSC_DIV8
996
  * @retval Input capture prescaler ratio (1, 2, 4 or 8)
979
  * @retval Input capture prescaler ratio (1, 2, 4 or 8)
997
  */
980
  */
998
#define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__)  \
981
#define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__)  \
999
   ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos)))
982
  ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos)))
1000
 
983
 
1001
 
984
 
1002
/**
985
/**
1003
  * @}
986
  * @}
1004
  */
987
  */
Line 1044... Line 1027...
1044
  * @param  TIMx Timer instance
1027
  * @param  TIMx Timer instance
1045
  * @retval State of bit (1 or 0).
1028
  * @retval State of bit (1 or 0).
1046
  */
1029
  */
1047
__STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(TIM_TypeDef *TIMx)
1030
__STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(TIM_TypeDef *TIMx)
1048
{
1031
{
1049
  return (READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN));
1032
  return ((READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN)) ? 1UL : 0UL);
1050
}
1033
}
1051
 
1034
 
1052
/**
1035
/**
1053
  * @brief  Enable update event generation.
1036
  * @brief  Enable update event generation.
1054
  * @rmtoll CR1          UDIS          LL_TIM_EnableUpdateEvent
1037
  * @rmtoll CR1          UDIS          LL_TIM_EnableUpdateEvent
Line 1073... Line 1056...
1073
 
1056
 
1074
/**
1057
/**
1075
  * @brief  Indicates whether update event generation is enabled.
1058
  * @brief  Indicates whether update event generation is enabled.
1076
  * @rmtoll CR1          UDIS          LL_TIM_IsEnabledUpdateEvent
1059
  * @rmtoll CR1          UDIS          LL_TIM_IsEnabledUpdateEvent
1077
  * @param  TIMx Timer instance
1060
  * @param  TIMx Timer instance
1078
  * @retval State of bit (1 or 0).
1061
  * @retval Inverted state of bit (0 or 1).
1079
  */
1062
  */
1080
__STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(TIM_TypeDef *TIMx)
1063
__STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(TIM_TypeDef *TIMx)
1081
{
1064
{
1082
  return (READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == (TIM_CR1_UDIS));
1065
  return ((READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == (uint32_t)RESET) ? 1UL : 0UL);
1083
}
1066
}
1084
 
1067
 
1085
/**
1068
/**
1086
  * @brief  Set update event source
1069
  * @brief  Set update event source
1087
  * @note Update event source set to LL_TIM_UPDATESOURCE_REGULAR: any of the following events
1070
  * @note Update event source set to LL_TIM_UPDATESOURCE_REGULAR: any of the following events
Line 1143... Line 1126...
1143
  return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM));
1126
  return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM));
1144
}
1127
}
1145
 
1128
 
1146
/**
1129
/**
1147
  * @brief  Set the timer counter counting mode.
1130
  * @brief  Set the timer counter counting mode.
1148
  * @note Macro @ref IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to
1131
  * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to
1149
  *       check whether or not the counter mode selection feature is supported
1132
  *       check whether or not the counter mode selection feature is supported
1150
  *       by a timer instance.
1133
  *       by a timer instance.
1151
  * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse)
1134
  * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse)
1152
  *       requires a timer reset to avoid unexpected direction
1135
  *       requires a timer reset to avoid unexpected direction
1153
  *       due to DIR bit readonly in center aligned mode.
1136
  *       due to DIR bit readonly in center aligned mode.
Line 1162... Line 1145...
1162
  *         @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN
1145
  *         @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN
1163
  * @retval None
1146
  * @retval None
1164
  */
1147
  */
1165
__STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode)
1148
__STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode)
1166
{
1149
{
1167
  MODIFY_REG(TIMx->CR1, TIM_CR1_DIR | TIM_CR1_CMS, CounterMode);
1150
  MODIFY_REG(TIMx->CR1, (TIM_CR1_DIR | TIM_CR1_CMS), CounterMode);
1168
}
1151
}
1169
 
1152
 
1170
/**
1153
/**
1171
  * @brief  Get actual counter mode.
1154
  * @brief  Get actual counter mode.
1172
  * @note Macro @ref IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to
1155
  * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to
1173
  *       check whether or not the counter mode selection feature is supported
1156
  *       check whether or not the counter mode selection feature is supported
1174
  *       by a timer instance.
1157
  *       by a timer instance.
1175
  * @rmtoll CR1          DIR           LL_TIM_GetCounterMode\n
1158
  * @rmtoll CR1          DIR           LL_TIM_GetCounterMode\n
1176
  *         CR1          CMS           LL_TIM_GetCounterMode
1159
  *         CR1          CMS           LL_TIM_GetCounterMode
1177
  * @param  TIMx Timer instance
1160
  * @param  TIMx Timer instance
Line 1215... Line 1198...
1215
  * @param  TIMx Timer instance
1198
  * @param  TIMx Timer instance
1216
  * @retval State of bit (1 or 0).
1199
  * @retval State of bit (1 or 0).
1217
  */
1200
  */
1218
__STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(TIM_TypeDef *TIMx)
1201
__STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(TIM_TypeDef *TIMx)
1219
{
1202
{
1220
  return (READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE));
1203
  return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL);
1221
}
1204
}
1222
 
1205
 
1223
/**
1206
/**
1224
  * @brief  Set the division ratio between the timer clock  and the sampling clock used by the dead-time generators (when supported) and the digital filters.
1207
  * @brief  Set the division ratio between the timer clock  and the sampling clock used by the dead-time generators (when supported) and the digital filters.
1225
  * @note Macro @ref IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
1208
  * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
1226
  *       whether or not the clock division feature is supported by the timer
1209
  *       whether or not the clock division feature is supported by the timer
1227
  *       instance.
1210
  *       instance.
1228
  * @rmtoll CR1          CKD           LL_TIM_SetClockDivision
1211
  * @rmtoll CR1          CKD           LL_TIM_SetClockDivision
1229
  * @param  TIMx Timer instance
1212
  * @param  TIMx Timer instance
1230
  * @param  ClockDivision This parameter can be one of the following values:
1213
  * @param  ClockDivision This parameter can be one of the following values:
Line 1238... Line 1221...
1238
  MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision);
1221
  MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision);
1239
}
1222
}
1240
 
1223
 
1241
/**
1224
/**
1242
  * @brief  Get the actual division ratio between the timer clock  and the sampling clock used by the dead-time generators (when supported) and the digital filters.
1225
  * @brief  Get the actual division ratio between the timer clock  and the sampling clock used by the dead-time generators (when supported) and the digital filters.
1243
  * @note Macro @ref IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
1226
  * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
1244
  *       whether or not the clock division feature is supported by the timer
1227
  *       whether or not the clock division feature is supported by the timer
1245
  *       instance.
1228
  *       instance.
1246
  * @rmtoll CR1          CKD           LL_TIM_GetClockDivision
1229
  * @rmtoll CR1          CKD           LL_TIM_GetClockDivision
1247
  * @param  TIMx Timer instance
1230
  * @param  TIMx Timer instance
1248
  * @retval Returned value can be one of the following values:
1231
  * @retval Returned value can be one of the following values:
Line 1343... Line 1326...
1343
  return (uint32_t)(READ_REG(TIMx->ARR));
1326
  return (uint32_t)(READ_REG(TIMx->ARR));
1344
}
1327
}
1345
 
1328
 
1346
/**
1329
/**
1347
  * @brief  Set the repetition counter value.
1330
  * @brief  Set the repetition counter value.
1348
  * @note Macro @ref IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check
1331
  * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check
1349
  *       whether or not a timer instance supports a repetition counter.
1332
  *       whether or not a timer instance supports a repetition counter.
1350
  * @rmtoll RCR          REP           LL_TIM_SetRepetitionCounter
1333
  * @rmtoll RCR          REP           LL_TIM_SetRepetitionCounter
1351
  * @param  TIMx Timer instance
1334
  * @param  TIMx Timer instance
1352
  * @param  RepetitionCounter between Min_Data=0 and Max_Data=255
1335
  * @param  RepetitionCounter between Min_Data=0 and Max_Data=255 or 65535 for advanced timer.
1353
  * @retval None
1336
  * @retval None
1354
  */
1337
  */
1355
__STATIC_INLINE void LL_TIM_SetRepetitionCounter(TIM_TypeDef *TIMx, uint32_t RepetitionCounter)
1338
__STATIC_INLINE void LL_TIM_SetRepetitionCounter(TIM_TypeDef *TIMx, uint32_t RepetitionCounter)
1356
{
1339
{
1357
  WRITE_REG(TIMx->RCR, RepetitionCounter);
1340
  WRITE_REG(TIMx->RCR, RepetitionCounter);
1358
}
1341
}
1359
 
1342
 
1360
/**
1343
/**
1361
  * @brief  Get the repetition counter value.
1344
  * @brief  Get the repetition counter value.
1362
  * @note Macro @ref IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check
1345
  * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check
1363
  *       whether or not a timer instance supports a repetition counter.
1346
  *       whether or not a timer instance supports a repetition counter.
1364
  * @rmtoll RCR          REP           LL_TIM_GetRepetitionCounter
1347
  * @rmtoll RCR          REP           LL_TIM_GetRepetitionCounter
1365
  * @param  TIMx Timer instance
1348
  * @param  TIMx Timer instance
1366
  * @retval Repetition counter value
1349
  * @retval Repetition counter value
1367
  */
1350
  */
Line 1380... Line 1363...
1380
/**
1363
/**
1381
  * @brief  Enable  the capture/compare control bits (CCxE, CCxNE and OCxM) preload.
1364
  * @brief  Enable  the capture/compare control bits (CCxE, CCxNE and OCxM) preload.
1382
  * @note CCxE, CCxNE and OCxM bits are preloaded, after having been written,
1365
  * @note CCxE, CCxNE and OCxM bits are preloaded, after having been written,
1383
  *       they are updated only when a commutation event (COM) occurs.
1366
  *       they are updated only when a commutation event (COM) occurs.
1384
  * @note Only on channels that have a complementary output.
1367
  * @note Only on channels that have a complementary output.
1385
  * @note Macro @ref IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check
1368
  * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check
1386
  *       whether or not a timer instance is able to generate a commutation event.
1369
  *       whether or not a timer instance is able to generate a commutation event.
1387
  * @rmtoll CR2          CCPC          LL_TIM_CC_EnablePreload
1370
  * @rmtoll CR2          CCPC          LL_TIM_CC_EnablePreload
1388
  * @param  TIMx Timer instance
1371
  * @param  TIMx Timer instance
1389
  * @retval None
1372
  * @retval None
1390
  */
1373
  */
Line 1393... Line 1376...
1393
  SET_BIT(TIMx->CR2, TIM_CR2_CCPC);
1376
  SET_BIT(TIMx->CR2, TIM_CR2_CCPC);
1394
}
1377
}
1395
 
1378
 
1396
/**
1379
/**
1397
  * @brief  Disable  the capture/compare control bits (CCxE, CCxNE and OCxM) preload.
1380
  * @brief  Disable  the capture/compare control bits (CCxE, CCxNE and OCxM) preload.
1398
  * @note Macro @ref IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check
1381
  * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check
1399
  *       whether or not a timer instance is able to generate a commutation event.
1382
  *       whether or not a timer instance is able to generate a commutation event.
1400
  * @rmtoll CR2          CCPC          LL_TIM_CC_DisablePreload
1383
  * @rmtoll CR2          CCPC          LL_TIM_CC_DisablePreload
1401
  * @param  TIMx Timer instance
1384
  * @param  TIMx Timer instance
1402
  * @retval None
1385
  * @retval None
1403
  */
1386
  */
Line 1406... Line 1389...
1406
  CLEAR_BIT(TIMx->CR2, TIM_CR2_CCPC);
1389
  CLEAR_BIT(TIMx->CR2, TIM_CR2_CCPC);
1407
}
1390
}
1408
 
1391
 
1409
/**
1392
/**
1410
  * @brief  Set the updated source of the capture/compare control bits (CCxE, CCxNE and OCxM).
1393
  * @brief  Set the updated source of the capture/compare control bits (CCxE, CCxNE and OCxM).
1411
  * @note Macro @ref IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check
1394
  * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check
1412
  *       whether or not a timer instance is able to generate a commutation event.
1395
  *       whether or not a timer instance is able to generate a commutation event.
1413
  * @rmtoll CR2          CCUS          LL_TIM_CC_SetUpdate
1396
  * @rmtoll CR2          CCUS          LL_TIM_CC_SetUpdate
1414
  * @param  TIMx Timer instance
1397
  * @param  TIMx Timer instance
1415
  * @param  CCUpdateSource This parameter can be one of the following values:
1398
  * @param  CCUpdateSource This parameter can be one of the following values:
1416
  *         @arg @ref LL_TIM_CCUPDATESOURCE_COMG_ONLY
1399
  *         @arg @ref LL_TIM_CCUPDATESOURCE_COMG_ONLY
Line 1450... Line 1433...
1450
}
1433
}
1451
 
1434
 
1452
/**
1435
/**
1453
  * @brief  Set the lock level to freeze the
1436
  * @brief  Set the lock level to freeze the
1454
  *         configuration of several capture/compare parameters.
1437
  *         configuration of several capture/compare parameters.
1455
  * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
1438
  * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
1456
  *       the lock mechanism is supported by a timer instance.
1439
  *       the lock mechanism is supported by a timer instance.
1457
  * @rmtoll BDTR         LOCK          LL_TIM_CC_SetLockLevel
1440
  * @rmtoll BDTR         LOCK          LL_TIM_CC_SetLockLevel
1458
  * @param  TIMx Timer instance
1441
  * @param  TIMx Timer instance
1459
  * @param  LockLevel This parameter can be one of the following values:
1442
  * @param  LockLevel This parameter can be one of the following values:
1460
  *         @arg @ref LL_TIM_LOCKLEVEL_OFF
1443
  *         @arg @ref LL_TIM_LOCKLEVEL_OFF
Line 1538... Line 1521...
1538
  *         @arg @ref LL_TIM_CHANNEL_CH4
1521
  *         @arg @ref LL_TIM_CHANNEL_CH4
1539
  * @retval State of bit (1 or 0).
1522
  * @retval State of bit (1 or 0).
1540
  */
1523
  */
1541
__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(TIM_TypeDef *TIMx, uint32_t Channels)
1524
__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(TIM_TypeDef *TIMx, uint32_t Channels)
1542
{
1525
{
1543
  return (READ_BIT(TIMx->CCER, Channels) == (Channels));
1526
  return ((READ_BIT(TIMx->CCER, Channels) == (Channels)) ? 1UL : 0UL);
1544
}
1527
}
1545
 
1528
 
1546
/**
1529
/**
1547
  * @}
1530
  * @}
1548
  */
1531
  */
Line 1575... Line 1558...
1575
  *         @arg @ref LL_TIM_OCIDLESTATE_LOW or @ref LL_TIM_OCIDLESTATE_HIGH
1558
  *         @arg @ref LL_TIM_OCIDLESTATE_LOW or @ref LL_TIM_OCIDLESTATE_HIGH
1576
  * @retval None
1559
  * @retval None
1577
  */
1560
  */
1578
__STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
1561
__STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
1579
{
1562
{
1580
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1563
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1581
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1564
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1582
  CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel]));
1565
  CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel]));
1583
  MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),
1566
  MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),
1584
             (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]);
1567
             (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]);
1585
  MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]),
1568
  MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]),
1586
             (Configuration & TIM_CR2_OIS1) << SHIFT_TAB_OISx[iChannel]);
1569
             (Configuration & TIM_CR2_OIS1) << SHIFT_TAB_OISx[iChannel]);
Line 1610... Line 1593...
1610
  *         @arg @ref LL_TIM_OCMODE_PWM2
1593
  *         @arg @ref LL_TIM_OCMODE_PWM2
1611
  * @retval None
1594
  * @retval None
1612
  */
1595
  */
1613
__STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode)
1596
__STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode)
1614
{
1597
{
1615
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1598
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1616
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1599
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1617
  MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M  | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]),  Mode << SHIFT_TAB_OCxx[iChannel]);
1600
  MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M  | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]),  Mode << SHIFT_TAB_OCxx[iChannel]);
1618
}
1601
}
1619
 
1602
 
1620
/**
1603
/**
1621
  * @brief  Get the output compare mode of an output channel.
1604
  * @brief  Get the output compare mode of an output channel.
Line 1639... Line 1622...
1639
  *         @arg @ref LL_TIM_OCMODE_PWM1
1622
  *         @arg @ref LL_TIM_OCMODE_PWM1
1640
  *         @arg @ref LL_TIM_OCMODE_PWM2
1623
  *         @arg @ref LL_TIM_OCMODE_PWM2
1641
  */
1624
  */
1642
__STATIC_INLINE uint32_t LL_TIM_OC_GetMode(TIM_TypeDef *TIMx, uint32_t Channel)
1625
__STATIC_INLINE uint32_t LL_TIM_OC_GetMode(TIM_TypeDef *TIMx, uint32_t Channel)
1643
{
1626
{
1644
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1627
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1645
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1628
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1646
  return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M  | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]);
1629
  return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M  | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]);
1647
}
1630
}
1648
 
1631
 
1649
/**
1632
/**
1650
  * @brief  Set the polarity of an output channel.
1633
  * @brief  Set the polarity of an output channel.
Line 1669... Line 1652...
1669
  *         @arg @ref LL_TIM_OCPOLARITY_LOW
1652
  *         @arg @ref LL_TIM_OCPOLARITY_LOW
1670
  * @retval None
1653
  * @retval None
1671
  */
1654
  */
1672
__STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity)
1655
__STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity)
1673
{
1656
{
1674
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1657
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1675
  MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),  Polarity << SHIFT_TAB_CCxP[iChannel]);
1658
  MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),  Polarity << SHIFT_TAB_CCxP[iChannel]);
1676
}
1659
}
1677
 
1660
 
1678
/**
1661
/**
1679
  * @brief  Get the polarity of an output channel.
1662
  * @brief  Get the polarity of an output channel.
Line 1697... Line 1680...
1697
  *         @arg @ref LL_TIM_OCPOLARITY_HIGH
1680
  *         @arg @ref LL_TIM_OCPOLARITY_HIGH
1698
  *         @arg @ref LL_TIM_OCPOLARITY_LOW
1681
  *         @arg @ref LL_TIM_OCPOLARITY_LOW
1699
  */
1682
  */
1700
__STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel)
1683
__STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel)
1701
{
1684
{
1702
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1685
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1703
  return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChannel]);
1686
  return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChannel]);
1704
}
1687
}
1705
 
1688
 
1706
/**
1689
/**
1707
  * @brief  Set the IDLE state of an output channel
1690
  * @brief  Set the IDLE state of an output channel
1708
  * @note This function is significant only for the timer instances
1691
  * @note This function is significant only for the timer instances
1709
  *       supporting the break feature. Macro @ref IS_TIM_BREAK_INSTANCE(TIMx)
1692
  *       supporting the break feature. Macro IS_TIM_BREAK_INSTANCE(TIMx)
1710
  *       can be used to check whether or not a timer instance provides
1693
  *       can be used to check whether or not a timer instance provides
1711
  *       a break input.
1694
  *       a break input.
1712
  * @rmtoll CR2         OIS1          LL_TIM_OC_SetIdleState\n
1695
  * @rmtoll CR2         OIS1          LL_TIM_OC_SetIdleState\n
1713
  *         CR2         OIS1N         LL_TIM_OC_SetIdleState\n
1696
  *         CR2         OIS1N         LL_TIM_OC_SetIdleState\n
1714
  *         CR2         OIS2          LL_TIM_OC_SetIdleState\n
1697
  *         CR2         OIS2          LL_TIM_OC_SetIdleState\n
Line 1730... Line 1713...
1730
  *         @arg @ref LL_TIM_OCIDLESTATE_HIGH
1713
  *         @arg @ref LL_TIM_OCIDLESTATE_HIGH
1731
  * @retval None
1714
  * @retval None
1732
  */
1715
  */
1733
__STATIC_INLINE void LL_TIM_OC_SetIdleState(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t IdleState)
1716
__STATIC_INLINE void LL_TIM_OC_SetIdleState(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t IdleState)
1734
{
1717
{
1735
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1718
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1736
  MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]),  IdleState << SHIFT_TAB_OISx[iChannel]);
1719
  MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]),  IdleState << SHIFT_TAB_OISx[iChannel]);
1737
}
1720
}
1738
 
1721
 
1739
/**
1722
/**
1740
  * @brief  Get the IDLE state of an output channel
1723
  * @brief  Get the IDLE state of an output channel
Line 1758... Line 1741...
1758
  *         @arg @ref LL_TIM_OCIDLESTATE_LOW
1741
  *         @arg @ref LL_TIM_OCIDLESTATE_LOW
1759
  *         @arg @ref LL_TIM_OCIDLESTATE_HIGH
1742
  *         @arg @ref LL_TIM_OCIDLESTATE_HIGH
1760
  */
1743
  */
1761
__STATIC_INLINE uint32_t LL_TIM_OC_GetIdleState(TIM_TypeDef *TIMx, uint32_t Channel)
1744
__STATIC_INLINE uint32_t LL_TIM_OC_GetIdleState(TIM_TypeDef *TIMx, uint32_t Channel)
1762
{
1745
{
1763
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1746
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1764
  return (READ_BIT(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel])) >> SHIFT_TAB_OISx[iChannel]);
1747
  return (READ_BIT(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel])) >> SHIFT_TAB_OISx[iChannel]);
1765
}
1748
}
1766
 
1749
 
1767
/**
1750
/**
1768
  * @brief  Enable fast mode for the output channel.
1751
  * @brief  Enable fast mode for the output channel.
Line 1779... Line 1762...
1779
  *         @arg @ref LL_TIM_CHANNEL_CH4
1762
  *         @arg @ref LL_TIM_CHANNEL_CH4
1780
  * @retval None
1763
  * @retval None
1781
  */
1764
  */
1782
__STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1765
__STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1783
{
1766
{
1784
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1767
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1785
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1768
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1786
  SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1769
  SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1787
 
1770
 
1788
}
1771
}
1789
 
1772
 
1790
/**
1773
/**
Line 1801... Line 1784...
1801
  *         @arg @ref LL_TIM_CHANNEL_CH4
1784
  *         @arg @ref LL_TIM_CHANNEL_CH4
1802
  * @retval None
1785
  * @retval None
1803
  */
1786
  */
1804
__STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1787
__STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel)
1805
{
1788
{
1806
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1789
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1807
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1790
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1808
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1791
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
1809
 
1792
 
1810
}
1793
}
1811
 
1794
 
1812
/**
1795
/**
Line 1823... Line 1806...
1823
  *         @arg @ref LL_TIM_CHANNEL_CH4
1806
  *         @arg @ref LL_TIM_CHANNEL_CH4
1824
  * @retval State of bit (1 or 0).
1807
  * @retval State of bit (1 or 0).
1825
  */
1808
  */
1826
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(TIM_TypeDef *TIMx, uint32_t Channel)
1809
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(TIM_TypeDef *TIMx, uint32_t Channel)
1827
{
1810
{
1828
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1811
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1829
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1812
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1830
  register uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel];
1813
  uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel];
1831
  return (READ_BIT(*pReg, bitfield) == bitfield);
1814
  return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
1832
}
1815
}
1833
 
1816
 
1834
/**
1817
/**
1835
  * @brief  Enable compare register (TIMx_CCRx) preload for the output channel.
1818
  * @brief  Enable compare register (TIMx_CCRx) preload for the output channel.
1836
  * @rmtoll CCMR1        OC1PE          LL_TIM_OC_EnablePreload\n
1819
  * @rmtoll CCMR1        OC1PE          LL_TIM_OC_EnablePreload\n
Line 1845... Line 1828...
1845
  *         @arg @ref LL_TIM_CHANNEL_CH4
1828
  *         @arg @ref LL_TIM_CHANNEL_CH4
1846
  * @retval None
1829
  * @retval None
1847
  */
1830
  */
1848
__STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1831
__STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1849
{
1832
{
1850
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1833
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1851
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1834
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1852
  SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1835
  SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1853
}
1836
}
1854
 
1837
 
1855
/**
1838
/**
1856
  * @brief  Disable compare register (TIMx_CCRx) preload for the output channel.
1839
  * @brief  Disable compare register (TIMx_CCRx) preload for the output channel.
Line 1866... Line 1849...
1866
  *         @arg @ref LL_TIM_CHANNEL_CH4
1849
  *         @arg @ref LL_TIM_CHANNEL_CH4
1867
  * @retval None
1850
  * @retval None
1868
  */
1851
  */
1869
__STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1852
__STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
1870
{
1853
{
1871
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1854
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1872
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1855
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1873
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1856
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
1874
}
1857
}
1875
 
1858
 
1876
/**
1859
/**
1877
  * @brief  Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channel.
1860
  * @brief  Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channel.
Line 1887... Line 1870...
1887
  *         @arg @ref LL_TIM_CHANNEL_CH4
1870
  *         @arg @ref LL_TIM_CHANNEL_CH4
1888
  * @retval State of bit (1 or 0).
1871
  * @retval State of bit (1 or 0).
1889
  */
1872
  */
1890
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(TIM_TypeDef *TIMx, uint32_t Channel)
1873
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(TIM_TypeDef *TIMx, uint32_t Channel)
1891
{
1874
{
1892
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1875
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1893
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1876
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1894
  register uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel];
1877
  uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel];
1895
  return (READ_BIT(*pReg, bitfield) == bitfield);
1878
  return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
1896
}
1879
}
1897
 
1880
 
1898
/**
1881
/**
1899
  * @brief  Enable clearing the output channel on an external event.
1882
  * @brief  Enable clearing the output channel on an external event.
1900
  * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode.
1883
  * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode.
1901
  * @note Macro @ref IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
1884
  * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
1902
  *       or not a timer instance can clear the OCxREF signal on an external event.
1885
  *       or not a timer instance can clear the OCxREF signal on an external event.
1903
  * @rmtoll CCMR1        OC1CE          LL_TIM_OC_EnableClear\n
1886
  * @rmtoll CCMR1        OC1CE          LL_TIM_OC_EnableClear\n
1904
  *         CCMR1        OC2CE          LL_TIM_OC_EnableClear\n
1887
  *         CCMR1        OC2CE          LL_TIM_OC_EnableClear\n
1905
  *         CCMR2        OC3CE          LL_TIM_OC_EnableClear\n
1888
  *         CCMR2        OC3CE          LL_TIM_OC_EnableClear\n
1906
  *         CCMR2        OC4CE          LL_TIM_OC_EnableClear
1889
  *         CCMR2        OC4CE          LL_TIM_OC_EnableClear
Line 1912... Line 1895...
1912
  *         @arg @ref LL_TIM_CHANNEL_CH4
1895
  *         @arg @ref LL_TIM_CHANNEL_CH4
1913
  * @retval None
1896
  * @retval None
1914
  */
1897
  */
1915
__STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel)
1898
__STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel)
1916
{
1899
{
1917
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1900
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1918
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1901
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1919
  SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
1902
  SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
1920
}
1903
}
1921
 
1904
 
1922
/**
1905
/**
1923
  * @brief  Disable clearing the output channel on an external event.
1906
  * @brief  Disable clearing the output channel on an external event.
1924
  * @note Macro @ref IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
1907
  * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
1925
  *       or not a timer instance can clear the OCxREF signal on an external event.
1908
  *       or not a timer instance can clear the OCxREF signal on an external event.
1926
  * @rmtoll CCMR1        OC1CE          LL_TIM_OC_DisableClear\n
1909
  * @rmtoll CCMR1        OC1CE          LL_TIM_OC_DisableClear\n
1927
  *         CCMR1        OC2CE          LL_TIM_OC_DisableClear\n
1910
  *         CCMR1        OC2CE          LL_TIM_OC_DisableClear\n
1928
  *         CCMR2        OC3CE          LL_TIM_OC_DisableClear\n
1911
  *         CCMR2        OC3CE          LL_TIM_OC_DisableClear\n
1929
  *         CCMR2        OC4CE          LL_TIM_OC_DisableClear
1912
  *         CCMR2        OC4CE          LL_TIM_OC_DisableClear
Line 1935... Line 1918...
1935
  *         @arg @ref LL_TIM_CHANNEL_CH4
1918
  *         @arg @ref LL_TIM_CHANNEL_CH4
1936
  * @retval None
1919
  * @retval None
1937
  */
1920
  */
1938
__STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel)
1921
__STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel)
1939
{
1922
{
1940
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1923
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1941
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1924
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1942
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
1925
  CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
1943
}
1926
}
1944
 
1927
 
1945
/**
1928
/**
1946
  * @brief  Indicates clearing the output channel on an external event is enabled for the output channel.
1929
  * @brief  Indicates clearing the output channel on an external event is enabled for the output channel.
1947
  * @note This function enables clearing the output channel on an external event.
1930
  * @note This function enables clearing the output channel on an external event.
1948
  * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode.
1931
  * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode.
1949
  * @note Macro @ref IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
1932
  * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
1950
  *       or not a timer instance can clear the OCxREF signal on an external event.
1933
  *       or not a timer instance can clear the OCxREF signal on an external event.
1951
  * @rmtoll CCMR1        OC1CE          LL_TIM_OC_IsEnabledClear\n
1934
  * @rmtoll CCMR1        OC1CE          LL_TIM_OC_IsEnabledClear\n
1952
  *         CCMR1        OC2CE          LL_TIM_OC_IsEnabledClear\n
1935
  *         CCMR1        OC2CE          LL_TIM_OC_IsEnabledClear\n
1953
  *         CCMR2        OC3CE          LL_TIM_OC_IsEnabledClear\n
1936
  *         CCMR2        OC3CE          LL_TIM_OC_IsEnabledClear\n
1954
  *         CCMR2        OC4CE          LL_TIM_OC_IsEnabledClear\n
1937
  *         CCMR2        OC4CE          LL_TIM_OC_IsEnabledClear\n
Line 1960... Line 1943...
1960
  *         @arg @ref LL_TIM_CHANNEL_CH4
1943
  *         @arg @ref LL_TIM_CHANNEL_CH4
1961
  * @retval State of bit (1 or 0).
1944
  * @retval State of bit (1 or 0).
1962
  */
1945
  */
1963
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(TIM_TypeDef *TIMx, uint32_t Channel)
1946
__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(TIM_TypeDef *TIMx, uint32_t Channel)
1964
{
1947
{
1965
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1948
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
1966
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1949
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
1967
  register uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel];
1950
  uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel];
1968
  return (READ_BIT(*pReg, bitfield) == bitfield);
1951
  return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
1969
}
1952
}
1970
 
1953
 
1971
/**
1954
/**
1972
  * @brief  Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal and the rising edge if the Ocx and OCxN signals).
1955
  * @brief  Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal and the rising edge of the Ocx and OCxN signals).
1973
  * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
1956
  * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
1974
  *       dead-time insertion feature is supported by a timer instance.
1957
  *       dead-time insertion feature is supported by a timer instance.
1975
  * @note Helper macro @ref __LL_TIM_CALC_DEADTIME can be used to calculate the DeadTime parameter
1958
  * @note Helper macro @ref __LL_TIM_CALC_DEADTIME can be used to calculate the DeadTime parameter
1976
  * @rmtoll BDTR         DTG           LL_TIM_OC_SetDeadTime
1959
  * @rmtoll BDTR         DTG           LL_TIM_OC_SetDeadTime
1977
  * @param  TIMx Timer instance
1960
  * @param  TIMx Timer instance
1978
  * @param  DeadTime between Min_Data=0 and Max_Data=255
1961
  * @param  DeadTime between Min_Data=0 and Max_Data=255
Line 1983... Line 1966...
1983
  MODIFY_REG(TIMx->BDTR, TIM_BDTR_DTG, DeadTime);
1966
  MODIFY_REG(TIMx->BDTR, TIM_BDTR_DTG, DeadTime);
1984
}
1967
}
1985
 
1968
 
1986
/**
1969
/**
1987
  * @brief  Set compare value for output channel 1 (TIMx_CCR1).
1970
  * @brief  Set compare value for output channel 1 (TIMx_CCR1).
1988
  * @note Macro @ref IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
1971
  * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
1989
  *       output channel 1 is supported by a timer instance.
1972
  *       output channel 1 is supported by a timer instance.
1990
  * @rmtoll CCR1         CCR1          LL_TIM_OC_SetCompareCH1
1973
  * @rmtoll CCR1         CCR1          LL_TIM_OC_SetCompareCH1
1991
  * @param  TIMx Timer instance
1974
  * @param  TIMx Timer instance
1992
  * @param  CompareValue between Min_Data=0 and Max_Data=65535
1975
  * @param  CompareValue between Min_Data=0 and Max_Data=65535
1993
  * @retval None
1976
  * @retval None
Line 1997... Line 1980...
1997
  WRITE_REG(TIMx->CCR1, CompareValue);
1980
  WRITE_REG(TIMx->CCR1, CompareValue);
1998
}
1981
}
1999
 
1982
 
2000
/**
1983
/**
2001
  * @brief  Set compare value for output channel 2 (TIMx_CCR2).
1984
  * @brief  Set compare value for output channel 2 (TIMx_CCR2).
2002
  * @note Macro @ref IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
1985
  * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
2003
  *       output channel 2 is supported by a timer instance.
1986
  *       output channel 2 is supported by a timer instance.
2004
  * @rmtoll CCR2         CCR2          LL_TIM_OC_SetCompareCH2
1987
  * @rmtoll CCR2         CCR2          LL_TIM_OC_SetCompareCH2
2005
  * @param  TIMx Timer instance
1988
  * @param  TIMx Timer instance
2006
  * @param  CompareValue between Min_Data=0 and Max_Data=65535
1989
  * @param  CompareValue between Min_Data=0 and Max_Data=65535
2007
  * @retval None
1990
  * @retval None
Line 2011... Line 1994...
2011
  WRITE_REG(TIMx->CCR2, CompareValue);
1994
  WRITE_REG(TIMx->CCR2, CompareValue);
2012
}
1995
}
2013
 
1996
 
2014
/**
1997
/**
2015
  * @brief  Set compare value for output channel 3 (TIMx_CCR3).
1998
  * @brief  Set compare value for output channel 3 (TIMx_CCR3).
2016
  * @note Macro @ref IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
1999
  * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
2017
  *       output channel is supported by a timer instance.
2000
  *       output channel is supported by a timer instance.
2018
  * @rmtoll CCR3         CCR3          LL_TIM_OC_SetCompareCH3
2001
  * @rmtoll CCR3         CCR3          LL_TIM_OC_SetCompareCH3
2019
  * @param  TIMx Timer instance
2002
  * @param  TIMx Timer instance
2020
  * @param  CompareValue between Min_Data=0 and Max_Data=65535
2003
  * @param  CompareValue between Min_Data=0 and Max_Data=65535
2021
  * @retval None
2004
  * @retval None
Line 2025... Line 2008...
2025
  WRITE_REG(TIMx->CCR3, CompareValue);
2008
  WRITE_REG(TIMx->CCR3, CompareValue);
2026
}
2009
}
2027
 
2010
 
2028
/**
2011
/**
2029
  * @brief  Set compare value for output channel 4 (TIMx_CCR4).
2012
  * @brief  Set compare value for output channel 4 (TIMx_CCR4).
2030
  * @note Macro @ref IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
2013
  * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
2031
  *       output channel 4 is supported by a timer instance.
2014
  *       output channel 4 is supported by a timer instance.
2032
  * @rmtoll CCR4         CCR4          LL_TIM_OC_SetCompareCH4
2015
  * @rmtoll CCR4         CCR4          LL_TIM_OC_SetCompareCH4
2033
  * @param  TIMx Timer instance
2016
  * @param  TIMx Timer instance
2034
  * @param  CompareValue between Min_Data=0 and Max_Data=65535
2017
  * @param  CompareValue between Min_Data=0 and Max_Data=65535
2035
  * @retval None
2018
  * @retval None
Line 2039... Line 2022...
2039
  WRITE_REG(TIMx->CCR4, CompareValue);
2022
  WRITE_REG(TIMx->CCR4, CompareValue);
2040
}
2023
}
2041
 
2024
 
2042
/**
2025
/**
2043
  * @brief  Get compare value (TIMx_CCR1) set for  output channel 1.
2026
  * @brief  Get compare value (TIMx_CCR1) set for  output channel 1.
2044
  * @note Macro @ref IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
2027
  * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
2045
  *       output channel 1 is supported by a timer instance.
2028
  *       output channel 1 is supported by a timer instance.
2046
  * @rmtoll CCR1         CCR1          LL_TIM_OC_GetCompareCH1
2029
  * @rmtoll CCR1         CCR1          LL_TIM_OC_GetCompareCH1
2047
  * @param  TIMx Timer instance
2030
  * @param  TIMx Timer instance
2048
  * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
2031
  * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
2049
  */
2032
  */
Line 2052... Line 2035...
2052
  return (uint32_t)(READ_REG(TIMx->CCR1));
2035
  return (uint32_t)(READ_REG(TIMx->CCR1));
2053
}
2036
}
2054
 
2037
 
2055
/**
2038
/**
2056
  * @brief  Get compare value (TIMx_CCR2) set for  output channel 2.
2039
  * @brief  Get compare value (TIMx_CCR2) set for  output channel 2.
2057
  * @note Macro @ref IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
2040
  * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
2058
  *       output channel 2 is supported by a timer instance.
2041
  *       output channel 2 is supported by a timer instance.
2059
  * @rmtoll CCR2         CCR2          LL_TIM_OC_GetCompareCH2
2042
  * @rmtoll CCR2         CCR2          LL_TIM_OC_GetCompareCH2
2060
  * @param  TIMx Timer instance
2043
  * @param  TIMx Timer instance
2061
  * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
2044
  * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
2062
  */
2045
  */
Line 2065... Line 2048...
2065
  return (uint32_t)(READ_REG(TIMx->CCR2));
2048
  return (uint32_t)(READ_REG(TIMx->CCR2));
2066
}
2049
}
2067
 
2050
 
2068
/**
2051
/**
2069
  * @brief  Get compare value (TIMx_CCR3) set for  output channel 3.
2052
  * @brief  Get compare value (TIMx_CCR3) set for  output channel 3.
2070
  * @note Macro @ref IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
2053
  * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
2071
  *       output channel 3 is supported by a timer instance.
2054
  *       output channel 3 is supported by a timer instance.
2072
  * @rmtoll CCR3         CCR3          LL_TIM_OC_GetCompareCH3
2055
  * @rmtoll CCR3         CCR3          LL_TIM_OC_GetCompareCH3
2073
  * @param  TIMx Timer instance
2056
  * @param  TIMx Timer instance
2074
  * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
2057
  * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
2075
  */
2058
  */
Line 2078... Line 2061...
2078
  return (uint32_t)(READ_REG(TIMx->CCR3));
2061
  return (uint32_t)(READ_REG(TIMx->CCR3));
2079
}
2062
}
2080
 
2063
 
2081
/**
2064
/**
2082
  * @brief  Get compare value (TIMx_CCR4) set for  output channel 4.
2065
  * @brief  Get compare value (TIMx_CCR4) set for  output channel 4.
2083
  * @note Macro @ref IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
2066
  * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
2084
  *       output channel 4 is supported by a timer instance.
2067
  *       output channel 4 is supported by a timer instance.
2085
  * @rmtoll CCR4         CCR4          LL_TIM_OC_GetCompareCH4
2068
  * @rmtoll CCR4         CCR4          LL_TIM_OC_GetCompareCH4
2086
  * @param  TIMx Timer instance
2069
  * @param  TIMx Timer instance
2087
  * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
2070
  * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
2088
  */
2071
  */
Line 2132... Line 2115...
2132
  *         @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING
2115
  *         @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING
2133
  * @retval None
2116
  * @retval None
2134
  */
2117
  */
2135
__STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
2118
__STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
2136
{
2119
{
2137
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2120
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2138
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2121
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2139
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]),
2122
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]),
2140
             ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S))  << SHIFT_TAB_ICxx[iChannel]);
2123
             ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S))  << SHIFT_TAB_ICxx[iChannel]);
2141
  MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
2124
  MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
2142
             (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]);
2125
             (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]);
2143
}
2126
}
Line 2160... Line 2143...
2160
  *         @arg @ref LL_TIM_ACTIVEINPUT_TRC
2143
  *         @arg @ref LL_TIM_ACTIVEINPUT_TRC
2161
  * @retval None
2144
  * @retval None
2162
  */
2145
  */
2163
__STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiveInput)
2146
__STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiveInput)
2164
{
2147
{
2165
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2148
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2166
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2149
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2167
  MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT_TAB_ICxx[iChannel]);
2150
  MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT_TAB_ICxx[iChannel]);
2168
}
2151
}
2169
 
2152
 
2170
/**
2153
/**
2171
  * @brief  Get the current active input.
2154
  * @brief  Get the current active input.
Line 2184... Line 2167...
2184
  *         @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI
2167
  *         @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI
2185
  *         @arg @ref LL_TIM_ACTIVEINPUT_TRC
2168
  *         @arg @ref LL_TIM_ACTIVEINPUT_TRC
2186
  */
2169
  */
2187
__STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel)
2170
__STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel)
2188
{
2171
{
2189
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2172
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2190
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2173
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2191
  return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2174
  return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2192
}
2175
}
2193
 
2176
 
2194
/**
2177
/**
2195
  * @brief  Set the prescaler of input channel.
2178
  * @brief  Set the prescaler of input channel.
Line 2210... Line 2193...
2210
  *         @arg @ref LL_TIM_ICPSC_DIV8
2193
  *         @arg @ref LL_TIM_ICPSC_DIV8
2211
  * @retval None
2194
  * @retval None
2212
  */
2195
  */
2213
__STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescaler)
2196
__STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescaler)
2214
{
2197
{
2215
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2198
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2216
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2199
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2217
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT_TAB_ICxx[iChannel]);
2200
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT_TAB_ICxx[iChannel]);
2218
}
2201
}
2219
 
2202
 
2220
/**
2203
/**
2221
  * @brief  Get the current prescaler value acting on an  input channel.
2204
  * @brief  Get the current prescaler value acting on an  input channel.
Line 2235... Line 2218...
2235
  *         @arg @ref LL_TIM_ICPSC_DIV4
2218
  *         @arg @ref LL_TIM_ICPSC_DIV4
2236
  *         @arg @ref LL_TIM_ICPSC_DIV8
2219
  *         @arg @ref LL_TIM_ICPSC_DIV8
2237
  */
2220
  */
2238
__STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel)
2221
__STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel)
2239
{
2222
{
2240
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2223
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2241
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2224
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2242
  return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2225
  return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2243
}
2226
}
2244
 
2227
 
2245
/**
2228
/**
2246
  * @brief  Set the input filter duration.
2229
  * @brief  Set the input filter duration.
Line 2273... Line 2256...
2273
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
2256
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
2274
  * @retval None
2257
  * @retval None
2275
  */
2258
  */
2276
__STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter)
2259
__STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter)
2277
{
2260
{
2278
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2261
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2279
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2262
  __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2280
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ICxx[iChannel]);
2263
  MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ICxx[iChannel]);
2281
}
2264
}
2282
 
2265
 
2283
/**
2266
/**
2284
  * @brief  Get the input filter duration.
2267
  * @brief  Get the input filter duration.
Line 2310... Line 2293...
2310
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N6
2293
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N6
2311
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
2294
  *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
2312
  */
2295
  */
2313
__STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(TIM_TypeDef *TIMx, uint32_t Channel)
2296
__STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(TIM_TypeDef *TIMx, uint32_t Channel)
2314
{
2297
{
2315
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2298
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2316
  register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2299
  const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
2317
  return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2300
  return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
2318
}
2301
}
2319
 
2302
 
2320
/**
2303
/**
2321
  * @brief  Set the input channel polarity.
2304
  * @brief  Set the input channel polarity.
Line 2337... Line 2320...
2337
  *         @arg @ref LL_TIM_IC_POLARITY_FALLING
2320
  *         @arg @ref LL_TIM_IC_POLARITY_FALLING
2338
  * @retval None
2321
  * @retval None
2339
  */
2322
  */
2340
__STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity)
2323
__STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity)
2341
{
2324
{
2342
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2325
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2343
  MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
2326
  MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
2344
             ICPolarity << SHIFT_TAB_CCxP[iChannel]);
2327
             ICPolarity << SHIFT_TAB_CCxP[iChannel]);
2345
}
2328
}
2346
 
2329
 
2347
/**
2330
/**
Line 2363... Line 2346...
2363
  *         @arg @ref LL_TIM_IC_POLARITY_RISING
2346
  *         @arg @ref LL_TIM_IC_POLARITY_RISING
2364
  *         @arg @ref LL_TIM_IC_POLARITY_FALLING
2347
  *         @arg @ref LL_TIM_IC_POLARITY_FALLING
2365
  */
2348
  */
2366
__STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel)
2349
__STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel)
2367
{
2350
{
2368
  register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2351
  uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
2369
  return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >>
2352
  return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >>
2370
          SHIFT_TAB_CCxP[iChannel]);
2353
          SHIFT_TAB_CCxP[iChannel]);
2371
}
2354
}
2372
 
2355
 
2373
/**
2356
/**
2374
  * @brief  Connect the TIMx_CH1, CH2 and CH3 pins  to the TI1 input (XOR combination).
2357
  * @brief  Connect the TIMx_CH1, CH2 and CH3 pins  to the TI1 input (XOR combination).
2375
  * @note Macro @ref IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
2358
  * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
2376
  *       a timer instance provides an XOR input.
2359
  *       a timer instance provides an XOR input.
2377
  * @rmtoll CR2          TI1S          LL_TIM_IC_EnableXORCombination
2360
  * @rmtoll CR2          TI1S          LL_TIM_IC_EnableXORCombination
2378
  * @param  TIMx Timer instance
2361
  * @param  TIMx Timer instance
2379
  * @retval None
2362
  * @retval None
2380
  */
2363
  */
Line 2383... Line 2366...
2383
  SET_BIT(TIMx->CR2, TIM_CR2_TI1S);
2366
  SET_BIT(TIMx->CR2, TIM_CR2_TI1S);
2384
}
2367
}
2385
 
2368
 
2386
/**
2369
/**
2387
  * @brief  Disconnect the TIMx_CH1, CH2 and CH3 pins  from the TI1 input.
2370
  * @brief  Disconnect the TIMx_CH1, CH2 and CH3 pins  from the TI1 input.
2388
  * @note Macro @ref IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
2371
  * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
2389
  *       a timer instance provides an XOR input.
2372
  *       a timer instance provides an XOR input.
2390
  * @rmtoll CR2          TI1S          LL_TIM_IC_DisableXORCombination
2373
  * @rmtoll CR2          TI1S          LL_TIM_IC_DisableXORCombination
2391
  * @param  TIMx Timer instance
2374
  * @param  TIMx Timer instance
2392
  * @retval None
2375
  * @retval None
2393
  */
2376
  */
Line 2396... Line 2379...
2396
  CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S);
2379
  CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S);
2397
}
2380
}
2398
 
2381
 
2399
/**
2382
/**
2400
  * @brief  Indicates whether the TIMx_CH1, CH2 and CH3 pins are connectected to the TI1 input.
2383
  * @brief  Indicates whether the TIMx_CH1, CH2 and CH3 pins are connectected to the TI1 input.
2401
  * @note Macro @ref IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
2384
  * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
2402
  * a timer instance provides an XOR input.
2385
  * a timer instance provides an XOR input.
2403
  * @rmtoll CR2          TI1S          LL_TIM_IC_IsEnabledXORCombination
2386
  * @rmtoll CR2          TI1S          LL_TIM_IC_IsEnabledXORCombination
2404
  * @param  TIMx Timer instance
2387
  * @param  TIMx Timer instance
2405
  * @retval State of bit (1 or 0).
2388
  * @retval State of bit (1 or 0).
2406
  */
2389
  */
2407
__STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(TIM_TypeDef *TIMx)
2390
__STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(TIM_TypeDef *TIMx)
2408
{
2391
{
2409
  return (READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S));
2392
  return ((READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S)) ? 1UL : 0UL);
2410
}
2393
}
2411
 
2394
 
2412
/**
2395
/**
2413
  * @brief  Get captured value for input channel 1.
2396
  * @brief  Get captured value for input channel 1.
2414
  * @note Macro @ref IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
2397
  * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
2415
  *       input channel 1 is supported by a timer instance.
2398
  *       input channel 1 is supported by a timer instance.
2416
  * @rmtoll CCR1         CCR1          LL_TIM_IC_GetCaptureCH1
2399
  * @rmtoll CCR1         CCR1          LL_TIM_IC_GetCaptureCH1
2417
  * @param  TIMx Timer instance
2400
  * @param  TIMx Timer instance
2418
  * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2401
  * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2419
  */
2402
  */
Line 2422... Line 2405...
2422
  return (uint32_t)(READ_REG(TIMx->CCR1));
2405
  return (uint32_t)(READ_REG(TIMx->CCR1));
2423
}
2406
}
2424
 
2407
 
2425
/**
2408
/**
2426
  * @brief  Get captured value for input channel 2.
2409
  * @brief  Get captured value for input channel 2.
2427
  * @note Macro @ref IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
2410
  * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
2428
  *       input channel 2 is supported by a timer instance.
2411
  *       input channel 2 is supported by a timer instance.
2429
  * @rmtoll CCR2         CCR2          LL_TIM_IC_GetCaptureCH2
2412
  * @rmtoll CCR2         CCR2          LL_TIM_IC_GetCaptureCH2
2430
  * @param  TIMx Timer instance
2413
  * @param  TIMx Timer instance
2431
  * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2414
  * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2432
  */
2415
  */
Line 2435... Line 2418...
2435
  return (uint32_t)(READ_REG(TIMx->CCR2));
2418
  return (uint32_t)(READ_REG(TIMx->CCR2));
2436
}
2419
}
2437
 
2420
 
2438
/**
2421
/**
2439
  * @brief  Get captured value for input channel 3.
2422
  * @brief  Get captured value for input channel 3.
2440
  * @note Macro @ref IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
2423
  * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
2441
  *       input channel 3 is supported by a timer instance.
2424
  *       input channel 3 is supported by a timer instance.
2442
  * @rmtoll CCR3         CCR3          LL_TIM_IC_GetCaptureCH3
2425
  * @rmtoll CCR3         CCR3          LL_TIM_IC_GetCaptureCH3
2443
  * @param  TIMx Timer instance
2426
  * @param  TIMx Timer instance
2444
  * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2427
  * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2445
  */
2428
  */
Line 2448... Line 2431...
2448
  return (uint32_t)(READ_REG(TIMx->CCR3));
2431
  return (uint32_t)(READ_REG(TIMx->CCR3));
2449
}
2432
}
2450
 
2433
 
2451
/**
2434
/**
2452
  * @brief  Get captured value for input channel 4.
2435
  * @brief  Get captured value for input channel 4.
2453
  * @note Macro @ref IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
2436
  * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
2454
  *       input channel 4 is supported by a timer instance.
2437
  *       input channel 4 is supported by a timer instance.
2455
  * @rmtoll CCR4         CCR4          LL_TIM_IC_GetCaptureCH4
2438
  * @rmtoll CCR4         CCR4          LL_TIM_IC_GetCaptureCH4
2456
  * @param  TIMx Timer instance
2439
  * @param  TIMx Timer instance
2457
  * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2440
  * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
2458
  */
2441
  */
Line 2469... Line 2452...
2469
  * @{
2452
  * @{
2470
  */
2453
  */
2471
/**
2454
/**
2472
  * @brief  Enable external clock mode 2.
2455
  * @brief  Enable external clock mode 2.
2473
  * @note When external clock mode 2 is enabled the counter is clocked by any active edge on the ETRF signal.
2456
  * @note When external clock mode 2 is enabled the counter is clocked by any active edge on the ETRF signal.
2474
  * @note Macro @ref IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2457
  * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2475
  *       whether or not a timer instance supports external clock mode2.
2458
  *       whether or not a timer instance supports external clock mode2.
2476
  * @rmtoll SMCR         ECE           LL_TIM_EnableExternalClock
2459
  * @rmtoll SMCR         ECE           LL_TIM_EnableExternalClock
2477
  * @param  TIMx Timer instance
2460
  * @param  TIMx Timer instance
2478
  * @retval None
2461
  * @retval None
2479
  */
2462
  */
Line 2482... Line 2465...
2482
  SET_BIT(TIMx->SMCR, TIM_SMCR_ECE);
2465
  SET_BIT(TIMx->SMCR, TIM_SMCR_ECE);
2483
}
2466
}
2484
 
2467
 
2485
/**
2468
/**
2486
  * @brief  Disable external clock mode 2.
2469
  * @brief  Disable external clock mode 2.
2487
  * @note Macro @ref IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2470
  * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2488
  *       whether or not a timer instance supports external clock mode2.
2471
  *       whether or not a timer instance supports external clock mode2.
2489
  * @rmtoll SMCR         ECE           LL_TIM_DisableExternalClock
2472
  * @rmtoll SMCR         ECE           LL_TIM_DisableExternalClock
2490
  * @param  TIMx Timer instance
2473
  * @param  TIMx Timer instance
2491
  * @retval None
2474
  * @retval None
2492
  */
2475
  */
Line 2495... Line 2478...
2495
  CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE);
2478
  CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE);
2496
}
2479
}
2497
 
2480
 
2498
/**
2481
/**
2499
  * @brief  Indicate whether external clock mode 2 is enabled.
2482
  * @brief  Indicate whether external clock mode 2 is enabled.
2500
  * @note Macro @ref IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2483
  * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2501
  *       whether or not a timer instance supports external clock mode2.
2484
  *       whether or not a timer instance supports external clock mode2.
2502
  * @rmtoll SMCR         ECE           LL_TIM_IsEnabledExternalClock
2485
  * @rmtoll SMCR         ECE           LL_TIM_IsEnabledExternalClock
2503
  * @param  TIMx Timer instance
2486
  * @param  TIMx Timer instance
2504
  * @retval State of bit (1 or 0).
2487
  * @retval State of bit (1 or 0).
2505
  */
2488
  */
2506
__STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(TIM_TypeDef *TIMx)
2489
__STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(TIM_TypeDef *TIMx)
2507
{
2490
{
2508
  return (READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE));
2491
  return ((READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE)) ? 1UL : 0UL);
2509
}
2492
}
2510
 
2493
 
2511
/**
2494
/**
2512
  * @brief  Set the clock source of the counter clock.
2495
  * @brief  Set the clock source of the counter clock.
2513
  * @note when selected clock source is external clock mode 1, the timer input
2496
  * @note when selected clock source is external clock mode 1, the timer input
2514
  *       the external clock is applied is selected by calling the @ref LL_TIM_SetTriggerInput()
2497
  *       the external clock is applied is selected by calling the @ref LL_TIM_SetTriggerInput()
2515
  *       function. This timer input must be configured by calling
2498
  *       function. This timer input must be configured by calling
2516
  *       the @ref LL_TIM_IC_Config() function.
2499
  *       the @ref LL_TIM_IC_Config() function.
2517
  * @note Macro @ref IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(TIMx) can be used to check
2500
  * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(TIMx) can be used to check
2518
  *       whether or not a timer instance supports external clock mode1.
2501
  *       whether or not a timer instance supports external clock mode1.
2519
  * @note Macro @ref IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2502
  * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
2520
  *       whether or not a timer instance supports external clock mode2.
2503
  *       whether or not a timer instance supports external clock mode2.
2521
  * @rmtoll SMCR         SMS           LL_TIM_SetClockSource\n
2504
  * @rmtoll SMCR         SMS           LL_TIM_SetClockSource\n
2522
  *         SMCR         ECE           LL_TIM_SetClockSource
2505
  *         SMCR         ECE           LL_TIM_SetClockSource
2523
  * @param  TIMx Timer instance
2506
  * @param  TIMx Timer instance
2524
  * @param  ClockSource This parameter can be one of the following values:
2507
  * @param  ClockSource This parameter can be one of the following values:
Line 2532... Line 2515...
2532
  MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource);
2515
  MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource);
2533
}
2516
}
2534
 
2517
 
2535
/**
2518
/**
2536
  * @brief  Set the encoder interface mode.
2519
  * @brief  Set the encoder interface mode.
2537
  * @note Macro @ref IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx) can be used to check
2520
  * @note Macro IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx) can be used to check
2538
  *       whether or not a timer instance supports the encoder mode.
2521
  *       whether or not a timer instance supports the encoder mode.
2539
  * @rmtoll SMCR         SMS           LL_TIM_SetEncoderMode
2522
  * @rmtoll SMCR         SMS           LL_TIM_SetEncoderMode
2540
  * @param  TIMx Timer instance
2523
  * @param  TIMx Timer instance
2541
  * @param  EncoderMode This parameter can be one of the following values:
2524
  * @param  EncoderMode This parameter can be one of the following values:
2542
  *         @arg @ref LL_TIM_ENCODERMODE_X2_TI1
2525
  *         @arg @ref LL_TIM_ENCODERMODE_X2_TI1
Line 2556... Line 2539...
2556
/** @defgroup TIM_LL_EF_Timer_Synchronization Timer synchronisation configuration
2539
/** @defgroup TIM_LL_EF_Timer_Synchronization Timer synchronisation configuration
2557
  * @{
2540
  * @{
2558
  */
2541
  */
2559
/**
2542
/**
2560
  * @brief  Set the trigger output (TRGO) used for timer synchronization .
2543
  * @brief  Set the trigger output (TRGO) used for timer synchronization .
2561
  * @note Macro @ref IS_TIM_MASTER_INSTANCE(TIMx) can be used to check
2544
  * @note Macro IS_TIM_MASTER_INSTANCE(TIMx) can be used to check
2562
  *       whether or not a timer instance can operate as a master timer.
2545
  *       whether or not a timer instance can operate as a master timer.
2563
  * @rmtoll CR2          MMS           LL_TIM_SetTriggerOutput
2546
  * @rmtoll CR2          MMS           LL_TIM_SetTriggerOutput
2564
  * @param  TIMx Timer instance
2547
  * @param  TIMx Timer instance
2565
  * @param  TimerSynchronization This parameter can be one of the following values:
2548
  * @param  TimerSynchronization This parameter can be one of the following values:
2566
  *         @arg @ref LL_TIM_TRGO_RESET
2549
  *         @arg @ref LL_TIM_TRGO_RESET
Line 2578... Line 2561...
2578
  MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization);
2561
  MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization);
2579
}
2562
}
2580
 
2563
 
2581
/**
2564
/**
2582
  * @brief  Set the synchronization mode of a slave timer.
2565
  * @brief  Set the synchronization mode of a slave timer.
2583
  * @note Macro @ref IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2566
  * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2584
  *       a timer instance can operate as a slave timer.
2567
  *       a timer instance can operate as a slave timer.
2585
  * @rmtoll SMCR         SMS           LL_TIM_SetSlaveMode
2568
  * @rmtoll SMCR         SMS           LL_TIM_SetSlaveMode
2586
  * @param  TIMx Timer instance
2569
  * @param  TIMx Timer instance
2587
  * @param  SlaveMode This parameter can be one of the following values:
2570
  * @param  SlaveMode This parameter can be one of the following values:
2588
  *         @arg @ref LL_TIM_SLAVEMODE_DISABLED
2571
  *         @arg @ref LL_TIM_SLAVEMODE_DISABLED
Line 2596... Line 2579...
2596
  MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode);
2579
  MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode);
2597
}
2580
}
2598
 
2581
 
2599
/**
2582
/**
2600
  * @brief  Set the selects the trigger input to be used to synchronize the counter.
2583
  * @brief  Set the selects the trigger input to be used to synchronize the counter.
2601
  * @note Macro @ref IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2584
  * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2602
  *       a timer instance can operate as a slave timer.
2585
  *       a timer instance can operate as a slave timer.
2603
  * @rmtoll SMCR         TS            LL_TIM_SetTriggerInput
2586
  * @rmtoll SMCR         TS            LL_TIM_SetTriggerInput
2604
  * @param  TIMx Timer instance
2587
  * @param  TIMx Timer instance
2605
  * @param  TriggerInput This parameter can be one of the following values:
2588
  * @param  TriggerInput This parameter can be one of the following values:
2606
  *         @arg @ref LL_TIM_TS_ITR0
2589
  *         @arg @ref LL_TIM_TS_ITR0
Line 2618... Line 2601...
2618
  MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput);
2601
  MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput);
2619
}
2602
}
2620
 
2603
 
2621
/**
2604
/**
2622
  * @brief  Enable the Master/Slave mode.
2605
  * @brief  Enable the Master/Slave mode.
2623
  * @note Macro @ref IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2606
  * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2624
  *       a timer instance can operate as a slave timer.
2607
  *       a timer instance can operate as a slave timer.
2625
  * @rmtoll SMCR         MSM           LL_TIM_EnableMasterSlaveMode
2608
  * @rmtoll SMCR         MSM           LL_TIM_EnableMasterSlaveMode
2626
  * @param  TIMx Timer instance
2609
  * @param  TIMx Timer instance
2627
  * @retval None
2610
  * @retval None
2628
  */
2611
  */
Line 2631... Line 2614...
2631
  SET_BIT(TIMx->SMCR, TIM_SMCR_MSM);
2614
  SET_BIT(TIMx->SMCR, TIM_SMCR_MSM);
2632
}
2615
}
2633
 
2616
 
2634
/**
2617
/**
2635
  * @brief  Disable the Master/Slave mode.
2618
  * @brief  Disable the Master/Slave mode.
2636
  * @note Macro @ref IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2619
  * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2637
  *       a timer instance can operate as a slave timer.
2620
  *       a timer instance can operate as a slave timer.
2638
  * @rmtoll SMCR         MSM           LL_TIM_DisableMasterSlaveMode
2621
  * @rmtoll SMCR         MSM           LL_TIM_DisableMasterSlaveMode
2639
  * @param  TIMx Timer instance
2622
  * @param  TIMx Timer instance
2640
  * @retval None
2623
  * @retval None
2641
  */
2624
  */
Line 2644... Line 2627...
2644
  CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM);
2627
  CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM);
2645
}
2628
}
2646
 
2629
 
2647
/**
2630
/**
2648
  * @brief Indicates whether the Master/Slave mode is enabled.
2631
  * @brief Indicates whether the Master/Slave mode is enabled.
2649
  * @note Macro @ref IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2632
  * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
2650
  * a timer instance can operate as a slave timer.
2633
  * a timer instance can operate as a slave timer.
2651
  * @rmtoll SMCR         MSM           LL_TIM_IsEnabledMasterSlaveMode
2634
  * @rmtoll SMCR         MSM           LL_TIM_IsEnabledMasterSlaveMode
2652
  * @param  TIMx Timer instance
2635
  * @param  TIMx Timer instance
2653
  * @retval State of bit (1 or 0).
2636
  * @retval State of bit (1 or 0).
2654
  */
2637
  */
2655
__STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(TIM_TypeDef *TIMx)
2638
__STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(TIM_TypeDef *TIMx)
2656
{
2639
{
2657
  return (READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM));
2640
  return ((READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM)) ? 1UL : 0UL);
2658
}
2641
}
2659
 
2642
 
2660
/**
2643
/**
2661
  * @brief  Configure the external trigger (ETR) input.
2644
  * @brief  Configure the external trigger (ETR) input.
2662
  * @note Macro @ref IS_TIM_ETR_INSTANCE(TIMx) can be used to check whether or not
2645
  * @note Macro IS_TIM_ETR_INSTANCE(TIMx) can be used to check whether or not
2663
  *       a timer instance provides an external trigger input.
2646
  *       a timer instance provides an external trigger input.
2664
  * @rmtoll SMCR         ETP           LL_TIM_ConfigETR\n
2647
  * @rmtoll SMCR         ETP           LL_TIM_ConfigETR\n
2665
  *         SMCR         ETPS          LL_TIM_ConfigETR\n
2648
  *         SMCR         ETPS          LL_TIM_ConfigETR\n
2666
  *         SMCR         ETF           LL_TIM_ConfigETR
2649
  *         SMCR         ETF           LL_TIM_ConfigETR
2667
  * @param  TIMx Timer instance
2650
  * @param  TIMx Timer instance
Line 2705... Line 2688...
2705
/** @defgroup TIM_LL_EF_Break_Function Break function configuration
2688
/** @defgroup TIM_LL_EF_Break_Function Break function configuration
2706
  * @{
2689
  * @{
2707
  */
2690
  */
2708
/**
2691
/**
2709
  * @brief  Enable the break function.
2692
  * @brief  Enable the break function.
2710
  * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2693
  * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2711
  *       a timer instance provides a break input.
2694
  *       a timer instance provides a break input.
2712
  * @rmtoll BDTR         BKE           LL_TIM_EnableBRK
2695
  * @rmtoll BDTR         BKE           LL_TIM_EnableBRK
2713
  * @param  TIMx Timer instance
2696
  * @param  TIMx Timer instance
2714
  * @retval None
2697
  * @retval None
2715
  */
2698
  */
2716
__STATIC_INLINE void LL_TIM_EnableBRK(TIM_TypeDef *TIMx)
2699
__STATIC_INLINE void LL_TIM_EnableBRK(TIM_TypeDef *TIMx)
2717
{
2700
{
-
 
2701
  __IO uint32_t tmpreg;
2718
  SET_BIT(TIMx->BDTR, TIM_BDTR_BKE);
2702
  SET_BIT(TIMx->BDTR, TIM_BDTR_BKE);
-
 
2703
  /* Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. */
-
 
2704
  tmpreg = READ_REG(TIMx->BDTR);
-
 
2705
  (void)(tmpreg);
2719
}
2706
}
2720
 
2707
 
2721
/**
2708
/**
2722
  * @brief  Disable the break function.
2709
  * @brief  Disable the break function.
2723
  * @rmtoll BDTR         BKE           LL_TIM_DisableBRK
2710
  * @rmtoll BDTR         BKE           LL_TIM_DisableBRK
2724
  * @param  TIMx Timer instance
2711
  * @param  TIMx Timer instance
2725
  * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2712
  * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2726
  *       a timer instance provides a break input.
2713
  *       a timer instance provides a break input.
2727
  * @retval None
2714
  * @retval None
2728
  */
2715
  */
2729
__STATIC_INLINE void LL_TIM_DisableBRK(TIM_TypeDef *TIMx)
2716
__STATIC_INLINE void LL_TIM_DisableBRK(TIM_TypeDef *TIMx)
2730
{
2717
{
-
 
2718
  __IO uint32_t tmpreg;
2731
  CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKE);
2719
  CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKE);
-
 
2720
  /* Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. */
-
 
2721
  tmpreg = READ_REG(TIMx->BDTR);
-
 
2722
  (void)(tmpreg);
2732
}
2723
}
2733
 
2724
 
2734
/**
2725
/**
2735
  * @brief  Configure the break input.
2726
  * @brief  Configure the break input.
2736
  * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2727
  * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2737
  *       a timer instance provides a break input.
2728
  *       a timer instance provides a break input.
2738
  * @rmtoll BDTR         BKP           LL_TIM_ConfigBRK
2729
  * @rmtoll BDTR         BKP           LL_TIM_ConfigBRK
2739
  * @param  TIMx Timer instance
2730
  * @param  TIMx Timer instance
2740
  * @param  BreakPolarity This parameter can be one of the following values:
2731
  * @param  BreakPolarity This parameter can be one of the following values:
2741
  *         @arg @ref LL_TIM_BREAK_POLARITY_LOW
2732
  *         @arg @ref LL_TIM_BREAK_POLARITY_LOW
2742
  *         @arg @ref LL_TIM_BREAK_POLARITY_HIGH
2733
  *         @arg @ref LL_TIM_BREAK_POLARITY_HIGH
2743
  * @retval None
2734
  * @retval None
2744
  */
2735
  */
2745
__STATIC_INLINE void LL_TIM_ConfigBRK(TIM_TypeDef *TIMx, uint32_t BreakPolarity)
2736
__STATIC_INLINE void LL_TIM_ConfigBRK(TIM_TypeDef *TIMx, uint32_t BreakPolarity)
2746
{
2737
{
-
 
2738
  __IO uint32_t tmpreg;
2747
  MODIFY_REG(TIMx->BDTR, TIM_BDTR_BKP, BreakPolarity);
2739
  MODIFY_REG(TIMx->BDTR, TIM_BDTR_BKP, BreakPolarity);
-
 
2740
  /* Note: Any write operation to BKP bit takes a delay of 1 APB clock cycle to become effective. */
-
 
2741
  tmpreg = READ_REG(TIMx->BDTR);
-
 
2742
  (void)(tmpreg);
2748
}
2743
}
2749
 
2744
 
2750
/**
2745
/**
2751
  * @brief  Select the outputs off state (enabled v.s. disabled) in Idle and Run modes.
2746
  * @brief  Select the outputs off state (enabled v.s. disabled) in Idle and Run modes.
2752
  * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2747
  * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2753
  *       a timer instance provides a break input.
2748
  *       a timer instance provides a break input.
2754
  * @rmtoll BDTR         OSSI          LL_TIM_SetOffStates\n
2749
  * @rmtoll BDTR         OSSI          LL_TIM_SetOffStates\n
2755
  *         BDTR         OSSR          LL_TIM_SetOffStates
2750
  *         BDTR         OSSR          LL_TIM_SetOffStates
2756
  * @param  TIMx Timer instance
2751
  * @param  TIMx Timer instance
2757
  * @param  OffStateIdle This parameter can be one of the following values:
2752
  * @param  OffStateIdle This parameter can be one of the following values:
Line 2767... Line 2762...
2767
  MODIFY_REG(TIMx->BDTR, TIM_BDTR_OSSI | TIM_BDTR_OSSR, OffStateIdle | OffStateRun);
2762
  MODIFY_REG(TIMx->BDTR, TIM_BDTR_OSSI | TIM_BDTR_OSSR, OffStateIdle | OffStateRun);
2768
}
2763
}
2769
 
2764
 
2770
/**
2765
/**
2771
  * @brief  Enable automatic output (MOE can be set by software or automatically when a break input is active).
2766
  * @brief  Enable automatic output (MOE can be set by software or automatically when a break input is active).
2772
  * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2767
  * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2773
  *       a timer instance provides a break input.
2768
  *       a timer instance provides a break input.
2774
  * @rmtoll BDTR         AOE           LL_TIM_EnableAutomaticOutput
2769
  * @rmtoll BDTR         AOE           LL_TIM_EnableAutomaticOutput
2775
  * @param  TIMx Timer instance
2770
  * @param  TIMx Timer instance
2776
  * @retval None
2771
  * @retval None
2777
  */
2772
  */
Line 2780... Line 2775...
2780
  SET_BIT(TIMx->BDTR, TIM_BDTR_AOE);
2775
  SET_BIT(TIMx->BDTR, TIM_BDTR_AOE);
2781
}
2776
}
2782
 
2777
 
2783
/**
2778
/**
2784
  * @brief  Disable automatic output (MOE can be set only by software).
2779
  * @brief  Disable automatic output (MOE can be set only by software).
2785
  * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2780
  * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2786
  *       a timer instance provides a break input.
2781
  *       a timer instance provides a break input.
2787
  * @rmtoll BDTR         AOE           LL_TIM_DisableAutomaticOutput
2782
  * @rmtoll BDTR         AOE           LL_TIM_DisableAutomaticOutput
2788
  * @param  TIMx Timer instance
2783
  * @param  TIMx Timer instance
2789
  * @retval None
2784
  * @retval None
2790
  */
2785
  */
Line 2793... Line 2788...
2793
  CLEAR_BIT(TIMx->BDTR, TIM_BDTR_AOE);
2788
  CLEAR_BIT(TIMx->BDTR, TIM_BDTR_AOE);
2794
}
2789
}
2795
 
2790
 
2796
/**
2791
/**
2797
  * @brief  Indicate whether automatic output is enabled.
2792
  * @brief  Indicate whether automatic output is enabled.
2798
  * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2793
  * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2799
  *       a timer instance provides a break input.
2794
  *       a timer instance provides a break input.
2800
  * @rmtoll BDTR         AOE           LL_TIM_IsEnabledAutomaticOutput
2795
  * @rmtoll BDTR         AOE           LL_TIM_IsEnabledAutomaticOutput
2801
  * @param  TIMx Timer instance
2796
  * @param  TIMx Timer instance
2802
  * @retval State of bit (1 or 0).
2797
  * @retval State of bit (1 or 0).
2803
  */
2798
  */
2804
__STATIC_INLINE uint32_t LL_TIM_IsEnabledAutomaticOutput(TIM_TypeDef *TIMx)
2799
__STATIC_INLINE uint32_t LL_TIM_IsEnabledAutomaticOutput(TIM_TypeDef *TIMx)
2805
{
2800
{
2806
  return (READ_BIT(TIMx->BDTR, TIM_BDTR_AOE) == (TIM_BDTR_AOE));
2801
  return ((READ_BIT(TIMx->BDTR, TIM_BDTR_AOE) == (TIM_BDTR_AOE)) ? 1UL : 0UL);
2807
}
2802
}
2808
 
2803
 
2809
/**
2804
/**
2810
  * @brief  Enable the outputs (set the MOE bit in TIMx_BDTR register).
2805
  * @brief  Enable the outputs (set the MOE bit in TIMx_BDTR register).
2811
  * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by
2806
  * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by
2812
  *       software and is reset in case of break or break2 event
2807
  *       software and is reset in case of break or break2 event
2813
  * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2808
  * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2814
  *       a timer instance provides a break input.
2809
  *       a timer instance provides a break input.
2815
  * @rmtoll BDTR         MOE           LL_TIM_EnableAllOutputs
2810
  * @rmtoll BDTR         MOE           LL_TIM_EnableAllOutputs
2816
  * @param  TIMx Timer instance
2811
  * @param  TIMx Timer instance
2817
  * @retval None
2812
  * @retval None
2818
  */
2813
  */
Line 2823... Line 2818...
2823
 
2818
 
2824
/**
2819
/**
2825
  * @brief  Disable the outputs (reset the MOE bit in TIMx_BDTR register).
2820
  * @brief  Disable the outputs (reset the MOE bit in TIMx_BDTR register).
2826
  * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by
2821
  * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by
2827
  *       software and is reset in case of break or break2 event.
2822
  *       software and is reset in case of break or break2 event.
2828
  * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2823
  * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2829
  *       a timer instance provides a break input.
2824
  *       a timer instance provides a break input.
2830
  * @rmtoll BDTR         MOE           LL_TIM_DisableAllOutputs
2825
  * @rmtoll BDTR         MOE           LL_TIM_DisableAllOutputs
2831
  * @param  TIMx Timer instance
2826
  * @param  TIMx Timer instance
2832
  * @retval None
2827
  * @retval None
2833
  */
2828
  */
Line 2836... Line 2831...
2836
  CLEAR_BIT(TIMx->BDTR, TIM_BDTR_MOE);
2831
  CLEAR_BIT(TIMx->BDTR, TIM_BDTR_MOE);
2837
}
2832
}
2838
 
2833
 
2839
/**
2834
/**
2840
  * @brief  Indicates whether outputs are enabled.
2835
  * @brief  Indicates whether outputs are enabled.
2841
  * @note Macro @ref IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2836
  * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
2842
  *       a timer instance provides a break input.
2837
  *       a timer instance provides a break input.
2843
  * @rmtoll BDTR         MOE           LL_TIM_IsEnabledAllOutputs
2838
  * @rmtoll BDTR         MOE           LL_TIM_IsEnabledAllOutputs
2844
  * @param  TIMx Timer instance
2839
  * @param  TIMx Timer instance
2845
  * @retval State of bit (1 or 0).
2840
  * @retval State of bit (1 or 0).
2846
  */
2841
  */
2847
__STATIC_INLINE uint32_t LL_TIM_IsEnabledAllOutputs(TIM_TypeDef *TIMx)
2842
__STATIC_INLINE uint32_t LL_TIM_IsEnabledAllOutputs(TIM_TypeDef *TIMx)
2848
{
2843
{
2849
  return (READ_BIT(TIMx->BDTR, TIM_BDTR_MOE) == (TIM_BDTR_MOE));
2844
  return ((READ_BIT(TIMx->BDTR, TIM_BDTR_MOE) == (TIM_BDTR_MOE)) ? 1UL : 0UL);
2850
}
2845
}
2851
 
2846
 
2852
/**
2847
/**
2853
  * @}
2848
  * @}
2854
  */
2849
  */
Line 2856... Line 2851...
2856
/** @defgroup TIM_LL_EF_DMA_Burst_Mode DMA burst mode configuration
2851
/** @defgroup TIM_LL_EF_DMA_Burst_Mode DMA burst mode configuration
2857
  * @{
2852
  * @{
2858
  */
2853
  */
2859
/**
2854
/**
2860
  * @brief  Configures the timer DMA burst feature.
2855
  * @brief  Configures the timer DMA burst feature.
2861
  * @note Macro @ref IS_TIM_DMABURST_INSTANCE(TIMx) can be used to check whether or
2856
  * @note Macro IS_TIM_DMABURST_INSTANCE(TIMx) can be used to check whether or
2862
  *       not a timer instance supports the DMA burst mode.
2857
  *       not a timer instance supports the DMA burst mode.
2863
  * @rmtoll DCR          DBL           LL_TIM_ConfigDMABurst\n
2858
  * @rmtoll DCR          DBL           LL_TIM_ConfigDMABurst\n
2864
  *         DCR          DBA           LL_TIM_ConfigDMABurst
2859
  *         DCR          DBA           LL_TIM_ConfigDMABurst
2865
  * @param  TIMx Timer instance
2860
  * @param  TIMx Timer instance
2866
  * @param  DMABurstBaseAddress This parameter can be one of the following values:
2861
  * @param  DMABurstBaseAddress This parameter can be one of the following values:
Line 2903... Line 2898...
2903
  *         @arg @ref LL_TIM_DMABURST_LENGTH_18TRANSFERS
2898
  *         @arg @ref LL_TIM_DMABURST_LENGTH_18TRANSFERS
2904
  * @retval None
2899
  * @retval None
2905
  */
2900
  */
2906
__STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_t DMABurstLength)
2901
__STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_t DMABurstLength)
2907
{
2902
{
2908
  MODIFY_REG(TIMx->DCR, TIM_DCR_DBL | TIM_DCR_DBA, DMABurstBaseAddress | DMABurstLength);
2903
  MODIFY_REG(TIMx->DCR, (TIM_DCR_DBL | TIM_DCR_DBA), (DMABurstBaseAddress | DMABurstLength));
2909
}
2904
}
2910
 
2905
 
2911
/**
2906
/**
2912
  * @}
2907
  * @}
2913
  */
2908
  */
Line 2915... Line 2910...
2915
 
2910
 
2916
/**
2911
/**
2917
  * @}
2912
  * @}
2918
  */
2913
  */
2919
 
2914
 
2920
 
-
 
2921
/** @defgroup TIM_LL_EF_FLAG_Management FLAG-Management
2915
/** @defgroup TIM_LL_EF_FLAG_Management FLAG-Management
2922
  * @{
2916
  * @{
2923
  */
2917
  */
2924
/**
2918
/**
2925
  * @brief  Clear the update interrupt flag (UIF).
2919
  * @brief  Clear the update interrupt flag (UIF).
Line 2938... Line 2932...
2938
  * @param  TIMx Timer instance
2932
  * @param  TIMx Timer instance
2939
  * @retval State of bit (1 or 0).
2933
  * @retval State of bit (1 or 0).
2940
  */
2934
  */
2941
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(TIM_TypeDef *TIMx)
2935
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(TIM_TypeDef *TIMx)
2942
{
2936
{
2943
  return (READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF));
2937
  return ((READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF)) ? 1UL : 0UL);
2944
}
2938
}
2945
 
2939
 
2946
/**
2940
/**
2947
  * @brief  Clear the Capture/Compare 1 interrupt flag (CC1F).
2941
  * @brief  Clear the Capture/Compare 1 interrupt flag (CC1F).
2948
  * @rmtoll SR           CC1IF         LL_TIM_ClearFlag_CC1
2942
  * @rmtoll SR           CC1IF         LL_TIM_ClearFlag_CC1
Line 2960... Line 2954...
2960
  * @param  TIMx Timer instance
2954
  * @param  TIMx Timer instance
2961
  * @retval State of bit (1 or 0).
2955
  * @retval State of bit (1 or 0).
2962
  */
2956
  */
2963
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1(TIM_TypeDef *TIMx)
2957
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1(TIM_TypeDef *TIMx)
2964
{
2958
{
2965
  return (READ_BIT(TIMx->SR, TIM_SR_CC1IF) == (TIM_SR_CC1IF));
2959
  return ((READ_BIT(TIMx->SR, TIM_SR_CC1IF) == (TIM_SR_CC1IF)) ? 1UL : 0UL);
2966
}
2960
}
2967
 
2961
 
2968
/**
2962
/**
2969
  * @brief  Clear the Capture/Compare 2 interrupt flag (CC2F).
2963
  * @brief  Clear the Capture/Compare 2 interrupt flag (CC2F).
2970
  * @rmtoll SR           CC2IF         LL_TIM_ClearFlag_CC2
2964
  * @rmtoll SR           CC2IF         LL_TIM_ClearFlag_CC2
Line 2982... Line 2976...
2982
  * @param  TIMx Timer instance
2976
  * @param  TIMx Timer instance
2983
  * @retval State of bit (1 or 0).
2977
  * @retval State of bit (1 or 0).
2984
  */
2978
  */
2985
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2(TIM_TypeDef *TIMx)
2979
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2(TIM_TypeDef *TIMx)
2986
{
2980
{
2987
  return (READ_BIT(TIMx->SR, TIM_SR_CC2IF) == (TIM_SR_CC2IF));
2981
  return ((READ_BIT(TIMx->SR, TIM_SR_CC2IF) == (TIM_SR_CC2IF)) ? 1UL : 0UL);
2988
}
2982
}
2989
 
2983
 
2990
/**
2984
/**
2991
  * @brief  Clear the Capture/Compare 3 interrupt flag (CC3F).
2985
  * @brief  Clear the Capture/Compare 3 interrupt flag (CC3F).
2992
  * @rmtoll SR           CC3IF         LL_TIM_ClearFlag_CC3
2986
  * @rmtoll SR           CC3IF         LL_TIM_ClearFlag_CC3
Line 3004... Line 2998...
3004
  * @param  TIMx Timer instance
2998
  * @param  TIMx Timer instance
3005
  * @retval State of bit (1 or 0).
2999
  * @retval State of bit (1 or 0).
3006
  */
3000
  */
3007
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3(TIM_TypeDef *TIMx)
3001
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3(TIM_TypeDef *TIMx)
3008
{
3002
{
3009
  return (READ_BIT(TIMx->SR, TIM_SR_CC3IF) == (TIM_SR_CC3IF));
3003
  return ((READ_BIT(TIMx->SR, TIM_SR_CC3IF) == (TIM_SR_CC3IF)) ? 1UL : 0UL);
3010
}
3004
}
3011
 
3005
 
3012
/**
3006
/**
3013
  * @brief  Clear the Capture/Compare 4 interrupt flag (CC4F).
3007
  * @brief  Clear the Capture/Compare 4 interrupt flag (CC4F).
3014
  * @rmtoll SR           CC4IF         LL_TIM_ClearFlag_CC4
3008
  * @rmtoll SR           CC4IF         LL_TIM_ClearFlag_CC4
Line 3026... Line 3020...
3026
  * @param  TIMx Timer instance
3020
  * @param  TIMx Timer instance
3027
  * @retval State of bit (1 or 0).
3021
  * @retval State of bit (1 or 0).
3028
  */
3022
  */
3029
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4(TIM_TypeDef *TIMx)
3023
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4(TIM_TypeDef *TIMx)
3030
{
3024
{
3031
  return (READ_BIT(TIMx->SR, TIM_SR_CC4IF) == (TIM_SR_CC4IF));
3025
  return ((READ_BIT(TIMx->SR, TIM_SR_CC4IF) == (TIM_SR_CC4IF)) ? 1UL : 0UL);
3032
}
3026
}
3033
 
3027
 
3034
/**
3028
/**
3035
  * @brief  Clear the commutation interrupt flag (COMIF).
3029
  * @brief  Clear the commutation interrupt flag (COMIF).
3036
  * @rmtoll SR           COMIF         LL_TIM_ClearFlag_COM
3030
  * @rmtoll SR           COMIF         LL_TIM_ClearFlag_COM
Line 3048... Line 3042...
3048
  * @param  TIMx Timer instance
3042
  * @param  TIMx Timer instance
3049
  * @retval State of bit (1 or 0).
3043
  * @retval State of bit (1 or 0).
3050
  */
3044
  */
3051
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_COM(TIM_TypeDef *TIMx)
3045
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_COM(TIM_TypeDef *TIMx)
3052
{
3046
{
3053
  return (READ_BIT(TIMx->SR, TIM_SR_COMIF) == (TIM_SR_COMIF));
3047
  return ((READ_BIT(TIMx->SR, TIM_SR_COMIF) == (TIM_SR_COMIF)) ? 1UL : 0UL);
3054
}
3048
}
3055
 
3049
 
3056
/**
3050
/**
3057
  * @brief  Clear the trigger interrupt flag (TIF).
3051
  * @brief  Clear the trigger interrupt flag (TIF).
3058
  * @rmtoll SR           TIF           LL_TIM_ClearFlag_TRIG
3052
  * @rmtoll SR           TIF           LL_TIM_ClearFlag_TRIG
Line 3070... Line 3064...
3070
  * @param  TIMx Timer instance
3064
  * @param  TIMx Timer instance
3071
  * @retval State of bit (1 or 0).
3065
  * @retval State of bit (1 or 0).
3072
  */
3066
  */
3073
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_TRIG(TIM_TypeDef *TIMx)
3067
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_TRIG(TIM_TypeDef *TIMx)
3074
{
3068
{
3075
  return (READ_BIT(TIMx->SR, TIM_SR_TIF) == (TIM_SR_TIF));
3069
  return ((READ_BIT(TIMx->SR, TIM_SR_TIF) == (TIM_SR_TIF)) ? 1UL : 0UL);
3076
}
3070
}
3077
 
3071
 
3078
/**
3072
/**
3079
  * @brief  Clear the break interrupt flag (BIF).
3073
  * @brief  Clear the break interrupt flag (BIF).
3080
  * @rmtoll SR           BIF           LL_TIM_ClearFlag_BRK
3074
  * @rmtoll SR           BIF           LL_TIM_ClearFlag_BRK
Line 3092... Line 3086...
3092
  * @param  TIMx Timer instance
3086
  * @param  TIMx Timer instance
3093
  * @retval State of bit (1 or 0).
3087
  * @retval State of bit (1 or 0).
3094
  */
3088
  */
3095
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK(TIM_TypeDef *TIMx)
3089
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK(TIM_TypeDef *TIMx)
3096
{
3090
{
3097
  return (READ_BIT(TIMx->SR, TIM_SR_BIF) == (TIM_SR_BIF));
3091
  return ((READ_BIT(TIMx->SR, TIM_SR_BIF) == (TIM_SR_BIF)) ? 1UL : 0UL);
3098
}
3092
}
3099
 
3093
 
3100
/**
3094
/**
3101
  * @brief  Clear the Capture/Compare 1 over-capture interrupt flag (CC1OF).
3095
  * @brief  Clear the Capture/Compare 1 over-capture interrupt flag (CC1OF).
3102
  * @rmtoll SR           CC1OF         LL_TIM_ClearFlag_CC1OVR
3096
  * @rmtoll SR           CC1OF         LL_TIM_ClearFlag_CC1OVR
Line 3114... Line 3108...
3114
  * @param  TIMx Timer instance
3108
  * @param  TIMx Timer instance
3115
  * @retval State of bit (1 or 0).
3109
  * @retval State of bit (1 or 0).
3116
  */
3110
  */
3117
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(TIM_TypeDef *TIMx)
3111
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(TIM_TypeDef *TIMx)
3118
{
3112
{
3119
  return (READ_BIT(TIMx->SR, TIM_SR_CC1OF) == (TIM_SR_CC1OF));
3113
  return ((READ_BIT(TIMx->SR, TIM_SR_CC1OF) == (TIM_SR_CC1OF)) ? 1UL : 0UL);
3120
}
3114
}
3121
 
3115
 
3122
/**
3116
/**
3123
  * @brief  Clear the Capture/Compare 2 over-capture interrupt flag (CC2OF).
3117
  * @brief  Clear the Capture/Compare 2 over-capture interrupt flag (CC2OF).
3124
  * @rmtoll SR           CC2OF         LL_TIM_ClearFlag_CC2OVR
3118
  * @rmtoll SR           CC2OF         LL_TIM_ClearFlag_CC2OVR
Line 3136... Line 3130...
3136
  * @param  TIMx Timer instance
3130
  * @param  TIMx Timer instance
3137
  * @retval State of bit (1 or 0).
3131
  * @retval State of bit (1 or 0).
3138
  */
3132
  */
3139
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(TIM_TypeDef *TIMx)
3133
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(TIM_TypeDef *TIMx)
3140
{
3134
{
3141
  return (READ_BIT(TIMx->SR, TIM_SR_CC2OF) == (TIM_SR_CC2OF));
3135
  return ((READ_BIT(TIMx->SR, TIM_SR_CC2OF) == (TIM_SR_CC2OF)) ? 1UL : 0UL);
3142
}
3136
}
3143
 
3137
 
3144
/**
3138
/**
3145
  * @brief  Clear the Capture/Compare 3 over-capture interrupt flag (CC3OF).
3139
  * @brief  Clear the Capture/Compare 3 over-capture interrupt flag (CC3OF).
3146
  * @rmtoll SR           CC3OF         LL_TIM_ClearFlag_CC3OVR
3140
  * @rmtoll SR           CC3OF         LL_TIM_ClearFlag_CC3OVR
Line 3158... Line 3152...
3158
  * @param  TIMx Timer instance
3152
  * @param  TIMx Timer instance
3159
  * @retval State of bit (1 or 0).
3153
  * @retval State of bit (1 or 0).
3160
  */
3154
  */
3161
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(TIM_TypeDef *TIMx)
3155
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(TIM_TypeDef *TIMx)
3162
{
3156
{
3163
  return (READ_BIT(TIMx->SR, TIM_SR_CC3OF) == (TIM_SR_CC3OF));
3157
  return ((READ_BIT(TIMx->SR, TIM_SR_CC3OF) == (TIM_SR_CC3OF)) ? 1UL : 0UL);
3164
}
3158
}
3165
 
3159
 
3166
/**
3160
/**
3167
  * @brief  Clear the Capture/Compare 4 over-capture interrupt flag (CC4OF).
3161
  * @brief  Clear the Capture/Compare 4 over-capture interrupt flag (CC4OF).
3168
  * @rmtoll SR           CC4OF         LL_TIM_ClearFlag_CC4OVR
3162
  * @rmtoll SR           CC4OF         LL_TIM_ClearFlag_CC4OVR
Line 3180... Line 3174...
3180
  * @param  TIMx Timer instance
3174
  * @param  TIMx Timer instance
3181
  * @retval State of bit (1 or 0).
3175
  * @retval State of bit (1 or 0).
3182
  */
3176
  */
3183
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(TIM_TypeDef *TIMx)
3177
__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(TIM_TypeDef *TIMx)
3184
{
3178
{
3185
  return (READ_BIT(TIMx->SR, TIM_SR_CC4OF) == (TIM_SR_CC4OF));
3179
  return ((READ_BIT(TIMx->SR, TIM_SR_CC4OF) == (TIM_SR_CC4OF)) ? 1UL : 0UL);
3186
}
3180
}
3187
 
3181
 
3188
/**
3182
/**
3189
  * @}
3183
  * @}
3190
  */
3184
  */
Line 3220... Line 3214...
3220
  * @param  TIMx Timer instance
3214
  * @param  TIMx Timer instance
3221
  * @retval State of bit (1 or 0).
3215
  * @retval State of bit (1 or 0).
3222
  */
3216
  */
3223
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_UPDATE(TIM_TypeDef *TIMx)
3217
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_UPDATE(TIM_TypeDef *TIMx)
3224
{
3218
{
3225
  return (READ_BIT(TIMx->DIER, TIM_DIER_UIE) == (TIM_DIER_UIE));
3219
  return ((READ_BIT(TIMx->DIER, TIM_DIER_UIE) == (TIM_DIER_UIE)) ? 1UL : 0UL);
3226
}
3220
}
3227
 
3221
 
3228
/**
3222
/**
3229
  * @brief  Enable capture/compare 1 interrupt (CC1IE).
3223
  * @brief  Enable capture/compare 1 interrupt (CC1IE).
3230
  * @rmtoll DIER         CC1IE         LL_TIM_EnableIT_CC1
3224
  * @rmtoll DIER         CC1IE         LL_TIM_EnableIT_CC1
Line 3253... Line 3247...
3253
  * @param  TIMx Timer instance
3247
  * @param  TIMx Timer instance
3254
  * @retval State of bit (1 or 0).
3248
  * @retval State of bit (1 or 0).
3255
  */
3249
  */
3256
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC1(TIM_TypeDef *TIMx)
3250
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC1(TIM_TypeDef *TIMx)
3257
{
3251
{
3258
  return (READ_BIT(TIMx->DIER, TIM_DIER_CC1IE) == (TIM_DIER_CC1IE));
3252
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1IE) == (TIM_DIER_CC1IE)) ? 1UL : 0UL);
3259
}
3253
}
3260
 
3254
 
3261
/**
3255
/**
3262
  * @brief  Enable capture/compare 2 interrupt (CC2IE).
3256
  * @brief  Enable capture/compare 2 interrupt (CC2IE).
3263
  * @rmtoll DIER         CC2IE         LL_TIM_EnableIT_CC2
3257
  * @rmtoll DIER         CC2IE         LL_TIM_EnableIT_CC2
Line 3286... Line 3280...
3286
  * @param  TIMx Timer instance
3280
  * @param  TIMx Timer instance
3287
  * @retval State of bit (1 or 0).
3281
  * @retval State of bit (1 or 0).
3288
  */
3282
  */
3289
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC2(TIM_TypeDef *TIMx)
3283
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC2(TIM_TypeDef *TIMx)
3290
{
3284
{
3291
  return (READ_BIT(TIMx->DIER, TIM_DIER_CC2IE) == (TIM_DIER_CC2IE));
3285
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2IE) == (TIM_DIER_CC2IE)) ? 1UL : 0UL);
3292
}
3286
}
3293
 
3287
 
3294
/**
3288
/**
3295
  * @brief  Enable capture/compare 3 interrupt (CC3IE).
3289
  * @brief  Enable capture/compare 3 interrupt (CC3IE).
3296
  * @rmtoll DIER         CC3IE         LL_TIM_EnableIT_CC3
3290
  * @rmtoll DIER         CC3IE         LL_TIM_EnableIT_CC3
Line 3319... Line 3313...
3319
  * @param  TIMx Timer instance
3313
  * @param  TIMx Timer instance
3320
  * @retval State of bit (1 or 0).
3314
  * @retval State of bit (1 or 0).
3321
  */
3315
  */
3322
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC3(TIM_TypeDef *TIMx)
3316
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC3(TIM_TypeDef *TIMx)
3323
{
3317
{
3324
  return (READ_BIT(TIMx->DIER, TIM_DIER_CC3IE) == (TIM_DIER_CC3IE));
3318
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3IE) == (TIM_DIER_CC3IE)) ? 1UL : 0UL);
3325
}
3319
}
3326
 
3320
 
3327
/**
3321
/**
3328
  * @brief  Enable capture/compare 4 interrupt (CC4IE).
3322
  * @brief  Enable capture/compare 4 interrupt (CC4IE).
3329
  * @rmtoll DIER         CC4IE         LL_TIM_EnableIT_CC4
3323
  * @rmtoll DIER         CC4IE         LL_TIM_EnableIT_CC4
Line 3352... Line 3346...
3352
  * @param  TIMx Timer instance
3346
  * @param  TIMx Timer instance
3353
  * @retval State of bit (1 or 0).
3347
  * @retval State of bit (1 or 0).
3354
  */
3348
  */
3355
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC4(TIM_TypeDef *TIMx)
3349
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC4(TIM_TypeDef *TIMx)
3356
{
3350
{
3357
  return (READ_BIT(TIMx->DIER, TIM_DIER_CC4IE) == (TIM_DIER_CC4IE));
3351
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4IE) == (TIM_DIER_CC4IE)) ? 1UL : 0UL);
3358
}
3352
}
3359
 
3353
 
3360
/**
3354
/**
3361
  * @brief  Enable commutation interrupt (COMIE).
3355
  * @brief  Enable commutation interrupt (COMIE).
3362
  * @rmtoll DIER         COMIE         LL_TIM_EnableIT_COM
3356
  * @rmtoll DIER         COMIE         LL_TIM_EnableIT_COM
Line 3385... Line 3379...
3385
  * @param  TIMx Timer instance
3379
  * @param  TIMx Timer instance
3386
  * @retval State of bit (1 or 0).
3380
  * @retval State of bit (1 or 0).
3387
  */
3381
  */
3388
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_COM(TIM_TypeDef *TIMx)
3382
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_COM(TIM_TypeDef *TIMx)
3389
{
3383
{
3390
  return (READ_BIT(TIMx->DIER, TIM_DIER_COMIE) == (TIM_DIER_COMIE));
3384
  return ((READ_BIT(TIMx->DIER, TIM_DIER_COMIE) == (TIM_DIER_COMIE)) ? 1UL : 0UL);
3391
}
3385
}
3392
 
3386
 
3393
/**
3387
/**
3394
  * @brief  Enable trigger interrupt (TIE).
3388
  * @brief  Enable trigger interrupt (TIE).
3395
  * @rmtoll DIER         TIE           LL_TIM_EnableIT_TRIG
3389
  * @rmtoll DIER         TIE           LL_TIM_EnableIT_TRIG
Line 3418... Line 3412...
3418
  * @param  TIMx Timer instance
3412
  * @param  TIMx Timer instance
3419
  * @retval State of bit (1 or 0).
3413
  * @retval State of bit (1 or 0).
3420
  */
3414
  */
3421
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_TRIG(TIM_TypeDef *TIMx)
3415
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_TRIG(TIM_TypeDef *TIMx)
3422
{
3416
{
3423
  return (READ_BIT(TIMx->DIER, TIM_DIER_TIE) == (TIM_DIER_TIE));
3417
  return ((READ_BIT(TIMx->DIER, TIM_DIER_TIE) == (TIM_DIER_TIE)) ? 1UL : 0UL);
3424
}
3418
}
3425
 
3419
 
3426
/**
3420
/**
3427
  * @brief  Enable break interrupt (BIE).
3421
  * @brief  Enable break interrupt (BIE).
3428
  * @rmtoll DIER         BIE           LL_TIM_EnableIT_BRK
3422
  * @rmtoll DIER         BIE           LL_TIM_EnableIT_BRK
Line 3451... Line 3445...
3451
  * @param  TIMx Timer instance
3445
  * @param  TIMx Timer instance
3452
  * @retval State of bit (1 or 0).
3446
  * @retval State of bit (1 or 0).
3453
  */
3447
  */
3454
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_BRK(TIM_TypeDef *TIMx)
3448
__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_BRK(TIM_TypeDef *TIMx)
3455
{
3449
{
3456
  return (READ_BIT(TIMx->DIER, TIM_DIER_BIE) == (TIM_DIER_BIE));
3450
  return ((READ_BIT(TIMx->DIER, TIM_DIER_BIE) == (TIM_DIER_BIE)) ? 1UL : 0UL);
3457
}
3451
}
3458
 
3452
 
3459
/**
3453
/**
3460
  * @}
3454
  * @}
3461
  */
3455
  */
Line 3491... Line 3485...
3491
  * @param  TIMx Timer instance
3485
  * @param  TIMx Timer instance
3492
  * @retval State of bit (1 or 0).
3486
  * @retval State of bit (1 or 0).
3493
  */
3487
  */
3494
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_UPDATE(TIM_TypeDef *TIMx)
3488
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_UPDATE(TIM_TypeDef *TIMx)
3495
{
3489
{
3496
  return (READ_BIT(TIMx->DIER, TIM_DIER_UDE) == (TIM_DIER_UDE));
3490
  return ((READ_BIT(TIMx->DIER, TIM_DIER_UDE) == (TIM_DIER_UDE)) ? 1UL : 0UL);
3497
}
3491
}
3498
 
3492
 
3499
/**
3493
/**
3500
  * @brief  Enable capture/compare 1 DMA request (CC1DE).
3494
  * @brief  Enable capture/compare 1 DMA request (CC1DE).
3501
  * @rmtoll DIER         CC1DE         LL_TIM_EnableDMAReq_CC1
3495
  * @rmtoll DIER         CC1DE         LL_TIM_EnableDMAReq_CC1
Line 3524... Line 3518...
3524
  * @param  TIMx Timer instance
3518
  * @param  TIMx Timer instance
3525
  * @retval State of bit (1 or 0).
3519
  * @retval State of bit (1 or 0).
3526
  */
3520
  */
3527
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC1(TIM_TypeDef *TIMx)
3521
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC1(TIM_TypeDef *TIMx)
3528
{
3522
{
3529
  return (READ_BIT(TIMx->DIER, TIM_DIER_CC1DE) == (TIM_DIER_CC1DE));
3523
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1DE) == (TIM_DIER_CC1DE)) ? 1UL : 0UL);
3530
}
3524
}
3531
 
3525
 
3532
/**
3526
/**
3533
  * @brief  Enable capture/compare 2 DMA request (CC2DE).
3527
  * @brief  Enable capture/compare 2 DMA request (CC2DE).
3534
  * @rmtoll DIER         CC2DE         LL_TIM_EnableDMAReq_CC2
3528
  * @rmtoll DIER         CC2DE         LL_TIM_EnableDMAReq_CC2
Line 3557... Line 3551...
3557
  * @param  TIMx Timer instance
3551
  * @param  TIMx Timer instance
3558
  * @retval State of bit (1 or 0).
3552
  * @retval State of bit (1 or 0).
3559
  */
3553
  */
3560
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC2(TIM_TypeDef *TIMx)
3554
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC2(TIM_TypeDef *TIMx)
3561
{
3555
{
3562
  return (READ_BIT(TIMx->DIER, TIM_DIER_CC2DE) == (TIM_DIER_CC2DE));
3556
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2DE) == (TIM_DIER_CC2DE)) ? 1UL : 0UL);
3563
}
3557
}
3564
 
3558
 
3565
/**
3559
/**
3566
  * @brief  Enable capture/compare 3 DMA request (CC3DE).
3560
  * @brief  Enable capture/compare 3 DMA request (CC3DE).
3567
  * @rmtoll DIER         CC3DE         LL_TIM_EnableDMAReq_CC3
3561
  * @rmtoll DIER         CC3DE         LL_TIM_EnableDMAReq_CC3
Line 3590... Line 3584...
3590
  * @param  TIMx Timer instance
3584
  * @param  TIMx Timer instance
3591
  * @retval State of bit (1 or 0).
3585
  * @retval State of bit (1 or 0).
3592
  */
3586
  */
3593
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC3(TIM_TypeDef *TIMx)
3587
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC3(TIM_TypeDef *TIMx)
3594
{
3588
{
3595
  return (READ_BIT(TIMx->DIER, TIM_DIER_CC3DE) == (TIM_DIER_CC3DE));
3589
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3DE) == (TIM_DIER_CC3DE)) ? 1UL : 0UL);
3596
}
3590
}
3597
 
3591
 
3598
/**
3592
/**
3599
  * @brief  Enable capture/compare 4 DMA request (CC4DE).
3593
  * @brief  Enable capture/compare 4 DMA request (CC4DE).
3600
  * @rmtoll DIER         CC4DE         LL_TIM_EnableDMAReq_CC4
3594
  * @rmtoll DIER         CC4DE         LL_TIM_EnableDMAReq_CC4
Line 3623... Line 3617...
3623
  * @param  TIMx Timer instance
3617
  * @param  TIMx Timer instance
3624
  * @retval State of bit (1 or 0).
3618
  * @retval State of bit (1 or 0).
3625
  */
3619
  */
3626
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC4(TIM_TypeDef *TIMx)
3620
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC4(TIM_TypeDef *TIMx)
3627
{
3621
{
3628
  return (READ_BIT(TIMx->DIER, TIM_DIER_CC4DE) == (TIM_DIER_CC4DE));
3622
  return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4DE) == (TIM_DIER_CC4DE)) ? 1UL : 0UL);
3629
}
3623
}
3630
 
3624
 
3631
/**
3625
/**
3632
  * @brief  Enable commutation DMA request (COMDE).
3626
  * @brief  Enable commutation DMA request (COMDE).
3633
  * @rmtoll DIER         COMDE         LL_TIM_EnableDMAReq_COM
3627
  * @rmtoll DIER         COMDE         LL_TIM_EnableDMAReq_COM
Line 3656... Line 3650...
3656
  * @param  TIMx Timer instance
3650
  * @param  TIMx Timer instance
3657
  * @retval State of bit (1 or 0).
3651
  * @retval State of bit (1 or 0).
3658
  */
3652
  */
3659
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_COM(TIM_TypeDef *TIMx)
3653
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_COM(TIM_TypeDef *TIMx)
3660
{
3654
{
3661
  return (READ_BIT(TIMx->DIER, TIM_DIER_COMDE) == (TIM_DIER_COMDE));
3655
  return ((READ_BIT(TIMx->DIER, TIM_DIER_COMDE) == (TIM_DIER_COMDE)) ? 1UL : 0UL);
3662
}
3656
}
3663
 
3657
 
3664
/**
3658
/**
3665
  * @brief  Enable trigger interrupt (TDE).
3659
  * @brief  Enable trigger interrupt (TDE).
3666
  * @rmtoll DIER         TDE           LL_TIM_EnableDMAReq_TRIG
3660
  * @rmtoll DIER         TDE           LL_TIM_EnableDMAReq_TRIG
Line 3689... Line 3683...
3689
  * @param  TIMx Timer instance
3683
  * @param  TIMx Timer instance
3690
  * @retval State of bit (1 or 0).
3684
  * @retval State of bit (1 or 0).
3691
  */
3685
  */
3692
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_TRIG(TIM_TypeDef *TIMx)
3686
__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_TRIG(TIM_TypeDef *TIMx)
3693
{
3687
{
3694
  return (READ_BIT(TIMx->DIER, TIM_DIER_TDE) == (TIM_DIER_TDE));
3688
  return ((READ_BIT(TIMx->DIER, TIM_DIER_TDE) == (TIM_DIER_TDE)) ? 1UL : 0UL);
3695
}
3689
}
3696
 
3690
 
3697
/**
3691
/**
3698
  * @}
3692
  * @}
3699
  */
3693
  */