STM32F479xx HAL User Manual
stm32f4xx_ll_tim.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32f4xx_ll_tim.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of TIM LL module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
00010   * All rights reserved.</center></h2>
00011   *
00012   * This software component is licensed by ST under BSD 3-Clause license,
00013   * the "License"; You may not use this file except in compliance with the
00014   * License. You may obtain a copy of the License at:
00015   *                        opensource.org/licenses/BSD-3-Clause
00016   *
00017   ******************************************************************************
00018   */
00019 
00020 /* Define to prevent recursive inclusion -------------------------------------*/
00021 #ifndef __STM32F4xx_LL_TIM_H
00022 #define __STM32F4xx_LL_TIM_H
00023 
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027 
00028 /* Includes ------------------------------------------------------------------*/
00029 #include "stm32f4xx.h"
00030 
00031 /** @addtogroup STM32F4xx_LL_Driver
00032   * @{
00033   */
00034 
00035 #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)
00036 
00037 /** @defgroup TIM_LL TIM
00038   * @{
00039   */
00040 
00041 /* Private types -------------------------------------------------------------*/
00042 /* Private variables ---------------------------------------------------------*/
00043 /** @defgroup TIM_LL_Private_Variables TIM Private Variables
00044   * @{
00045   */
00046 static const uint8_t OFFSET_TAB_CCMRx[] =
00047 {
00048   0x00U,   /* 0: TIMx_CH1  */
00049   0x00U,   /* 1: TIMx_CH1N */
00050   0x00U,   /* 2: TIMx_CH2  */
00051   0x00U,   /* 3: TIMx_CH2N */
00052   0x04U,   /* 4: TIMx_CH3  */
00053   0x04U,   /* 5: TIMx_CH3N */
00054   0x04U    /* 6: TIMx_CH4  */
00055 };
00056 
00057 static const uint8_t SHIFT_TAB_OCxx[] =
00058 {
00059   0U,            /* 0: OC1M, OC1FE, OC1PE */
00060   0U,            /* 1: - NA */
00061   8U,            /* 2: OC2M, OC2FE, OC2PE */
00062   0U,            /* 3: - NA */
00063   0U,            /* 4: OC3M, OC3FE, OC3PE */
00064   0U,            /* 5: - NA */
00065   8U             /* 6: OC4M, OC4FE, OC4PE */
00066 };
00067 
00068 static const uint8_t SHIFT_TAB_ICxx[] =
00069 {
00070   0U,            /* 0: CC1S, IC1PSC, IC1F */
00071   0U,            /* 1: - NA */
00072   8U,            /* 2: CC2S, IC2PSC, IC2F */
00073   0U,            /* 3: - NA */
00074   0U,            /* 4: CC3S, IC3PSC, IC3F */
00075   0U,            /* 5: - NA */
00076   8U             /* 6: CC4S, IC4PSC, IC4F */
00077 };
00078 
00079 static const uint8_t SHIFT_TAB_CCxP[] =
00080 {
00081   0U,            /* 0: CC1P */
00082   2U,            /* 1: CC1NP */
00083   4U,            /* 2: CC2P */
00084   6U,            /* 3: CC2NP */
00085   8U,            /* 4: CC3P */
00086   10U,           /* 5: CC3NP */
00087   12U            /* 6: CC4P */
00088 };
00089 
00090 static const uint8_t SHIFT_TAB_OISx[] =
00091 {
00092   0U,            /* 0: OIS1 */
00093   1U,            /* 1: OIS1N */
00094   2U,            /* 2: OIS2 */
00095   3U,            /* 3: OIS2N */
00096   4U,            /* 4: OIS3 */
00097   5U,            /* 5: OIS3N */
00098   6U             /* 6: OIS4 */
00099 };
00100 /**
00101   * @}
00102   */
00103 
00104 /* Private constants ---------------------------------------------------------*/
00105 /** @defgroup TIM_LL_Private_Constants TIM Private Constants
00106   * @{
00107   */
00108 
00109 
00110 /* Remap mask definitions */
00111 #define TIMx_OR_RMP_SHIFT  16U
00112 #define TIMx_OR_RMP_MASK   0x0000FFFFU
00113 #define TIM2_OR_RMP_MASK   (TIM_OR_ITR1_RMP << TIMx_OR_RMP_SHIFT)
00114 #define TIM5_OR_RMP_MASK   (TIM_OR_TI4_RMP << TIMx_OR_RMP_SHIFT)
00115 #define TIM11_OR_RMP_MASK  (TIM_OR_TI1_RMP << TIMx_OR_RMP_SHIFT)
00116 
00117 /* Mask used to set the TDG[x:0] of the DTG bits of the TIMx_BDTR register */
00118 #define DT_DELAY_1 ((uint8_t)0x7F)
00119 #define DT_DELAY_2 ((uint8_t)0x3F)
00120 #define DT_DELAY_3 ((uint8_t)0x1F)
00121 #define DT_DELAY_4 ((uint8_t)0x1F)
00122 
00123 /* Mask used to set the DTG[7:5] bits of the DTG bits of the TIMx_BDTR register */
00124 #define DT_RANGE_1 ((uint8_t)0x00)
00125 #define DT_RANGE_2 ((uint8_t)0x80)
00126 #define DT_RANGE_3 ((uint8_t)0xC0)
00127 #define DT_RANGE_4 ((uint8_t)0xE0)
00128 
00129 
00130 /**
00131   * @}
00132   */
00133 
00134 /* Private macros ------------------------------------------------------------*/
00135 /** @defgroup TIM_LL_Private_Macros TIM Private Macros
00136   * @{
00137   */
00138 /** @brief  Convert channel id into channel index.
00139   * @param  __CHANNEL__ This parameter can be one of the following values:
00140   *         @arg @ref LL_TIM_CHANNEL_CH1
00141   *         @arg @ref LL_TIM_CHANNEL_CH1N
00142   *         @arg @ref LL_TIM_CHANNEL_CH2
00143   *         @arg @ref LL_TIM_CHANNEL_CH2N
00144   *         @arg @ref LL_TIM_CHANNEL_CH3
00145   *         @arg @ref LL_TIM_CHANNEL_CH3N
00146   *         @arg @ref LL_TIM_CHANNEL_CH4
00147   * @retval none
00148   */
00149 #define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \
00150   (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\
00151    ((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\
00152    ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\
00153    ((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\
00154    ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\
00155    ((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U : 6U)
00156 
00157 /** @brief  Calculate the deadtime sampling period(in ps).
00158   * @param  __TIMCLK__ timer input clock frequency (in Hz).
00159   * @param  __CKD__ This parameter can be one of the following values:
00160   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV1
00161   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV2
00162   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV4
00163   * @retval none
00164   */
00165 #define TIM_CALC_DTS(__TIMCLK__, __CKD__)                                                        \
00166   (((__CKD__) == LL_TIM_CLOCKDIVISION_DIV1) ? ((uint64_t)1000000000000U/(__TIMCLK__))         : \
00167    ((__CKD__) == LL_TIM_CLOCKDIVISION_DIV2) ? ((uint64_t)1000000000000U/((__TIMCLK__) >> 1U)) : \
00168    ((uint64_t)1000000000000U/((__TIMCLK__) >> 2U)))
00169 /**
00170   * @}
00171   */
00172 
00173 
00174 /* Exported types ------------------------------------------------------------*/
00175 #if defined(USE_FULL_LL_DRIVER)
00176 /** @defgroup TIM_LL_ES_INIT TIM Exported Init structure
00177   * @{
00178   */
00179 
00180 /**
00181   * @brief  TIM Time Base configuration structure definition.
00182   */
00183 typedef struct
00184 {
00185   uint16_t Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.
00186                                    This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
00187 
00188                                    This feature can be modified afterwards using unitary function
00189                                    @ref LL_TIM_SetPrescaler().*/
00190 
00191   uint32_t CounterMode;       /*!< Specifies the counter mode.
00192                                    This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE.
00193 
00194                                    This feature can be modified afterwards using unitary function
00195                                    @ref LL_TIM_SetCounterMode().*/
00196 
00197   uint32_t Autoreload;        /*!< Specifies the auto reload value to be loaded into the active
00198                                    Auto-Reload Register at the next update event.
00199                                    This parameter must be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
00200                                    Some timer instances may support 32 bits counters. In that case this parameter must
00201                                    be a number between 0x0000 and 0xFFFFFFFF.
00202 
00203                                    This feature can be modified afterwards using unitary function
00204                                    @ref LL_TIM_SetAutoReload().*/
00205 
00206   uint32_t ClockDivision;     /*!< Specifies the clock division.
00207                                    This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION.
00208 
00209                                    This feature can be modified afterwards using unitary function
00210                                    @ref LL_TIM_SetClockDivision().*/
00211 
00212   uint32_t RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter
00213                                    reaches zero, an update event is generated and counting restarts
00214                                    from the RCR value (N).
00215                                    This means in PWM mode that (N+1) corresponds to:
00216                                       - the number of PWM periods in edge-aligned mode
00217                                       - the number of half PWM period in center-aligned mode
00218                                    GP timers: this parameter must be a number between Min_Data = 0x00 and
00219                                    Max_Data = 0xFF.
00220                                    Advanced timers: this parameter must be a number between Min_Data = 0x0000 and
00221                                    Max_Data = 0xFFFF.
00222 
00223                                    This feature can be modified afterwards using unitary function
00224                                    @ref LL_TIM_SetRepetitionCounter().*/
00225 } LL_TIM_InitTypeDef;
00226 
00227 /**
00228   * @brief  TIM Output Compare configuration structure definition.
00229   */
00230 typedef struct
00231 {
00232   uint32_t OCMode;        /*!< Specifies the output mode.
00233                                This parameter can be a value of @ref TIM_LL_EC_OCMODE.
00234 
00235                                This feature can be modified afterwards using unitary function
00236                                @ref LL_TIM_OC_SetMode().*/
00237 
00238   uint32_t OCState;       /*!< Specifies the TIM Output Compare state.
00239                                This parameter can be a value of @ref TIM_LL_EC_OCSTATE.
00240 
00241                                This feature can be modified afterwards using unitary functions
00242                                @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/
00243 
00244   uint32_t OCNState;      /*!< Specifies the TIM complementary Output Compare state.
00245                                This parameter can be a value of @ref TIM_LL_EC_OCSTATE.
00246 
00247                                This feature can be modified afterwards using unitary functions
00248                                @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/
00249 
00250   uint32_t CompareValue;  /*!< Specifies the Compare value to be loaded into the Capture Compare Register.
00251                                This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF.
00252 
00253                                This feature can be modified afterwards using unitary function
00254                                LL_TIM_OC_SetCompareCHx (x=1..6).*/
00255 
00256   uint32_t OCPolarity;    /*!< Specifies the output polarity.
00257                                This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY.
00258 
00259                                This feature can be modified afterwards using unitary function
00260                                @ref LL_TIM_OC_SetPolarity().*/
00261 
00262   uint32_t OCNPolarity;   /*!< Specifies the complementary output polarity.
00263                                This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY.
00264 
00265                                This feature can be modified afterwards using unitary function
00266                                @ref LL_TIM_OC_SetPolarity().*/
00267 
00268 
00269   uint32_t OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.
00270                                This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE.
00271 
00272                                This feature can be modified afterwards using unitary function
00273                                @ref LL_TIM_OC_SetIdleState().*/
00274 
00275   uint32_t OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.
00276                                This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE.
00277 
00278                                This feature can be modified afterwards using unitary function
00279                                @ref LL_TIM_OC_SetIdleState().*/
00280 } LL_TIM_OC_InitTypeDef;
00281 
00282 /**
00283   * @brief  TIM Input Capture configuration structure definition.
00284   */
00285 
00286 typedef struct
00287 {
00288 
00289   uint32_t ICPolarity;    /*!< Specifies the active edge of the input signal.
00290                                This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
00291 
00292                                This feature can be modified afterwards using unitary function
00293                                @ref LL_TIM_IC_SetPolarity().*/
00294 
00295   uint32_t ICActiveInput; /*!< Specifies the input.
00296                                This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
00297 
00298                                This feature can be modified afterwards using unitary function
00299                                @ref LL_TIM_IC_SetActiveInput().*/
00300 
00301   uint32_t ICPrescaler;   /*!< Specifies the Input Capture Prescaler.
00302                                This parameter can be a value of @ref TIM_LL_EC_ICPSC.
00303 
00304                                This feature can be modified afterwards using unitary function
00305                                @ref LL_TIM_IC_SetPrescaler().*/
00306 
00307   uint32_t ICFilter;      /*!< Specifies the input capture filter.
00308                                This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
00309 
00310                                This feature can be modified afterwards using unitary function
00311                                @ref LL_TIM_IC_SetFilter().*/
00312 } LL_TIM_IC_InitTypeDef;
00313 
00314 
00315 /**
00316   * @brief  TIM Encoder interface configuration structure definition.
00317   */
00318 typedef struct
00319 {
00320   uint32_t EncoderMode;     /*!< Specifies the encoder resolution (x2 or x4).
00321                                  This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE.
00322 
00323                                  This feature can be modified afterwards using unitary function
00324                                  @ref LL_TIM_SetEncoderMode().*/
00325 
00326   uint32_t IC1Polarity;     /*!< Specifies the active edge of TI1 input.
00327                                  This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
00328 
00329                                  This feature can be modified afterwards using unitary function
00330                                  @ref LL_TIM_IC_SetPolarity().*/
00331 
00332   uint32_t IC1ActiveInput;  /*!< Specifies the TI1 input source
00333                                  This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
00334 
00335                                  This feature can be modified afterwards using unitary function
00336                                  @ref LL_TIM_IC_SetActiveInput().*/
00337 
00338   uint32_t IC1Prescaler;    /*!< Specifies the TI1 input prescaler value.
00339                                  This parameter can be a value of @ref TIM_LL_EC_ICPSC.
00340 
00341                                  This feature can be modified afterwards using unitary function
00342                                  @ref LL_TIM_IC_SetPrescaler().*/
00343 
00344   uint32_t IC1Filter;       /*!< Specifies the TI1 input filter.
00345                                  This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
00346 
00347                                  This feature can be modified afterwards using unitary function
00348                                  @ref LL_TIM_IC_SetFilter().*/
00349 
00350   uint32_t IC2Polarity;      /*!< Specifies the active edge of TI2 input.
00351                                  This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
00352 
00353                                  This feature can be modified afterwards using unitary function
00354                                  @ref LL_TIM_IC_SetPolarity().*/
00355 
00356   uint32_t IC2ActiveInput;  /*!< Specifies the TI2 input source
00357                                  This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT.
00358 
00359                                  This feature can be modified afterwards using unitary function
00360                                  @ref LL_TIM_IC_SetActiveInput().*/
00361 
00362   uint32_t IC2Prescaler;    /*!< Specifies the TI2 input prescaler value.
00363                                  This parameter can be a value of @ref TIM_LL_EC_ICPSC.
00364 
00365                                  This feature can be modified afterwards using unitary function
00366                                  @ref LL_TIM_IC_SetPrescaler().*/
00367 
00368   uint32_t IC2Filter;       /*!< Specifies the TI2 input filter.
00369                                  This parameter can be a value of @ref TIM_LL_EC_IC_FILTER.
00370 
00371                                  This feature can be modified afterwards using unitary function
00372                                  @ref LL_TIM_IC_SetFilter().*/
00373 
00374 } LL_TIM_ENCODER_InitTypeDef;
00375 
00376 /**
00377   * @brief  TIM Hall sensor interface configuration structure definition.
00378   */
00379 typedef struct
00380 {
00381 
00382   uint32_t IC1Polarity;        /*!< Specifies the active edge of TI1 input.
00383                                     This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY.
00384 
00385                                     This feature can be modified afterwards using unitary function
00386                                     @ref LL_TIM_IC_SetPolarity().*/
00387 
00388   uint32_t IC1Prescaler;       /*!< Specifies the TI1 input prescaler value.
00389                                     Prescaler must be set to get a maximum counter period longer than the
00390                                     time interval between 2 consecutive changes on the Hall inputs.
00391                                     This parameter can be a value of @ref TIM_LL_EC_ICPSC.
00392 
00393                                     This feature can be modified afterwards using unitary function
00394                                     @ref LL_TIM_IC_SetPrescaler().*/
00395 
00396   uint32_t IC1Filter;          /*!< Specifies the TI1 input filter.
00397                                     This parameter can be a value of
00398                                     @ref TIM_LL_EC_IC_FILTER.
00399 
00400                                     This feature can be modified afterwards using unitary function
00401                                     @ref LL_TIM_IC_SetFilter().*/
00402 
00403   uint32_t CommutationDelay;   /*!< Specifies the compare value to be loaded into the Capture Compare Register.
00404                                     A positive pulse (TRGO event) is generated with a programmable delay every time
00405                                     a change occurs on the Hall inputs.
00406                                     This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF.
00407 
00408                                     This feature can be modified afterwards using unitary function
00409                                     @ref LL_TIM_OC_SetCompareCH2().*/
00410 } LL_TIM_HALLSENSOR_InitTypeDef;
00411 
00412 /**
00413   * @brief  BDTR (Break and Dead Time) structure definition
00414   */
00415 typedef struct
00416 {
00417   uint32_t OSSRState;            /*!< Specifies the Off-State selection used in Run mode.
00418                                       This parameter can be a value of @ref TIM_LL_EC_OSSR
00419 
00420                                       This feature can be modified afterwards using unitary function
00421                                       @ref LL_TIM_SetOffStates()
00422 
00423                                       @note This bit-field cannot be modified as long as LOCK level 2 has been
00424                                        programmed. */
00425 
00426   uint32_t OSSIState;            /*!< Specifies the Off-State used in Idle state.
00427                                       This parameter can be a value of @ref TIM_LL_EC_OSSI
00428 
00429                                       This feature can be modified afterwards using unitary function
00430                                       @ref LL_TIM_SetOffStates()
00431 
00432                                       @note This bit-field cannot be modified as long as LOCK level 2 has been
00433                                       programmed. */
00434 
00435   uint32_t LockLevel;            /*!< Specifies the LOCK level parameters.
00436                                       This parameter can be a value of @ref TIM_LL_EC_LOCKLEVEL
00437 
00438                                       @note The LOCK bits can be written only once after the reset. Once the TIMx_BDTR
00439                                       register has been written, their content is frozen until the next reset.*/
00440 
00441   uint8_t DeadTime;              /*!< Specifies the delay time between the switching-off and the
00442                                       switching-on of the outputs.
00443                                       This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF.
00444 
00445                                       This feature can be modified afterwards using unitary function
00446                                       @ref LL_TIM_OC_SetDeadTime()
00447 
00448                                       @note This bit-field can not be modified as long as LOCK level 1, 2 or 3 has been
00449                                        programmed. */
00450 
00451   uint16_t BreakState;           /*!< Specifies whether the TIM Break input is enabled or not.
00452                                       This parameter can be a value of @ref TIM_LL_EC_BREAK_ENABLE
00453 
00454                                       This feature can be modified afterwards using unitary functions
00455                                       @ref LL_TIM_EnableBRK() or @ref LL_TIM_DisableBRK()
00456 
00457                                       @note This bit-field can not be modified as long as LOCK level 1 has been
00458                                       programmed. */
00459 
00460   uint32_t BreakPolarity;        /*!< Specifies the TIM Break Input pin polarity.
00461                                       This parameter can be a value of @ref TIM_LL_EC_BREAK_POLARITY
00462 
00463                                       This feature can be modified afterwards using unitary function
00464                                       @ref LL_TIM_ConfigBRK()
00465 
00466                                       @note This bit-field can not be modified as long as LOCK level 1 has been
00467                                       programmed. */
00468 
00469   uint32_t AutomaticOutput;      /*!< Specifies whether the TIM Automatic Output feature is enabled or not.
00470                                       This parameter can be a value of @ref TIM_LL_EC_AUTOMATICOUTPUT_ENABLE
00471 
00472                                       This feature can be modified afterwards using unitary functions
00473                                       @ref LL_TIM_EnableAutomaticOutput() or @ref LL_TIM_DisableAutomaticOutput()
00474 
00475                                       @note This bit-field can not be modified as long as LOCK level 1 has been
00476                                       programmed. */
00477 } LL_TIM_BDTR_InitTypeDef;
00478 
00479 /**
00480   * @}
00481   */
00482 #endif /* USE_FULL_LL_DRIVER */
00483 
00484 /* Exported constants --------------------------------------------------------*/
00485 /** @defgroup TIM_LL_Exported_Constants TIM Exported Constants
00486   * @{
00487   */
00488 
00489 /** @defgroup TIM_LL_EC_GET_FLAG Get Flags Defines
00490   * @brief    Flags defines which can be used with LL_TIM_ReadReg function.
00491   * @{
00492   */
00493 #define LL_TIM_SR_UIF                          TIM_SR_UIF           /*!< Update interrupt flag */
00494 #define LL_TIM_SR_CC1IF                        TIM_SR_CC1IF         /*!< Capture/compare 1 interrupt flag */
00495 #define LL_TIM_SR_CC2IF                        TIM_SR_CC2IF         /*!< Capture/compare 2 interrupt flag */
00496 #define LL_TIM_SR_CC3IF                        TIM_SR_CC3IF         /*!< Capture/compare 3 interrupt flag */
00497 #define LL_TIM_SR_CC4IF                        TIM_SR_CC4IF         /*!< Capture/compare 4 interrupt flag */
00498 #define LL_TIM_SR_COMIF                        TIM_SR_COMIF         /*!< COM interrupt flag */
00499 #define LL_TIM_SR_TIF                          TIM_SR_TIF           /*!< Trigger interrupt flag */
00500 #define LL_TIM_SR_BIF                          TIM_SR_BIF           /*!< Break interrupt flag */
00501 #define LL_TIM_SR_CC1OF                        TIM_SR_CC1OF         /*!< Capture/Compare 1 overcapture flag */
00502 #define LL_TIM_SR_CC2OF                        TIM_SR_CC2OF         /*!< Capture/Compare 2 overcapture flag */
00503 #define LL_TIM_SR_CC3OF                        TIM_SR_CC3OF         /*!< Capture/Compare 3 overcapture flag */
00504 #define LL_TIM_SR_CC4OF                        TIM_SR_CC4OF         /*!< Capture/Compare 4 overcapture flag */
00505 /**
00506   * @}
00507   */
00508 
00509 #if defined(USE_FULL_LL_DRIVER)
00510 /** @defgroup TIM_LL_EC_BREAK_ENABLE Break Enable
00511   * @{
00512   */
00513 #define LL_TIM_BREAK_DISABLE            0x00000000U             /*!< Break function disabled */
00514 #define LL_TIM_BREAK_ENABLE             TIM_BDTR_BKE            /*!< Break function enabled */
00515 /**
00516   * @}
00517   */
00518 
00519 /** @defgroup TIM_LL_EC_AUTOMATICOUTPUT_ENABLE Automatic output enable
00520   * @{
00521   */
00522 #define LL_TIM_AUTOMATICOUTPUT_DISABLE         0x00000000U             /*!< MOE can be set only by software */
00523 #define LL_TIM_AUTOMATICOUTPUT_ENABLE          TIM_BDTR_AOE            /*!< MOE can be set by software or automatically at the next update event */
00524 /**
00525   * @}
00526   */
00527 #endif /* USE_FULL_LL_DRIVER */
00528 
00529 /** @defgroup TIM_LL_EC_IT IT Defines
00530   * @brief    IT defines which can be used with LL_TIM_ReadReg and  LL_TIM_WriteReg functions.
00531   * @{
00532   */
00533 #define LL_TIM_DIER_UIE                        TIM_DIER_UIE         /*!< Update interrupt enable */
00534 #define LL_TIM_DIER_CC1IE                      TIM_DIER_CC1IE       /*!< Capture/compare 1 interrupt enable */
00535 #define LL_TIM_DIER_CC2IE                      TIM_DIER_CC2IE       /*!< Capture/compare 2 interrupt enable */
00536 #define LL_TIM_DIER_CC3IE                      TIM_DIER_CC3IE       /*!< Capture/compare 3 interrupt enable */
00537 #define LL_TIM_DIER_CC4IE                      TIM_DIER_CC4IE       /*!< Capture/compare 4 interrupt enable */
00538 #define LL_TIM_DIER_COMIE                      TIM_DIER_COMIE       /*!< COM interrupt enable */
00539 #define LL_TIM_DIER_TIE                        TIM_DIER_TIE         /*!< Trigger interrupt enable */
00540 #define LL_TIM_DIER_BIE                        TIM_DIER_BIE         /*!< Break interrupt enable */
00541 /**
00542   * @}
00543   */
00544 
00545 /** @defgroup TIM_LL_EC_UPDATESOURCE Update Source
00546   * @{
00547   */
00548 #define LL_TIM_UPDATESOURCE_REGULAR            0x00000000U          /*!< Counter overflow/underflow, Setting the UG bit or Update generation through the slave mode controller generates an update request */
00549 #define LL_TIM_UPDATESOURCE_COUNTER            TIM_CR1_URS          /*!< Only counter overflow/underflow generates an update request */
00550 /**
00551   * @}
00552   */
00553 
00554 /** @defgroup TIM_LL_EC_ONEPULSEMODE One Pulse Mode
00555   * @{
00556   */
00557 #define LL_TIM_ONEPULSEMODE_SINGLE             TIM_CR1_OPM          /*!< Counter stops counting at the next update event */
00558 #define LL_TIM_ONEPULSEMODE_REPETITIVE         0x00000000U          /*!< Counter is not stopped at update event */
00559 /**
00560   * @}
00561   */
00562 
00563 /** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode
00564   * @{
00565   */
00566 #define LL_TIM_COUNTERMODE_UP                  0x00000000U          /*!<Counter used as upcounter */
00567 #define LL_TIM_COUNTERMODE_DOWN                TIM_CR1_DIR          /*!< Counter used as downcounter */
00568 #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. */
00569 #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 */
00570 #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. */
00571 /**
00572   * @}
00573   */
00574 
00575 /** @defgroup TIM_LL_EC_CLOCKDIVISION Clock Division
00576   * @{
00577   */
00578 #define LL_TIM_CLOCKDIVISION_DIV1              0x00000000U          /*!< tDTS=tCK_INT */
00579 #define LL_TIM_CLOCKDIVISION_DIV2              TIM_CR1_CKD_0        /*!< tDTS=2*tCK_INT */
00580 #define LL_TIM_CLOCKDIVISION_DIV4              TIM_CR1_CKD_1        /*!< tDTS=4*tCK_INT */
00581 /**
00582   * @}
00583   */
00584 
00585 /** @defgroup TIM_LL_EC_COUNTERDIRECTION Counter Direction
00586   * @{
00587   */
00588 #define LL_TIM_COUNTERDIRECTION_UP             0x00000000U          /*!< Timer counter counts up */
00589 #define LL_TIM_COUNTERDIRECTION_DOWN           TIM_CR1_DIR          /*!< Timer counter counts down */
00590 /**
00591   * @}
00592   */
00593 
00594 /** @defgroup TIM_LL_EC_CCUPDATESOURCE Capture Compare  Update Source
00595   * @{
00596   */
00597 #define LL_TIM_CCUPDATESOURCE_COMG_ONLY        0x00000000U          /*!< Capture/compare control bits are updated by setting the COMG bit only */
00598 #define LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI    TIM_CR2_CCUS         /*!< Capture/compare control bits are updated by setting the COMG bit or when a rising edge occurs on trigger input (TRGI) */
00599 /**
00600   * @}
00601   */
00602 
00603 /** @defgroup TIM_LL_EC_CCDMAREQUEST Capture Compare DMA Request
00604   * @{
00605   */
00606 #define LL_TIM_CCDMAREQUEST_CC                 0x00000000U          /*!< CCx DMA request sent when CCx event occurs */
00607 #define LL_TIM_CCDMAREQUEST_UPDATE             TIM_CR2_CCDS         /*!< CCx DMA requests sent when update event occurs */
00608 /**
00609   * @}
00610   */
00611 
00612 /** @defgroup TIM_LL_EC_LOCKLEVEL Lock Level
00613   * @{
00614   */
00615 #define LL_TIM_LOCKLEVEL_OFF                   0x00000000U          /*!< LOCK OFF - No bit is write protected */
00616 #define LL_TIM_LOCKLEVEL_1                     TIM_BDTR_LOCK_0      /*!< LOCK Level 1 */
00617 #define LL_TIM_LOCKLEVEL_2                     TIM_BDTR_LOCK_1      /*!< LOCK Level 2 */
00618 #define LL_TIM_LOCKLEVEL_3                     TIM_BDTR_LOCK        /*!< LOCK Level 3 */
00619 /**
00620   * @}
00621   */
00622 
00623 /** @defgroup TIM_LL_EC_CHANNEL Channel
00624   * @{
00625   */
00626 #define LL_TIM_CHANNEL_CH1                     TIM_CCER_CC1E     /*!< Timer input/output channel 1 */
00627 #define LL_TIM_CHANNEL_CH1N                    TIM_CCER_CC1NE    /*!< Timer complementary output channel 1 */
00628 #define LL_TIM_CHANNEL_CH2                     TIM_CCER_CC2E     /*!< Timer input/output channel 2 */
00629 #define LL_TIM_CHANNEL_CH2N                    TIM_CCER_CC2NE    /*!< Timer complementary output channel 2 */
00630 #define LL_TIM_CHANNEL_CH3                     TIM_CCER_CC3E     /*!< Timer input/output channel 3 */
00631 #define LL_TIM_CHANNEL_CH3N                    TIM_CCER_CC3NE    /*!< Timer complementary output channel 3 */
00632 #define LL_TIM_CHANNEL_CH4                     TIM_CCER_CC4E     /*!< Timer input/output channel 4 */
00633 /**
00634   * @}
00635   */
00636 
00637 #if defined(USE_FULL_LL_DRIVER)
00638 /** @defgroup TIM_LL_EC_OCSTATE Output Configuration State
00639   * @{
00640   */
00641 #define LL_TIM_OCSTATE_DISABLE                 0x00000000U             /*!< OCx is not active */
00642 #define LL_TIM_OCSTATE_ENABLE                  TIM_CCER_CC1E           /*!< OCx signal is output on the corresponding output pin */
00643 /**
00644   * @}
00645   */
00646 #endif /* USE_FULL_LL_DRIVER */
00647 
00648 /** @defgroup TIM_LL_EC_OCMODE Output Configuration Mode
00649   * @{
00650   */
00651 #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 */
00652 #define LL_TIM_OCMODE_ACTIVE                   TIM_CCMR1_OC1M_0                                         /*!<OCyREF is forced high on compare match*/
00653 #define LL_TIM_OCMODE_INACTIVE                 TIM_CCMR1_OC1M_1                                         /*!<OCyREF is forced low on compare match*/
00654 #define LL_TIM_OCMODE_TOGGLE                   (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0)                    /*!<OCyREF toggles on compare match*/
00655 #define LL_TIM_OCMODE_FORCED_INACTIVE          TIM_CCMR1_OC1M_2                                         /*!<OCyREF is forced low*/
00656 #define LL_TIM_OCMODE_FORCED_ACTIVE            (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0)                    /*!<OCyREF is forced high*/
00657 #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.*/
00658 #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*/
00659 /**
00660   * @}
00661   */
00662 
00663 /** @defgroup TIM_LL_EC_OCPOLARITY Output Configuration Polarity
00664   * @{
00665   */
00666 #define LL_TIM_OCPOLARITY_HIGH                 0x00000000U                 /*!< OCxactive high*/
00667 #define LL_TIM_OCPOLARITY_LOW                  TIM_CCER_CC1P               /*!< OCxactive low*/
00668 /**
00669   * @}
00670   */
00671 
00672 /** @defgroup TIM_LL_EC_OCIDLESTATE Output Configuration Idle State
00673   * @{
00674   */
00675 #define LL_TIM_OCIDLESTATE_LOW                 0x00000000U             /*!<OCx=0 (after a dead-time if OC is implemented) when MOE=0*/
00676 #define LL_TIM_OCIDLESTATE_HIGH                TIM_CR2_OIS1            /*!<OCx=1 (after a dead-time if OC is implemented) when MOE=0*/
00677 /**
00678   * @}
00679   */
00680 
00681 
00682 /** @defgroup TIM_LL_EC_ACTIVEINPUT Active Input Selection
00683   * @{
00684   */
00685 #define LL_TIM_ACTIVEINPUT_DIRECTTI            (TIM_CCMR1_CC1S_0 << 16U) /*!< ICx is mapped on TIx */
00686 #define LL_TIM_ACTIVEINPUT_INDIRECTTI          (TIM_CCMR1_CC1S_1 << 16U) /*!< ICx is mapped on TIy */
00687 #define LL_TIM_ACTIVEINPUT_TRC                 (TIM_CCMR1_CC1S << 16U)   /*!< ICx is mapped on TRC */
00688 /**
00689   * @}
00690   */
00691 
00692 /** @defgroup TIM_LL_EC_ICPSC Input Configuration Prescaler
00693   * @{
00694   */
00695 #define LL_TIM_ICPSC_DIV1                      0x00000000U                    /*!< No prescaler, capture is done each time an edge is detected on the capture input */
00696 #define LL_TIM_ICPSC_DIV2                      (TIM_CCMR1_IC1PSC_0 << 16U)    /*!< Capture is done once every 2 events */
00697 #define LL_TIM_ICPSC_DIV4                      (TIM_CCMR1_IC1PSC_1 << 16U)    /*!< Capture is done once every 4 events */
00698 #define LL_TIM_ICPSC_DIV8                      (TIM_CCMR1_IC1PSC << 16U)      /*!< Capture is done once every 8 events */
00699 /**
00700   * @}
00701   */
00702 
00703 /** @defgroup TIM_LL_EC_IC_FILTER Input Configuration Filter
00704   * @{
00705   */
00706 #define LL_TIM_IC_FILTER_FDIV1                 0x00000000U                                                        /*!< No filter, sampling is done at fDTS */
00707 #define LL_TIM_IC_FILTER_FDIV1_N2              (TIM_CCMR1_IC1F_0 << 16U)                                          /*!< fSAMPLING=fCK_INT, N=2 */
00708 #define LL_TIM_IC_FILTER_FDIV1_N4              (TIM_CCMR1_IC1F_1 << 16U)                                          /*!< fSAMPLING=fCK_INT, N=4 */
00709 #define LL_TIM_IC_FILTER_FDIV1_N8              ((TIM_CCMR1_IC1F_1 | TIM_CCMR1_IC1F_0) << 16U)                     /*!< fSAMPLING=fCK_INT, N=8 */
00710 #define LL_TIM_IC_FILTER_FDIV2_N6              (TIM_CCMR1_IC1F_2 << 16U)                                          /*!< fSAMPLING=fDTS/2, N=6 */
00711 #define LL_TIM_IC_FILTER_FDIV2_N8              ((TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_0) << 16U)                     /*!< fSAMPLING=fDTS/2, N=8 */
00712 #define LL_TIM_IC_FILTER_FDIV4_N6              ((TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_1) << 16U)                     /*!< fSAMPLING=fDTS/4, N=6 */
00713 #define LL_TIM_IC_FILTER_FDIV4_N8              ((TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_1 | TIM_CCMR1_IC1F_0) << 16U)  /*!< fSAMPLING=fDTS/4, N=8 */
00714 #define LL_TIM_IC_FILTER_FDIV8_N6              (TIM_CCMR1_IC1F_3 << 16U)                                          /*!< fSAMPLING=fDTS/8, N=6 */
00715 #define LL_TIM_IC_FILTER_FDIV8_N8              ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_0) << 16U)                     /*!< fSAMPLING=fDTS/8, N=8 */
00716 #define LL_TIM_IC_FILTER_FDIV16_N5             ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_1) << 16U)                     /*!< fSAMPLING=fDTS/16, N=5 */
00717 #define LL_TIM_IC_FILTER_FDIV16_N6             ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_1 | TIM_CCMR1_IC1F_0) << 16U)  /*!< fSAMPLING=fDTS/16, N=6 */
00718 #define LL_TIM_IC_FILTER_FDIV16_N8             ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_2) << 16U)                     /*!< fSAMPLING=fDTS/16, N=8 */
00719 #define LL_TIM_IC_FILTER_FDIV32_N5             ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_0) << 16U)  /*!< fSAMPLING=fDTS/32, N=5 */
00720 #define LL_TIM_IC_FILTER_FDIV32_N6             ((TIM_CCMR1_IC1F_3 | TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_1) << 16U)  /*!< fSAMPLING=fDTS/32, N=6 */
00721 #define LL_TIM_IC_FILTER_FDIV32_N8             (TIM_CCMR1_IC1F << 16U)                                            /*!< fSAMPLING=fDTS/32, N=8 */
00722 /**
00723   * @}
00724   */
00725 
00726 /** @defgroup TIM_LL_EC_IC_POLARITY Input Configuration Polarity
00727   * @{
00728   */
00729 #define LL_TIM_IC_POLARITY_RISING              0x00000000U                      /*!< The circuit is sensitive to TIxFP1 rising edge, TIxFP1 is not inverted */
00730 #define LL_TIM_IC_POLARITY_FALLING             TIM_CCER_CC1P                    /*!< The circuit is sensitive to TIxFP1 falling edge, TIxFP1 is inverted */
00731 #define LL_TIM_IC_POLARITY_BOTHEDGE            (TIM_CCER_CC1P | TIM_CCER_CC1NP) /*!< The circuit is sensitive to both TIxFP1 rising and falling edges, TIxFP1 is not inverted */
00732 /**
00733   * @}
00734   */
00735 
00736 /** @defgroup TIM_LL_EC_CLOCKSOURCE Clock Source
00737   * @{
00738   */
00739 #define LL_TIM_CLOCKSOURCE_INTERNAL            0x00000000U                                          /*!< The timer is clocked by the internal clock provided from the RCC */
00740 #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*/
00741 #define LL_TIM_CLOCKSOURCE_EXT_MODE2           TIM_SMCR_ECE                                         /*!< Counter counts at each rising or falling edge on the external trigger input ETR */
00742 /**
00743   * @}
00744   */
00745 
00746 /** @defgroup TIM_LL_EC_ENCODERMODE Encoder Mode
00747   * @{
00748   */
00749 #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 */
00750 #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 */
00751 #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 */
00752 /**
00753   * @}
00754   */
00755 
00756 /** @defgroup TIM_LL_EC_TRGO Trigger Output
00757   * @{
00758   */
00759 #define LL_TIM_TRGO_RESET                      0x00000000U                                     /*!< UG bit from the TIMx_EGR register is used as trigger output */
00760 #define LL_TIM_TRGO_ENABLE                     TIM_CR2_MMS_0                                   /*!< Counter Enable signal (CNT_EN) is used as trigger output */
00761 #define LL_TIM_TRGO_UPDATE                     TIM_CR2_MMS_1                                   /*!< Update event is used as trigger output */
00762 #define LL_TIM_TRGO_CC1IF                      (TIM_CR2_MMS_1 | TIM_CR2_MMS_0)                 /*!< CC1 capture or a compare match is used as trigger output */
00763 #define LL_TIM_TRGO_OC1REF                     TIM_CR2_MMS_2                                   /*!< OC1REF signal is used as trigger output */
00764 #define LL_TIM_TRGO_OC2REF                     (TIM_CR2_MMS_2 | TIM_CR2_MMS_0)                 /*!< OC2REF signal is used as trigger output */
00765 #define LL_TIM_TRGO_OC3REF                     (TIM_CR2_MMS_2 | TIM_CR2_MMS_1)                 /*!< OC3REF signal is used as trigger output */
00766 #define LL_TIM_TRGO_OC4REF                     (TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< OC4REF signal is used as trigger output */
00767 /**
00768   * @}
00769   */
00770 
00771 
00772 /** @defgroup TIM_LL_EC_SLAVEMODE Slave Mode
00773   * @{
00774   */
00775 #define LL_TIM_SLAVEMODE_DISABLED              0x00000000U                         /*!< Slave mode disabled */
00776 #define LL_TIM_SLAVEMODE_RESET                 TIM_SMCR_SMS_2                      /*!< Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter */
00777 #define LL_TIM_SLAVEMODE_GATED                 (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0)   /*!< Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high */
00778 #define LL_TIM_SLAVEMODE_TRIGGER               (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1)   /*!< Trigger Mode - The counter starts at a rising edge of the trigger TRGI */
00779 /**
00780   * @}
00781   */
00782 
00783 /** @defgroup TIM_LL_EC_TS Trigger Selection
00784   * @{
00785   */
00786 #define LL_TIM_TS_ITR0                         0x00000000U                                                     /*!< Internal Trigger 0 (ITR0) is used as trigger input */
00787 #define LL_TIM_TS_ITR1                         TIM_SMCR_TS_0                                                   /*!< Internal Trigger 1 (ITR1) is used as trigger input */
00788 #define LL_TIM_TS_ITR2                         TIM_SMCR_TS_1                                                   /*!< Internal Trigger 2 (ITR2) is used as trigger input */
00789 #define LL_TIM_TS_ITR3                         (TIM_SMCR_TS_0 | TIM_SMCR_TS_1)                                 /*!< Internal Trigger 3 (ITR3) is used as trigger input */
00790 #define LL_TIM_TS_TI1F_ED                      TIM_SMCR_TS_2                                                   /*!< TI1 Edge Detector (TI1F_ED) is used as trigger input */
00791 #define LL_TIM_TS_TI1FP1                       (TIM_SMCR_TS_2 | TIM_SMCR_TS_0)                                 /*!< Filtered Timer Input 1 (TI1FP1) is used as trigger input */
00792 #define LL_TIM_TS_TI2FP2                       (TIM_SMCR_TS_2 | TIM_SMCR_TS_1)                                 /*!< Filtered Timer Input 2 (TI12P2) is used as trigger input */
00793 #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 */
00794 /**
00795   * @}
00796   */
00797 
00798 /** @defgroup TIM_LL_EC_ETR_POLARITY External Trigger Polarity
00799   * @{
00800   */
00801 #define LL_TIM_ETR_POLARITY_NONINVERTED        0x00000000U             /*!< ETR is non-inverted, active at high level or rising edge */
00802 #define LL_TIM_ETR_POLARITY_INVERTED           TIM_SMCR_ETP            /*!< ETR is inverted, active at low level or falling edge */
00803 /**
00804   * @}
00805   */
00806 
00807 /** @defgroup TIM_LL_EC_ETR_PRESCALER External Trigger Prescaler
00808   * @{
00809   */
00810 #define LL_TIM_ETR_PRESCALER_DIV1              0x00000000U             /*!< ETR prescaler OFF */
00811 #define LL_TIM_ETR_PRESCALER_DIV2              TIM_SMCR_ETPS_0         /*!< ETR frequency is divided by 2 */
00812 #define LL_TIM_ETR_PRESCALER_DIV4              TIM_SMCR_ETPS_1         /*!< ETR frequency is divided by 4 */
00813 #define LL_TIM_ETR_PRESCALER_DIV8              TIM_SMCR_ETPS           /*!< ETR frequency is divided by 8 */
00814 /**
00815   * @}
00816   */
00817 
00818 /** @defgroup TIM_LL_EC_ETR_FILTER External Trigger Filter
00819   * @{
00820   */
00821 #define LL_TIM_ETR_FILTER_FDIV1                0x00000000U                                          /*!< No filter, sampling is done at fDTS */
00822 #define LL_TIM_ETR_FILTER_FDIV1_N2             TIM_SMCR_ETF_0                                       /*!< fSAMPLING=fCK_INT, N=2 */
00823 #define LL_TIM_ETR_FILTER_FDIV1_N4             TIM_SMCR_ETF_1                                       /*!< fSAMPLING=fCK_INT, N=4 */
00824 #define LL_TIM_ETR_FILTER_FDIV1_N8             (TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0)                    /*!< fSAMPLING=fCK_INT, N=8 */
00825 #define LL_TIM_ETR_FILTER_FDIV2_N6             TIM_SMCR_ETF_2                                       /*!< fSAMPLING=fDTS/2, N=6 */
00826 #define LL_TIM_ETR_FILTER_FDIV2_N8             (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_0)                    /*!< fSAMPLING=fDTS/2, N=8 */
00827 #define LL_TIM_ETR_FILTER_FDIV4_N6             (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1)                    /*!< fSAMPLING=fDTS/4, N=6 */
00828 #define LL_TIM_ETR_FILTER_FDIV4_N8             (TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0)   /*!< fSAMPLING=fDTS/4, N=8 */
00829 #define LL_TIM_ETR_FILTER_FDIV8_N6             TIM_SMCR_ETF_3                                       /*!< fSAMPLING=fDTS/8, N=8 */
00830 #define LL_TIM_ETR_FILTER_FDIV8_N8             (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_0)                    /*!< fSAMPLING=fDTS/16, N=5 */
00831 #define LL_TIM_ETR_FILTER_FDIV16_N5            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_1)                    /*!< fSAMPLING=fDTS/16, N=6 */
00832 #define LL_TIM_ETR_FILTER_FDIV16_N6            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_1 | TIM_SMCR_ETF_0)   /*!< fSAMPLING=fDTS/16, N=8 */
00833 #define LL_TIM_ETR_FILTER_FDIV16_N8            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2)                    /*!< fSAMPLING=fDTS/16, N=5 */
00834 #define LL_TIM_ETR_FILTER_FDIV32_N5            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2 | TIM_SMCR_ETF_0)   /*!< fSAMPLING=fDTS/32, N=5 */
00835 #define LL_TIM_ETR_FILTER_FDIV32_N6            (TIM_SMCR_ETF_3 | TIM_SMCR_ETF_2 | TIM_SMCR_ETF_1)   /*!< fSAMPLING=fDTS/32, N=6 */
00836 #define LL_TIM_ETR_FILTER_FDIV32_N8            TIM_SMCR_ETF                                         /*!< fSAMPLING=fDTS/32, N=8 */
00837 /**
00838   * @}
00839   */
00840 
00841 
00842 /** @defgroup TIM_LL_EC_BREAK_POLARITY break polarity
00843   * @{
00844   */
00845 #define LL_TIM_BREAK_POLARITY_LOW              0x00000000U               /*!< Break input BRK is active low */
00846 #define LL_TIM_BREAK_POLARITY_HIGH             TIM_BDTR_BKP              /*!< Break input BRK is active high */
00847 /**
00848   * @}
00849   */
00850 
00851 
00852 
00853 
00854 /** @defgroup TIM_LL_EC_OSSI OSSI
00855   * @{
00856   */
00857 #define LL_TIM_OSSI_DISABLE                    0x00000000U             /*!< When inactive, OCx/OCxN outputs are disabled */
00858 #define LL_TIM_OSSI_ENABLE                     TIM_BDTR_OSSI           /*!< When inactive, OxC/OCxN outputs are first forced with their inactive level then forced to their idle level after the deadtime */
00859 /**
00860   * @}
00861   */
00862 
00863 /** @defgroup TIM_LL_EC_OSSR OSSR
00864   * @{
00865   */
00866 #define LL_TIM_OSSR_DISABLE                    0x00000000U             /*!< When inactive, OCx/OCxN outputs are disabled */
00867 #define LL_TIM_OSSR_ENABLE                     TIM_BDTR_OSSR           /*!< When inactive, OC/OCN outputs are enabled with their inactive level as soon as CCxE=1 or CCxNE=1 */
00868 /**
00869   * @}
00870   */
00871 
00872 
00873 /** @defgroup TIM_LL_EC_DMABURST_BASEADDR DMA Burst Base Address
00874   * @{
00875   */
00876 #define LL_TIM_DMABURST_BASEADDR_CR1           0x00000000U                                                      /*!< TIMx_CR1 register is the DMA base address for DMA burst */
00877 #define LL_TIM_DMABURST_BASEADDR_CR2           TIM_DCR_DBA_0                                                    /*!< TIMx_CR2 register is the DMA base address for DMA burst */
00878 #define LL_TIM_DMABURST_BASEADDR_SMCR          TIM_DCR_DBA_1                                                    /*!< TIMx_SMCR register is the DMA base address for DMA burst */
00879 #define LL_TIM_DMABURST_BASEADDR_DIER          (TIM_DCR_DBA_1 |  TIM_DCR_DBA_0)                                 /*!< TIMx_DIER register is the DMA base address for DMA burst */
00880 #define LL_TIM_DMABURST_BASEADDR_SR            TIM_DCR_DBA_2                                                    /*!< TIMx_SR register is the DMA base address for DMA burst */
00881 #define LL_TIM_DMABURST_BASEADDR_EGR           (TIM_DCR_DBA_2 | TIM_DCR_DBA_0)                                  /*!< TIMx_EGR register is the DMA base address for DMA burst */
00882 #define LL_TIM_DMABURST_BASEADDR_CCMR1         (TIM_DCR_DBA_2 | TIM_DCR_DBA_1)                                  /*!< TIMx_CCMR1 register is the DMA base address for DMA burst */
00883 #define LL_TIM_DMABURST_BASEADDR_CCMR2         (TIM_DCR_DBA_2 | TIM_DCR_DBA_1 | TIM_DCR_DBA_0)                  /*!< TIMx_CCMR2 register is the DMA base address for DMA burst */
00884 #define LL_TIM_DMABURST_BASEADDR_CCER          TIM_DCR_DBA_3                                                    /*!< TIMx_CCER register is the DMA base address for DMA burst */
00885 #define LL_TIM_DMABURST_BASEADDR_CNT           (TIM_DCR_DBA_3 | TIM_DCR_DBA_0)                                  /*!< TIMx_CNT register is the DMA base address for DMA burst */
00886 #define LL_TIM_DMABURST_BASEADDR_PSC           (TIM_DCR_DBA_3 | TIM_DCR_DBA_1)                                  /*!< TIMx_PSC register is the DMA base address for DMA burst */
00887 #define LL_TIM_DMABURST_BASEADDR_ARR           (TIM_DCR_DBA_3 | TIM_DCR_DBA_1 | TIM_DCR_DBA_0)                  /*!< TIMx_ARR register is the DMA base address for DMA burst */
00888 #define LL_TIM_DMABURST_BASEADDR_RCR           (TIM_DCR_DBA_3 | TIM_DCR_DBA_2)                                  /*!< TIMx_RCR register is the DMA base address for DMA burst */
00889 #define LL_TIM_DMABURST_BASEADDR_CCR1          (TIM_DCR_DBA_3 | TIM_DCR_DBA_2 | TIM_DCR_DBA_0)                  /*!< TIMx_CCR1 register is the DMA base address for DMA burst */
00890 #define LL_TIM_DMABURST_BASEADDR_CCR2          (TIM_DCR_DBA_3 | TIM_DCR_DBA_2 | TIM_DCR_DBA_1)                  /*!< TIMx_CCR2 register is the DMA base address for DMA burst */
00891 #define LL_TIM_DMABURST_BASEADDR_CCR3          (TIM_DCR_DBA_3 | TIM_DCR_DBA_2 | TIM_DCR_DBA_1 | TIM_DCR_DBA_0)  /*!< TIMx_CCR3 register is the DMA base address for DMA burst */
00892 #define LL_TIM_DMABURST_BASEADDR_CCR4          TIM_DCR_DBA_4                                                    /*!< TIMx_CCR4 register is the DMA base address for DMA burst */
00893 #define LL_TIM_DMABURST_BASEADDR_BDTR          (TIM_DCR_DBA_4 | TIM_DCR_DBA_0)                                  /*!< TIMx_BDTR register is the DMA base address for DMA burst */
00894 /**
00895   * @}
00896   */
00897 
00898 /** @defgroup TIM_LL_EC_DMABURST_LENGTH DMA Burst Length
00899   * @{
00900   */
00901 #define LL_TIM_DMABURST_LENGTH_1TRANSFER       0x00000000U                                                     /*!< Transfer is done to 1 register starting from the DMA burst base address */
00902 #define LL_TIM_DMABURST_LENGTH_2TRANSFERS      TIM_DCR_DBL_0                                                   /*!< Transfer is done to 2 registers starting from the DMA burst base address */
00903 #define LL_TIM_DMABURST_LENGTH_3TRANSFERS      TIM_DCR_DBL_1                                                   /*!< Transfer is done to 3 registers starting from the DMA burst base address */
00904 #define LL_TIM_DMABURST_LENGTH_4TRANSFERS      (TIM_DCR_DBL_1 |  TIM_DCR_DBL_0)                                /*!< Transfer is done to 4 registers starting from the DMA burst base address */
00905 #define LL_TIM_DMABURST_LENGTH_5TRANSFERS      TIM_DCR_DBL_2                                                   /*!< Transfer is done to 5 registers starting from the DMA burst base address */
00906 #define LL_TIM_DMABURST_LENGTH_6TRANSFERS      (TIM_DCR_DBL_2 | TIM_DCR_DBL_0)                                 /*!< Transfer is done to 6 registers starting from the DMA burst base address */
00907 #define LL_TIM_DMABURST_LENGTH_7TRANSFERS      (TIM_DCR_DBL_2 | TIM_DCR_DBL_1)                                 /*!< Transfer is done to 7 registers starting from the DMA burst base address */
00908 #define LL_TIM_DMABURST_LENGTH_8TRANSFERS      (TIM_DCR_DBL_2 | TIM_DCR_DBL_1 | TIM_DCR_DBL_0)                 /*!< Transfer is done to 1 registers starting from the DMA burst base address */
00909 #define LL_TIM_DMABURST_LENGTH_9TRANSFERS      TIM_DCR_DBL_3                                                   /*!< Transfer is done to 9 registers starting from the DMA burst base address */
00910 #define LL_TIM_DMABURST_LENGTH_10TRANSFERS     (TIM_DCR_DBL_3 | TIM_DCR_DBL_0)                                 /*!< Transfer is done to 10 registers starting from the DMA burst base address */
00911 #define LL_TIM_DMABURST_LENGTH_11TRANSFERS     (TIM_DCR_DBL_3 | TIM_DCR_DBL_1)                                 /*!< Transfer is done to 11 registers starting from the DMA burst base address */
00912 #define LL_TIM_DMABURST_LENGTH_12TRANSFERS     (TIM_DCR_DBL_3 | TIM_DCR_DBL_1 | TIM_DCR_DBL_0)                 /*!< Transfer is done to 12 registers starting from the DMA burst base address */
00913 #define LL_TIM_DMABURST_LENGTH_13TRANSFERS     (TIM_DCR_DBL_3 | TIM_DCR_DBL_2)                                 /*!< Transfer is done to 13 registers starting from the DMA burst base address */
00914 #define LL_TIM_DMABURST_LENGTH_14TRANSFERS     (TIM_DCR_DBL_3 | TIM_DCR_DBL_2 | TIM_DCR_DBL_0)                 /*!< Transfer is done to 14 registers starting from the DMA burst base address */
00915 #define LL_TIM_DMABURST_LENGTH_15TRANSFERS     (TIM_DCR_DBL_3 | TIM_DCR_DBL_2 | TIM_DCR_DBL_1)                 /*!< Transfer is done to 15 registers starting from the DMA burst base address */
00916 #define LL_TIM_DMABURST_LENGTH_16TRANSFERS     (TIM_DCR_DBL_3 | TIM_DCR_DBL_2 | TIM_DCR_DBL_1 | TIM_DCR_DBL_0) /*!< Transfer is done to 16 registers starting from the DMA burst base address */
00917 #define LL_TIM_DMABURST_LENGTH_17TRANSFERS     TIM_DCR_DBL_4                                                   /*!< Transfer is done to 17 registers starting from the DMA burst base address */
00918 #define LL_TIM_DMABURST_LENGTH_18TRANSFERS     (TIM_DCR_DBL_4 |  TIM_DCR_DBL_0)                                /*!< Transfer is done to 18 registers starting from the DMA burst base address */
00919 /**
00920   * @}
00921   */
00922 
00923 
00924 /** @defgroup TIM_LL_EC_TIM2_ITR1_RMP_TIM8  TIM2 Internal Trigger1 Remap TIM8
00925   * @{
00926   */
00927 #define LL_TIM_TIM2_ITR1_RMP_TIM8_TRGO    TIM2_OR_RMP_MASK                        /*!< TIM2_ITR1 is connected to TIM8_TRGO */
00928 #define LL_TIM_TIM2_ITR1_RMP_ETH_PTP      (TIM_OR_ITR1_RMP_0 | TIM2_OR_RMP_MASK)  /*!< TIM2_ITR1 is connected to ETH_PTP */
00929 #define LL_TIM_TIM2_ITR1_RMP_OTG_FS_SOF   (TIM_OR_ITR1_RMP_1 | TIM2_OR_RMP_MASK)  /*!< TIM2_ITR1 is connected to OTG_FS SOF */
00930 #define LL_TIM_TIM2_ITR1_RMP_OTG_HS_SOF   (TIM_OR_ITR1_RMP | TIM2_OR_RMP_MASK)    /*!< TIM2_ITR1 is connected to OTG_HS SOF */
00931 /**
00932   * @}
00933   */
00934 
00935 /** @defgroup TIM_LL_EC_TIM5_TI4_RMP  TIM5 External Input Ch4 Remap
00936   * @{
00937   */
00938 #define LL_TIM_TIM5_TI4_RMP_GPIO        TIM5_OR_RMP_MASK                         /*!< TIM5 channel 4 is connected to GPIO */
00939 #define LL_TIM_TIM5_TI4_RMP_LSI         (TIM_OR_TI4_RMP_0 | TIM5_OR_RMP_MASK)    /*!< TIM5 channel 4 is connected to LSI internal clock */
00940 #define LL_TIM_TIM5_TI4_RMP_LSE         (TIM_OR_TI4_RMP_1 | TIM5_OR_RMP_MASK)    /*!< TIM5 channel 4 is connected to LSE */
00941 #define LL_TIM_TIM5_TI4_RMP_RTC         (TIM_OR_TI4_RMP | TIM5_OR_RMP_MASK)      /*!< TIM5 channel 4 is connected to RTC wakeup interrupt */
00942 /**
00943   * @}
00944   */
00945 
00946 /** @defgroup TIM_LL_EC_TIM11_TI1_RMP  TIM11 External Input Capture 1 Remap
00947   * @{
00948   */
00949 #define LL_TIM_TIM11_TI1_RMP_GPIO        TIM11_OR_RMP_MASK                          /*!< TIM11 channel 1 is connected to GPIO */
00950 #if defined(SPDIFRX)
00951 #define LL_TIM_TIM11_TI1_RMP_SPDIFRX     (TIM_OR_TI1_RMP_0 | TIM11_OR_RMP_MASK)     /*!< TIM11 channel 1 is connected to SPDIFRX */
00952 
00953 /* Legacy define */
00954 #define  LL_TIM_TIM11_TI1_RMP_GPIO1      LL_TIM_TIM11_TI1_RMP_SPDIFRX               /*!< Legacy define for LL_TIM_TIM11_TI1_RMP_SPDIFRX */
00955 
00956 #else
00957 #define LL_TIM_TIM11_TI1_RMP_GPIO1       (TIM_OR_TI1_RMP_0 | TIM11_OR_RMP_MASK)     /*!< TIM11 channel 1 is connected to GPIO */
00958 #endif /* SPDIFRX */
00959 #define LL_TIM_TIM11_TI1_RMP_GPIO2       (TIM_OR_TI1_RMP   | TIM11_OR_RMP_MASK)     /*!< TIM11 channel 1 is connected to GPIO */
00960 #define LL_TIM_TIM11_TI1_RMP_HSE_RTC     (TIM_OR_TI1_RMP_1 | TIM11_OR_RMP_MASK)     /*!< TIM11 channel 1 is connected to HSE_RTC */
00961 /**
00962   * @}
00963   */
00964 #if defined(LPTIM_OR_TIM1_ITR2_RMP) && defined(LPTIM_OR_TIM5_ITR1_RMP) && defined(LPTIM_OR_TIM9_ITR1_RMP)
00965 
00966 #define LL_TIM_LPTIM_REMAP_MASK           0x10000000U
00967 
00968 #define LL_TIM_TIM9_ITR1_RMP_TIM3_TRGO    LL_TIM_LPTIM_REMAP_MASK                              /*!< TIM9_ITR1 is connected to TIM3 TRGO */
00969 #define LL_TIM_TIM9_ITR1_RMP_LPTIM       (LL_TIM_LPTIM_REMAP_MASK | LPTIM_OR_TIM9_ITR1_RMP)    /*!< TIM9_ITR1 is connected to LPTIM1 output */
00970 
00971 #define LL_TIM_TIM5_ITR1_RMP_TIM3_TRGO    LL_TIM_LPTIM_REMAP_MASK                              /*!< TIM5_ITR1 is connected to TIM3 TRGO */
00972 #define LL_TIM_TIM5_ITR1_RMP_LPTIM       (LL_TIM_LPTIM_REMAP_MASK | LPTIM_OR_TIM5_ITR1_RMP)    /*!< TIM5_ITR1 is connected to LPTIM1 output */
00973 
00974 #define LL_TIM_TIM1_ITR2_RMP_TIM3_TRGO    LL_TIM_LPTIM_REMAP_MASK                              /*!< TIM1_ITR2 is connected to TIM3 TRGO */
00975 #define LL_TIM_TIM1_ITR2_RMP_LPTIM       (LL_TIM_LPTIM_REMAP_MASK | LPTIM_OR_TIM1_ITR2_RMP)    /*!< TIM1_ITR2 is connected to LPTIM1 output */
00976 
00977 #endif /* LPTIM_OR_TIM1_ITR2_RMP &&  LPTIM_OR_TIM5_ITR1_RMP && LPTIM_OR_TIM9_ITR1_RMP */
00978 
00979 /**
00980   * @}
00981   */
00982 
00983 /* Exported macro ------------------------------------------------------------*/
00984 /** @defgroup TIM_LL_Exported_Macros TIM Exported Macros
00985   * @{
00986   */
00987 
00988 /** @defgroup TIM_LL_EM_WRITE_READ Common Write and read registers Macros
00989   * @{
00990   */
00991 /**
00992   * @brief  Write a value in TIM register.
00993   * @param  __INSTANCE__ TIM Instance
00994   * @param  __REG__ Register to be written
00995   * @param  __VALUE__ Value to be written in the register
00996   * @retval None
00997   */
00998 #define LL_TIM_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
00999 
01000 /**
01001   * @brief  Read a value in TIM register.
01002   * @param  __INSTANCE__ TIM Instance
01003   * @param  __REG__ Register to be read
01004   * @retval Register value
01005   */
01006 #define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__)
01007 /**
01008   * @}
01009   */
01010 
01011 /** @defgroup TIM_LL_EM_Exported_Macros Exported_Macros
01012   * @{
01013   */
01014 
01015 /**
01016   * @brief  HELPER macro calculating DTG[0:7] in the TIMx_BDTR register to achieve the requested dead time duration.
01017   * @note ex: @ref __LL_TIM_CALC_DEADTIME (80000000, @ref LL_TIM_GetClockDivision (), 120);
01018   * @param  __TIMCLK__ timer input clock frequency (in Hz)
01019   * @param  __CKD__ This parameter can be one of the following values:
01020   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV1
01021   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV2
01022   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV4
01023   * @param  __DT__ deadtime duration (in ns)
01024   * @retval DTG[0:7]
01025   */
01026 #define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__)  \
01027   ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__))))    ?  \
01028     (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__)))  & DT_DELAY_1) :      \
01029     (((uint64_t)((__DT__)*1000U)) < ((64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__CKD__))))  ?  \
01030     (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__),   \
01031                                                  (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) :\
01032     (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__CKD__))))  ?  \
01033     (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__),  \
01034                                                  (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) :\
01035     (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ?  \
01036     (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__),  \
01037                                                  (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) :\
01038     0U)
01039 
01040 /**
01041   * @brief  HELPER macro calculating the prescaler value to achieve the required counter clock frequency.
01042   * @note ex: @ref __LL_TIM_CALC_PSC (80000000, 1000000);
01043   * @param  __TIMCLK__ timer input clock frequency (in Hz)
01044   * @param  __CNTCLK__ counter clock frequency (in Hz)
01045   * @retval Prescaler value  (between Min_Data=0 and Max_Data=65535)
01046   */
01047 #define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__)   \
01048   (((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)(((__TIMCLK__)/(__CNTCLK__)) - 1U) : 0U)
01049 
01050 /**
01051   * @brief  HELPER macro calculating the auto-reload value to achieve the required output signal frequency.
01052   * @note ex: @ref __LL_TIM_CALC_ARR (1000000, @ref LL_TIM_GetPrescaler (), 10000);
01053   * @param  __TIMCLK__ timer input clock frequency (in Hz)
01054   * @param  __PSC__ prescaler
01055   * @param  __FREQ__ output signal frequency (in Hz)
01056   * @retval  Auto-reload value  (between Min_Data=0 and Max_Data=65535)
01057   */
01058 #define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \
01059   ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U))) - 1U) : 0U)
01060 
01061 /**
01062   * @brief  HELPER macro calculating the compare value required to achieve the required timer output compare
01063   *         active/inactive delay.
01064   * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10);
01065   * @param  __TIMCLK__ timer input clock frequency (in Hz)
01066   * @param  __PSC__ prescaler
01067   * @param  __DELAY__ timer output compare active/inactive delay (in us)
01068   * @retval Compare value  (between Min_Data=0 and Max_Data=65535)
01069   */
01070 #define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__)  \
01071   ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \
01072               / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U))))
01073 
01074 /**
01075   * @brief  HELPER macro calculating the auto-reload value to achieve the required pulse duration
01076   *         (when the timer operates in one pulse mode).
01077   * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20);
01078   * @param  __TIMCLK__ timer input clock frequency (in Hz)
01079   * @param  __PSC__ prescaler
01080   * @param  __DELAY__ timer output compare active/inactive delay (in us)
01081   * @param  __PULSE__ pulse duration (in us)
01082   * @retval Auto-reload value  (between Min_Data=0 and Max_Data=65535)
01083   */
01084 #define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__)  \
01085   ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \
01086               + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__))))
01087 
01088 /**
01089   * @brief  HELPER macro retrieving the ratio of the input capture prescaler
01090   * @note ex: @ref __LL_TIM_GET_ICPSC_RATIO (@ref LL_TIM_IC_GetPrescaler ());
01091   * @param  __ICPSC__ This parameter can be one of the following values:
01092   *         @arg @ref LL_TIM_ICPSC_DIV1
01093   *         @arg @ref LL_TIM_ICPSC_DIV2
01094   *         @arg @ref LL_TIM_ICPSC_DIV4
01095   *         @arg @ref LL_TIM_ICPSC_DIV8
01096   * @retval Input capture prescaler ratio (1, 2, 4 or 8)
01097   */
01098 #define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__)  \
01099   ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos)))
01100 
01101 
01102 /**
01103   * @}
01104   */
01105 
01106 
01107 /**
01108   * @}
01109   */
01110 
01111 /* Exported functions --------------------------------------------------------*/
01112 /** @defgroup TIM_LL_Exported_Functions TIM Exported Functions
01113   * @{
01114   */
01115 
01116 /** @defgroup TIM_LL_EF_Time_Base Time Base configuration
01117   * @{
01118   */
01119 /**
01120   * @brief  Enable timer counter.
01121   * @rmtoll CR1          CEN           LL_TIM_EnableCounter
01122   * @param  TIMx Timer instance
01123   * @retval None
01124   */
01125 __STATIC_INLINE void LL_TIM_EnableCounter(TIM_TypeDef *TIMx)
01126 {
01127   SET_BIT(TIMx->CR1, TIM_CR1_CEN);
01128 }
01129 
01130 /**
01131   * @brief  Disable timer counter.
01132   * @rmtoll CR1          CEN           LL_TIM_DisableCounter
01133   * @param  TIMx Timer instance
01134   * @retval None
01135   */
01136 __STATIC_INLINE void LL_TIM_DisableCounter(TIM_TypeDef *TIMx)
01137 {
01138   CLEAR_BIT(TIMx->CR1, TIM_CR1_CEN);
01139 }
01140 
01141 /**
01142   * @brief  Indicates whether the timer counter is enabled.
01143   * @rmtoll CR1          CEN           LL_TIM_IsEnabledCounter
01144   * @param  TIMx Timer instance
01145   * @retval State of bit (1 or 0).
01146   */
01147 __STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(TIM_TypeDef *TIMx)
01148 {
01149   return ((READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN)) ? 1UL : 0UL);
01150 }
01151 
01152 /**
01153   * @brief  Enable update event generation.
01154   * @rmtoll CR1          UDIS          LL_TIM_EnableUpdateEvent
01155   * @param  TIMx Timer instance
01156   * @retval None
01157   */
01158 __STATIC_INLINE void LL_TIM_EnableUpdateEvent(TIM_TypeDef *TIMx)
01159 {
01160   CLEAR_BIT(TIMx->CR1, TIM_CR1_UDIS);
01161 }
01162 
01163 /**
01164   * @brief  Disable update event generation.
01165   * @rmtoll CR1          UDIS          LL_TIM_DisableUpdateEvent
01166   * @param  TIMx Timer instance
01167   * @retval None
01168   */
01169 __STATIC_INLINE void LL_TIM_DisableUpdateEvent(TIM_TypeDef *TIMx)
01170 {
01171   SET_BIT(TIMx->CR1, TIM_CR1_UDIS);
01172 }
01173 
01174 /**
01175   * @brief  Indicates whether update event generation is enabled.
01176   * @rmtoll CR1          UDIS          LL_TIM_IsEnabledUpdateEvent
01177   * @param  TIMx Timer instance
01178   * @retval Inverted state of bit (0 or 1).
01179   */
01180 __STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(TIM_TypeDef *TIMx)
01181 {
01182   return ((READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == (uint32_t)RESET) ? 1UL : 0UL);
01183 }
01184 
01185 /**
01186   * @brief  Set update event source
01187   * @note Update event source set to LL_TIM_UPDATESOURCE_REGULAR: any of the following events
01188   *       generate an update interrupt or DMA request if enabled:
01189   *        - Counter overflow/underflow
01190   *        - Setting the UG bit
01191   *        - Update generation through the slave mode controller
01192   * @note Update event source set to LL_TIM_UPDATESOURCE_COUNTER: only counter
01193   *       overflow/underflow generates an update interrupt or DMA request if enabled.
01194   * @rmtoll CR1          URS           LL_TIM_SetUpdateSource
01195   * @param  TIMx Timer instance
01196   * @param  UpdateSource This parameter can be one of the following values:
01197   *         @arg @ref LL_TIM_UPDATESOURCE_REGULAR
01198   *         @arg @ref LL_TIM_UPDATESOURCE_COUNTER
01199   * @retval None
01200   */
01201 __STATIC_INLINE void LL_TIM_SetUpdateSource(TIM_TypeDef *TIMx, uint32_t UpdateSource)
01202 {
01203   MODIFY_REG(TIMx->CR1, TIM_CR1_URS, UpdateSource);
01204 }
01205 
01206 /**
01207   * @brief  Get actual event update source
01208   * @rmtoll CR1          URS           LL_TIM_GetUpdateSource
01209   * @param  TIMx Timer instance
01210   * @retval Returned value can be one of the following values:
01211   *         @arg @ref LL_TIM_UPDATESOURCE_REGULAR
01212   *         @arg @ref LL_TIM_UPDATESOURCE_COUNTER
01213   */
01214 __STATIC_INLINE uint32_t LL_TIM_GetUpdateSource(TIM_TypeDef *TIMx)
01215 {
01216   return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_URS));
01217 }
01218 
01219 /**
01220   * @brief  Set one pulse mode (one shot v.s. repetitive).
01221   * @rmtoll CR1          OPM           LL_TIM_SetOnePulseMode
01222   * @param  TIMx Timer instance
01223   * @param  OnePulseMode This parameter can be one of the following values:
01224   *         @arg @ref LL_TIM_ONEPULSEMODE_SINGLE
01225   *         @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE
01226   * @retval None
01227   */
01228 __STATIC_INLINE void LL_TIM_SetOnePulseMode(TIM_TypeDef *TIMx, uint32_t OnePulseMode)
01229 {
01230   MODIFY_REG(TIMx->CR1, TIM_CR1_OPM, OnePulseMode);
01231 }
01232 
01233 /**
01234   * @brief  Get actual one pulse mode.
01235   * @rmtoll CR1          OPM           LL_TIM_GetOnePulseMode
01236   * @param  TIMx Timer instance
01237   * @retval Returned value can be one of the following values:
01238   *         @arg @ref LL_TIM_ONEPULSEMODE_SINGLE
01239   *         @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE
01240   */
01241 __STATIC_INLINE uint32_t LL_TIM_GetOnePulseMode(TIM_TypeDef *TIMx)
01242 {
01243   return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM));
01244 }
01245 
01246 /**
01247   * @brief  Set the timer counter counting mode.
01248   * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to
01249   *       check whether or not the counter mode selection feature is supported
01250   *       by a timer instance.
01251   * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse)
01252   *       requires a timer reset to avoid unexpected direction
01253   *       due to DIR bit readonly in center aligned mode.
01254   * @rmtoll CR1          DIR           LL_TIM_SetCounterMode\n
01255   *         CR1          CMS           LL_TIM_SetCounterMode
01256   * @param  TIMx Timer instance
01257   * @param  CounterMode This parameter can be one of the following values:
01258   *         @arg @ref LL_TIM_COUNTERMODE_UP
01259   *         @arg @ref LL_TIM_COUNTERMODE_DOWN
01260   *         @arg @ref LL_TIM_COUNTERMODE_CENTER_UP
01261   *         @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN
01262   *         @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN
01263   * @retval None
01264   */
01265 __STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode)
01266 {
01267   MODIFY_REG(TIMx->CR1, (TIM_CR1_DIR | TIM_CR1_CMS), CounterMode);
01268 }
01269 
01270 /**
01271   * @brief  Get actual counter mode.
01272   * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to
01273   *       check whether or not the counter mode selection feature is supported
01274   *       by a timer instance.
01275   * @rmtoll CR1          DIR           LL_TIM_GetCounterMode\n
01276   *         CR1          CMS           LL_TIM_GetCounterMode
01277   * @param  TIMx Timer instance
01278   * @retval Returned value can be one of the following values:
01279   *         @arg @ref LL_TIM_COUNTERMODE_UP
01280   *         @arg @ref LL_TIM_COUNTERMODE_DOWN
01281   *         @arg @ref LL_TIM_COUNTERMODE_CENTER_UP
01282   *         @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN
01283   *         @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN
01284   */
01285 __STATIC_INLINE uint32_t LL_TIM_GetCounterMode(TIM_TypeDef *TIMx)
01286 {
01287   uint32_t counter_mode;
01288 
01289   counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CMS));
01290 
01291   if (counter_mode == 0U)
01292   {
01293     counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR));
01294   }
01295 
01296   return counter_mode;
01297 }
01298 
01299 /**
01300   * @brief  Enable auto-reload (ARR) preload.
01301   * @rmtoll CR1          ARPE          LL_TIM_EnableARRPreload
01302   * @param  TIMx Timer instance
01303   * @retval None
01304   */
01305 __STATIC_INLINE void LL_TIM_EnableARRPreload(TIM_TypeDef *TIMx)
01306 {
01307   SET_BIT(TIMx->CR1, TIM_CR1_ARPE);
01308 }
01309 
01310 /**
01311   * @brief  Disable auto-reload (ARR) preload.
01312   * @rmtoll CR1          ARPE          LL_TIM_DisableARRPreload
01313   * @param  TIMx Timer instance
01314   * @retval None
01315   */
01316 __STATIC_INLINE void LL_TIM_DisableARRPreload(TIM_TypeDef *TIMx)
01317 {
01318   CLEAR_BIT(TIMx->CR1, TIM_CR1_ARPE);
01319 }
01320 
01321 /**
01322   * @brief  Indicates whether auto-reload (ARR) preload is enabled.
01323   * @rmtoll CR1          ARPE          LL_TIM_IsEnabledARRPreload
01324   * @param  TIMx Timer instance
01325   * @retval State of bit (1 or 0).
01326   */
01327 __STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(TIM_TypeDef *TIMx)
01328 {
01329   return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL);
01330 }
01331 
01332 /**
01333   * @brief  Set the division ratio between the timer clock  and the sampling clock used by the dead-time generators
01334   *         (when supported) and the digital filters.
01335   * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
01336   *       whether or not the clock division feature is supported by the timer
01337   *       instance.
01338   * @rmtoll CR1          CKD           LL_TIM_SetClockDivision
01339   * @param  TIMx Timer instance
01340   * @param  ClockDivision This parameter can be one of the following values:
01341   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV1
01342   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV2
01343   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV4
01344   * @retval None
01345   */
01346 __STATIC_INLINE void LL_TIM_SetClockDivision(TIM_TypeDef *TIMx, uint32_t ClockDivision)
01347 {
01348   MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision);
01349 }
01350 
01351 /**
01352   * @brief  Get the actual division ratio between the timer clock  and the sampling clock used by the dead-time
01353   *         generators (when supported) and the digital filters.
01354   * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check
01355   *       whether or not the clock division feature is supported by the timer
01356   *       instance.
01357   * @rmtoll CR1          CKD           LL_TIM_GetClockDivision
01358   * @param  TIMx Timer instance
01359   * @retval Returned value can be one of the following values:
01360   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV1
01361   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV2
01362   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV4
01363   */
01364 __STATIC_INLINE uint32_t LL_TIM_GetClockDivision(TIM_TypeDef *TIMx)
01365 {
01366   return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CKD));
01367 }
01368 
01369 /**
01370   * @brief  Set the counter value.
01371   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
01372   *       whether or not a timer instance supports a 32 bits counter.
01373   * @rmtoll CNT          CNT           LL_TIM_SetCounter
01374   * @param  TIMx Timer instance
01375   * @param  Counter Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF)
01376   * @retval None
01377   */
01378 __STATIC_INLINE void LL_TIM_SetCounter(TIM_TypeDef *TIMx, uint32_t Counter)
01379 {
01380   WRITE_REG(TIMx->CNT, Counter);
01381 }
01382 
01383 /**
01384   * @brief  Get the counter value.
01385   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
01386   *       whether or not a timer instance supports a 32 bits counter.
01387   * @rmtoll CNT          CNT           LL_TIM_GetCounter
01388   * @param  TIMx Timer instance
01389   * @retval Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF)
01390   */
01391 __STATIC_INLINE uint32_t LL_TIM_GetCounter(TIM_TypeDef *TIMx)
01392 {
01393   return (uint32_t)(READ_REG(TIMx->CNT));
01394 }
01395 
01396 /**
01397   * @brief  Get the current direction of the counter
01398   * @rmtoll CR1          DIR           LL_TIM_GetDirection
01399   * @param  TIMx Timer instance
01400   * @retval Returned value can be one of the following values:
01401   *         @arg @ref LL_TIM_COUNTERDIRECTION_UP
01402   *         @arg @ref LL_TIM_COUNTERDIRECTION_DOWN
01403   */
01404 __STATIC_INLINE uint32_t LL_TIM_GetDirection(TIM_TypeDef *TIMx)
01405 {
01406   return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR));
01407 }
01408 
01409 /**
01410   * @brief  Set the prescaler value.
01411   * @note The counter clock frequency CK_CNT is equal to fCK_PSC / (PSC[15:0] + 1).
01412   * @note The prescaler can be changed on the fly as this control register is buffered. The new
01413   *       prescaler ratio is taken into account at the next update event.
01414   * @note Helper macro @ref __LL_TIM_CALC_PSC can be used to calculate the Prescaler parameter
01415   * @rmtoll PSC          PSC           LL_TIM_SetPrescaler
01416   * @param  TIMx Timer instance
01417   * @param  Prescaler between Min_Data=0 and Max_Data=65535
01418   * @retval None
01419   */
01420 __STATIC_INLINE void LL_TIM_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Prescaler)
01421 {
01422   WRITE_REG(TIMx->PSC, Prescaler);
01423 }
01424 
01425 /**
01426   * @brief  Get the prescaler value.
01427   * @rmtoll PSC          PSC           LL_TIM_GetPrescaler
01428   * @param  TIMx Timer instance
01429   * @retval  Prescaler value between Min_Data=0 and Max_Data=65535
01430   */
01431 __STATIC_INLINE uint32_t LL_TIM_GetPrescaler(TIM_TypeDef *TIMx)
01432 {
01433   return (uint32_t)(READ_REG(TIMx->PSC));
01434 }
01435 
01436 /**
01437   * @brief  Set the auto-reload value.
01438   * @note The counter is blocked while the auto-reload value is null.
01439   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
01440   *       whether or not a timer instance supports a 32 bits counter.
01441   * @note Helper macro @ref __LL_TIM_CALC_ARR can be used to calculate the AutoReload parameter
01442   * @rmtoll ARR          ARR           LL_TIM_SetAutoReload
01443   * @param  TIMx Timer instance
01444   * @param  AutoReload between Min_Data=0 and Max_Data=65535
01445   * @retval None
01446   */
01447 __STATIC_INLINE void LL_TIM_SetAutoReload(TIM_TypeDef *TIMx, uint32_t AutoReload)
01448 {
01449   WRITE_REG(TIMx->ARR, AutoReload);
01450 }
01451 
01452 /**
01453   * @brief  Get the auto-reload value.
01454   * @rmtoll ARR          ARR           LL_TIM_GetAutoReload
01455   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
01456   *       whether or not a timer instance supports a 32 bits counter.
01457   * @param  TIMx Timer instance
01458   * @retval Auto-reload value
01459   */
01460 __STATIC_INLINE uint32_t LL_TIM_GetAutoReload(TIM_TypeDef *TIMx)
01461 {
01462   return (uint32_t)(READ_REG(TIMx->ARR));
01463 }
01464 
01465 /**
01466   * @brief  Set the repetition counter value.
01467   * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check
01468   *       whether or not a timer instance supports a repetition counter.
01469   * @rmtoll RCR          REP           LL_TIM_SetRepetitionCounter
01470   * @param  TIMx Timer instance
01471   * @param  RepetitionCounter between Min_Data=0 and Max_Data=255 or 65535 for advanced timer.
01472   * @retval None
01473   */
01474 __STATIC_INLINE void LL_TIM_SetRepetitionCounter(TIM_TypeDef *TIMx, uint32_t RepetitionCounter)
01475 {
01476   WRITE_REG(TIMx->RCR, RepetitionCounter);
01477 }
01478 
01479 /**
01480   * @brief  Get the repetition counter value.
01481   * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check
01482   *       whether or not a timer instance supports a repetition counter.
01483   * @rmtoll RCR          REP           LL_TIM_GetRepetitionCounter
01484   * @param  TIMx Timer instance
01485   * @retval Repetition counter value
01486   */
01487 __STATIC_INLINE uint32_t LL_TIM_GetRepetitionCounter(TIM_TypeDef *TIMx)
01488 {
01489   return (uint32_t)(READ_REG(TIMx->RCR));
01490 }
01491 
01492 /**
01493   * @}
01494   */
01495 
01496 /** @defgroup TIM_LL_EF_Capture_Compare Capture Compare configuration
01497   * @{
01498   */
01499 /**
01500   * @brief  Enable  the capture/compare control bits (CCxE, CCxNE and OCxM) preload.
01501   * @note CCxE, CCxNE and OCxM bits are preloaded, after having been written,
01502   *       they are updated only when a commutation event (COM) occurs.
01503   * @note Only on channels that have a complementary output.
01504   * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check
01505   *       whether or not a timer instance is able to generate a commutation event.
01506   * @rmtoll CR2          CCPC          LL_TIM_CC_EnablePreload
01507   * @param  TIMx Timer instance
01508   * @retval None
01509   */
01510 __STATIC_INLINE void LL_TIM_CC_EnablePreload(TIM_TypeDef *TIMx)
01511 {
01512   SET_BIT(TIMx->CR2, TIM_CR2_CCPC);
01513 }
01514 
01515 /**
01516   * @brief  Disable  the capture/compare control bits (CCxE, CCxNE and OCxM) preload.
01517   * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check
01518   *       whether or not a timer instance is able to generate a commutation event.
01519   * @rmtoll CR2          CCPC          LL_TIM_CC_DisablePreload
01520   * @param  TIMx Timer instance
01521   * @retval None
01522   */
01523 __STATIC_INLINE void LL_TIM_CC_DisablePreload(TIM_TypeDef *TIMx)
01524 {
01525   CLEAR_BIT(TIMx->CR2, TIM_CR2_CCPC);
01526 }
01527 
01528 /**
01529   * @brief  Set the updated source of the capture/compare control bits (CCxE, CCxNE and OCxM).
01530   * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check
01531   *       whether or not a timer instance is able to generate a commutation event.
01532   * @rmtoll CR2          CCUS          LL_TIM_CC_SetUpdate
01533   * @param  TIMx Timer instance
01534   * @param  CCUpdateSource This parameter can be one of the following values:
01535   *         @arg @ref LL_TIM_CCUPDATESOURCE_COMG_ONLY
01536   *         @arg @ref LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI
01537   * @retval None
01538   */
01539 __STATIC_INLINE void LL_TIM_CC_SetUpdate(TIM_TypeDef *TIMx, uint32_t CCUpdateSource)
01540 {
01541   MODIFY_REG(TIMx->CR2, TIM_CR2_CCUS, CCUpdateSource);
01542 }
01543 
01544 /**
01545   * @brief  Set the trigger of the capture/compare DMA request.
01546   * @rmtoll CR2          CCDS          LL_TIM_CC_SetDMAReqTrigger
01547   * @param  TIMx Timer instance
01548   * @param  DMAReqTrigger This parameter can be one of the following values:
01549   *         @arg @ref LL_TIM_CCDMAREQUEST_CC
01550   *         @arg @ref LL_TIM_CCDMAREQUEST_UPDATE
01551   * @retval None
01552   */
01553 __STATIC_INLINE void LL_TIM_CC_SetDMAReqTrigger(TIM_TypeDef *TIMx, uint32_t DMAReqTrigger)
01554 {
01555   MODIFY_REG(TIMx->CR2, TIM_CR2_CCDS, DMAReqTrigger);
01556 }
01557 
01558 /**
01559   * @brief  Get actual trigger of the capture/compare DMA request.
01560   * @rmtoll CR2          CCDS          LL_TIM_CC_GetDMAReqTrigger
01561   * @param  TIMx Timer instance
01562   * @retval Returned value can be one of the following values:
01563   *         @arg @ref LL_TIM_CCDMAREQUEST_CC
01564   *         @arg @ref LL_TIM_CCDMAREQUEST_UPDATE
01565   */
01566 __STATIC_INLINE uint32_t LL_TIM_CC_GetDMAReqTrigger(TIM_TypeDef *TIMx)
01567 {
01568   return (uint32_t)(READ_BIT(TIMx->CR2, TIM_CR2_CCDS));
01569 }
01570 
01571 /**
01572   * @brief  Set the lock level to freeze the
01573   *         configuration of several capture/compare parameters.
01574   * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
01575   *       the lock mechanism is supported by a timer instance.
01576   * @rmtoll BDTR         LOCK          LL_TIM_CC_SetLockLevel
01577   * @param  TIMx Timer instance
01578   * @param  LockLevel This parameter can be one of the following values:
01579   *         @arg @ref LL_TIM_LOCKLEVEL_OFF
01580   *         @arg @ref LL_TIM_LOCKLEVEL_1
01581   *         @arg @ref LL_TIM_LOCKLEVEL_2
01582   *         @arg @ref LL_TIM_LOCKLEVEL_3
01583   * @retval None
01584   */
01585 __STATIC_INLINE void LL_TIM_CC_SetLockLevel(TIM_TypeDef *TIMx, uint32_t LockLevel)
01586 {
01587   MODIFY_REG(TIMx->BDTR, TIM_BDTR_LOCK, LockLevel);
01588 }
01589 
01590 /**
01591   * @brief  Enable capture/compare channels.
01592   * @rmtoll CCER         CC1E          LL_TIM_CC_EnableChannel\n
01593   *         CCER         CC1NE         LL_TIM_CC_EnableChannel\n
01594   *         CCER         CC2E          LL_TIM_CC_EnableChannel\n
01595   *         CCER         CC2NE         LL_TIM_CC_EnableChannel\n
01596   *         CCER         CC3E          LL_TIM_CC_EnableChannel\n
01597   *         CCER         CC3NE         LL_TIM_CC_EnableChannel\n
01598   *         CCER         CC4E          LL_TIM_CC_EnableChannel
01599   * @param  TIMx Timer instance
01600   * @param  Channels This parameter can be a combination of the following values:
01601   *         @arg @ref LL_TIM_CHANNEL_CH1
01602   *         @arg @ref LL_TIM_CHANNEL_CH1N
01603   *         @arg @ref LL_TIM_CHANNEL_CH2
01604   *         @arg @ref LL_TIM_CHANNEL_CH2N
01605   *         @arg @ref LL_TIM_CHANNEL_CH3
01606   *         @arg @ref LL_TIM_CHANNEL_CH3N
01607   *         @arg @ref LL_TIM_CHANNEL_CH4
01608   * @retval None
01609   */
01610 __STATIC_INLINE void LL_TIM_CC_EnableChannel(TIM_TypeDef *TIMx, uint32_t Channels)
01611 {
01612   SET_BIT(TIMx->CCER, Channels);
01613 }
01614 
01615 /**
01616   * @brief  Disable capture/compare channels.
01617   * @rmtoll CCER         CC1E          LL_TIM_CC_DisableChannel\n
01618   *         CCER         CC1NE         LL_TIM_CC_DisableChannel\n
01619   *         CCER         CC2E          LL_TIM_CC_DisableChannel\n
01620   *         CCER         CC2NE         LL_TIM_CC_DisableChannel\n
01621   *         CCER         CC3E          LL_TIM_CC_DisableChannel\n
01622   *         CCER         CC3NE         LL_TIM_CC_DisableChannel\n
01623   *         CCER         CC4E          LL_TIM_CC_DisableChannel
01624   * @param  TIMx Timer instance
01625   * @param  Channels This parameter can be a combination of the following values:
01626   *         @arg @ref LL_TIM_CHANNEL_CH1
01627   *         @arg @ref LL_TIM_CHANNEL_CH1N
01628   *         @arg @ref LL_TIM_CHANNEL_CH2
01629   *         @arg @ref LL_TIM_CHANNEL_CH2N
01630   *         @arg @ref LL_TIM_CHANNEL_CH3
01631   *         @arg @ref LL_TIM_CHANNEL_CH3N
01632   *         @arg @ref LL_TIM_CHANNEL_CH4
01633   * @retval None
01634   */
01635 __STATIC_INLINE void LL_TIM_CC_DisableChannel(TIM_TypeDef *TIMx, uint32_t Channels)
01636 {
01637   CLEAR_BIT(TIMx->CCER, Channels);
01638 }
01639 
01640 /**
01641   * @brief  Indicate whether channel(s) is(are) enabled.
01642   * @rmtoll CCER         CC1E          LL_TIM_CC_IsEnabledChannel\n
01643   *         CCER         CC1NE         LL_TIM_CC_IsEnabledChannel\n
01644   *         CCER         CC2E          LL_TIM_CC_IsEnabledChannel\n
01645   *         CCER         CC2NE         LL_TIM_CC_IsEnabledChannel\n
01646   *         CCER         CC3E          LL_TIM_CC_IsEnabledChannel\n
01647   *         CCER         CC3NE         LL_TIM_CC_IsEnabledChannel\n
01648   *         CCER         CC4E          LL_TIM_CC_IsEnabledChannel
01649   * @param  TIMx Timer instance
01650   * @param  Channels This parameter can be a combination of the following values:
01651   *         @arg @ref LL_TIM_CHANNEL_CH1
01652   *         @arg @ref LL_TIM_CHANNEL_CH1N
01653   *         @arg @ref LL_TIM_CHANNEL_CH2
01654   *         @arg @ref LL_TIM_CHANNEL_CH2N
01655   *         @arg @ref LL_TIM_CHANNEL_CH3
01656   *         @arg @ref LL_TIM_CHANNEL_CH3N
01657   *         @arg @ref LL_TIM_CHANNEL_CH4
01658   * @retval State of bit (1 or 0).
01659   */
01660 __STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(TIM_TypeDef *TIMx, uint32_t Channels)
01661 {
01662   return ((READ_BIT(TIMx->CCER, Channels) == (Channels)) ? 1UL : 0UL);
01663 }
01664 
01665 /**
01666   * @}
01667   */
01668 
01669 /** @defgroup TIM_LL_EF_Output_Channel Output channel configuration
01670   * @{
01671   */
01672 /**
01673   * @brief  Configure an output channel.
01674   * @rmtoll CCMR1        CC1S          LL_TIM_OC_ConfigOutput\n
01675   *         CCMR1        CC2S          LL_TIM_OC_ConfigOutput\n
01676   *         CCMR2        CC3S          LL_TIM_OC_ConfigOutput\n
01677   *         CCMR2        CC4S          LL_TIM_OC_ConfigOutput\n
01678   *         CCER         CC1P          LL_TIM_OC_ConfigOutput\n
01679   *         CCER         CC2P          LL_TIM_OC_ConfigOutput\n
01680   *         CCER         CC3P          LL_TIM_OC_ConfigOutput\n
01681   *         CCER         CC4P          LL_TIM_OC_ConfigOutput\n
01682   *         CR2          OIS1          LL_TIM_OC_ConfigOutput\n
01683   *         CR2          OIS2          LL_TIM_OC_ConfigOutput\n
01684   *         CR2          OIS3          LL_TIM_OC_ConfigOutput\n
01685   *         CR2          OIS4          LL_TIM_OC_ConfigOutput
01686   * @param  TIMx Timer instance
01687   * @param  Channel This parameter can be one of the following values:
01688   *         @arg @ref LL_TIM_CHANNEL_CH1
01689   *         @arg @ref LL_TIM_CHANNEL_CH2
01690   *         @arg @ref LL_TIM_CHANNEL_CH3
01691   *         @arg @ref LL_TIM_CHANNEL_CH4
01692   * @param  Configuration This parameter must be a combination of all the following values:
01693   *         @arg @ref LL_TIM_OCPOLARITY_HIGH or @ref LL_TIM_OCPOLARITY_LOW
01694   *         @arg @ref LL_TIM_OCIDLESTATE_LOW or @ref LL_TIM_OCIDLESTATE_HIGH
01695   * @retval None
01696   */
01697 __STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
01698 {
01699   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
01700   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
01701   CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel]));
01702   MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),
01703              (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]);
01704   MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]),
01705              (Configuration & TIM_CR2_OIS1) << SHIFT_TAB_OISx[iChannel]);
01706 }
01707 
01708 /**
01709   * @brief  Define the behavior of the output reference signal OCxREF from which
01710   *         OCx and OCxN (when relevant) are derived.
01711   * @rmtoll CCMR1        OC1M          LL_TIM_OC_SetMode\n
01712   *         CCMR1        OC2M          LL_TIM_OC_SetMode\n
01713   *         CCMR2        OC3M          LL_TIM_OC_SetMode\n
01714   *         CCMR2        OC4M          LL_TIM_OC_SetMode
01715   * @param  TIMx Timer instance
01716   * @param  Channel This parameter can be one of the following values:
01717   *         @arg @ref LL_TIM_CHANNEL_CH1
01718   *         @arg @ref LL_TIM_CHANNEL_CH2
01719   *         @arg @ref LL_TIM_CHANNEL_CH3
01720   *         @arg @ref LL_TIM_CHANNEL_CH4
01721   * @param  Mode This parameter can be one of the following values:
01722   *         @arg @ref LL_TIM_OCMODE_FROZEN
01723   *         @arg @ref LL_TIM_OCMODE_ACTIVE
01724   *         @arg @ref LL_TIM_OCMODE_INACTIVE
01725   *         @arg @ref LL_TIM_OCMODE_TOGGLE
01726   *         @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE
01727   *         @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE
01728   *         @arg @ref LL_TIM_OCMODE_PWM1
01729   *         @arg @ref LL_TIM_OCMODE_PWM2
01730   * @retval None
01731   */
01732 __STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode)
01733 {
01734   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
01735   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
01736   MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M  | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT_TAB_OCxx[iChannel]);
01737 }
01738 
01739 /**
01740   * @brief  Get the output compare mode of an output channel.
01741   * @rmtoll CCMR1        OC1M          LL_TIM_OC_GetMode\n
01742   *         CCMR1        OC2M          LL_TIM_OC_GetMode\n
01743   *         CCMR2        OC3M          LL_TIM_OC_GetMode\n
01744   *         CCMR2        OC4M          LL_TIM_OC_GetMode
01745   * @param  TIMx Timer instance
01746   * @param  Channel This parameter can be one of the following values:
01747   *         @arg @ref LL_TIM_CHANNEL_CH1
01748   *         @arg @ref LL_TIM_CHANNEL_CH2
01749   *         @arg @ref LL_TIM_CHANNEL_CH3
01750   *         @arg @ref LL_TIM_CHANNEL_CH4
01751   * @retval Returned value can be one of the following values:
01752   *         @arg @ref LL_TIM_OCMODE_FROZEN
01753   *         @arg @ref LL_TIM_OCMODE_ACTIVE
01754   *         @arg @ref LL_TIM_OCMODE_INACTIVE
01755   *         @arg @ref LL_TIM_OCMODE_TOGGLE
01756   *         @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE
01757   *         @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE
01758   *         @arg @ref LL_TIM_OCMODE_PWM1
01759   *         @arg @ref LL_TIM_OCMODE_PWM2
01760   */
01761 __STATIC_INLINE uint32_t LL_TIM_OC_GetMode(TIM_TypeDef *TIMx, uint32_t Channel)
01762 {
01763   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
01764   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
01765   return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]);
01766 }
01767 
01768 /**
01769   * @brief  Set the polarity of an output channel.
01770   * @rmtoll CCER         CC1P          LL_TIM_OC_SetPolarity\n
01771   *         CCER         CC1NP         LL_TIM_OC_SetPolarity\n
01772   *         CCER         CC2P          LL_TIM_OC_SetPolarity\n
01773   *         CCER         CC2NP         LL_TIM_OC_SetPolarity\n
01774   *         CCER         CC3P          LL_TIM_OC_SetPolarity\n
01775   *         CCER         CC3NP         LL_TIM_OC_SetPolarity\n
01776   *         CCER         CC4P          LL_TIM_OC_SetPolarity
01777   * @param  TIMx Timer instance
01778   * @param  Channel This parameter can be one of the following values:
01779   *         @arg @ref LL_TIM_CHANNEL_CH1
01780   *         @arg @ref LL_TIM_CHANNEL_CH1N
01781   *         @arg @ref LL_TIM_CHANNEL_CH2
01782   *         @arg @ref LL_TIM_CHANNEL_CH2N
01783   *         @arg @ref LL_TIM_CHANNEL_CH3
01784   *         @arg @ref LL_TIM_CHANNEL_CH3N
01785   *         @arg @ref LL_TIM_CHANNEL_CH4
01786   * @param  Polarity This parameter can be one of the following values:
01787   *         @arg @ref LL_TIM_OCPOLARITY_HIGH
01788   *         @arg @ref LL_TIM_OCPOLARITY_LOW
01789   * @retval None
01790   */
01791 __STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity)
01792 {
01793   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
01794   MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]),  Polarity << SHIFT_TAB_CCxP[iChannel]);
01795 }
01796 
01797 /**
01798   * @brief  Get the polarity of an output channel.
01799   * @rmtoll CCER         CC1P          LL_TIM_OC_GetPolarity\n
01800   *         CCER         CC1NP         LL_TIM_OC_GetPolarity\n
01801   *         CCER         CC2P          LL_TIM_OC_GetPolarity\n
01802   *         CCER         CC2NP         LL_TIM_OC_GetPolarity\n
01803   *         CCER         CC3P          LL_TIM_OC_GetPolarity\n
01804   *         CCER         CC3NP         LL_TIM_OC_GetPolarity\n
01805   *         CCER         CC4P          LL_TIM_OC_GetPolarity
01806   * @param  TIMx Timer instance
01807   * @param  Channel This parameter can be one of the following values:
01808   *         @arg @ref LL_TIM_CHANNEL_CH1
01809   *         @arg @ref LL_TIM_CHANNEL_CH1N
01810   *         @arg @ref LL_TIM_CHANNEL_CH2
01811   *         @arg @ref LL_TIM_CHANNEL_CH2N
01812   *         @arg @ref LL_TIM_CHANNEL_CH3
01813   *         @arg @ref LL_TIM_CHANNEL_CH3N
01814   *         @arg @ref LL_TIM_CHANNEL_CH4
01815   * @retval Returned value can be one of the following values:
01816   *         @arg @ref LL_TIM_OCPOLARITY_HIGH
01817   *         @arg @ref LL_TIM_OCPOLARITY_LOW
01818   */
01819 __STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel)
01820 {
01821   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
01822   return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChannel]);
01823 }
01824 
01825 /**
01826   * @brief  Set the IDLE state of an output channel
01827   * @note This function is significant only for the timer instances
01828   *       supporting the break feature. Macro IS_TIM_BREAK_INSTANCE(TIMx)
01829   *       can be used to check whether or not a timer instance provides
01830   *       a break input.
01831   * @rmtoll CR2         OIS1          LL_TIM_OC_SetIdleState\n
01832   *         CR2         OIS1N         LL_TIM_OC_SetIdleState\n
01833   *         CR2         OIS2          LL_TIM_OC_SetIdleState\n
01834   *         CR2         OIS2N         LL_TIM_OC_SetIdleState\n
01835   *         CR2         OIS3          LL_TIM_OC_SetIdleState\n
01836   *         CR2         OIS3N         LL_TIM_OC_SetIdleState\n
01837   *         CR2         OIS4          LL_TIM_OC_SetIdleState
01838   * @param  TIMx Timer instance
01839   * @param  Channel This parameter can be one of the following values:
01840   *         @arg @ref LL_TIM_CHANNEL_CH1
01841   *         @arg @ref LL_TIM_CHANNEL_CH1N
01842   *         @arg @ref LL_TIM_CHANNEL_CH2
01843   *         @arg @ref LL_TIM_CHANNEL_CH2N
01844   *         @arg @ref LL_TIM_CHANNEL_CH3
01845   *         @arg @ref LL_TIM_CHANNEL_CH3N
01846   *         @arg @ref LL_TIM_CHANNEL_CH4
01847   * @param  IdleState This parameter can be one of the following values:
01848   *         @arg @ref LL_TIM_OCIDLESTATE_LOW
01849   *         @arg @ref LL_TIM_OCIDLESTATE_HIGH
01850   * @retval None
01851   */
01852 __STATIC_INLINE void LL_TIM_OC_SetIdleState(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t IdleState)
01853 {
01854   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
01855   MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]),  IdleState << SHIFT_TAB_OISx[iChannel]);
01856 }
01857 
01858 /**
01859   * @brief  Get the IDLE state of an output channel
01860   * @rmtoll CR2         OIS1          LL_TIM_OC_GetIdleState\n
01861   *         CR2         OIS1N         LL_TIM_OC_GetIdleState\n
01862   *         CR2         OIS2          LL_TIM_OC_GetIdleState\n
01863   *         CR2         OIS2N         LL_TIM_OC_GetIdleState\n
01864   *         CR2         OIS3          LL_TIM_OC_GetIdleState\n
01865   *         CR2         OIS3N         LL_TIM_OC_GetIdleState\n
01866   *         CR2         OIS4          LL_TIM_OC_GetIdleState
01867   * @param  TIMx Timer instance
01868   * @param  Channel This parameter can be one of the following values:
01869   *         @arg @ref LL_TIM_CHANNEL_CH1
01870   *         @arg @ref LL_TIM_CHANNEL_CH1N
01871   *         @arg @ref LL_TIM_CHANNEL_CH2
01872   *         @arg @ref LL_TIM_CHANNEL_CH2N
01873   *         @arg @ref LL_TIM_CHANNEL_CH3
01874   *         @arg @ref LL_TIM_CHANNEL_CH3N
01875   *         @arg @ref LL_TIM_CHANNEL_CH4
01876   * @retval Returned value can be one of the following values:
01877   *         @arg @ref LL_TIM_OCIDLESTATE_LOW
01878   *         @arg @ref LL_TIM_OCIDLESTATE_HIGH
01879   */
01880 __STATIC_INLINE uint32_t LL_TIM_OC_GetIdleState(TIM_TypeDef *TIMx, uint32_t Channel)
01881 {
01882   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
01883   return (READ_BIT(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel])) >> SHIFT_TAB_OISx[iChannel]);
01884 }
01885 
01886 /**
01887   * @brief  Enable fast mode for the output channel.
01888   * @note Acts only if the channel is configured in PWM1 or PWM2 mode.
01889   * @rmtoll CCMR1        OC1FE          LL_TIM_OC_EnableFast\n
01890   *         CCMR1        OC2FE          LL_TIM_OC_EnableFast\n
01891   *         CCMR2        OC3FE          LL_TIM_OC_EnableFast\n
01892   *         CCMR2        OC4FE          LL_TIM_OC_EnableFast
01893   * @param  TIMx Timer instance
01894   * @param  Channel This parameter can be one of the following values:
01895   *         @arg @ref LL_TIM_CHANNEL_CH1
01896   *         @arg @ref LL_TIM_CHANNEL_CH2
01897   *         @arg @ref LL_TIM_CHANNEL_CH3
01898   *         @arg @ref LL_TIM_CHANNEL_CH4
01899   * @retval None
01900   */
01901 __STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel)
01902 {
01903   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
01904   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
01905   SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
01906 
01907 }
01908 
01909 /**
01910   * @brief  Disable fast mode for the output channel.
01911   * @rmtoll CCMR1        OC1FE          LL_TIM_OC_DisableFast\n
01912   *         CCMR1        OC2FE          LL_TIM_OC_DisableFast\n
01913   *         CCMR2        OC3FE          LL_TIM_OC_DisableFast\n
01914   *         CCMR2        OC4FE          LL_TIM_OC_DisableFast
01915   * @param  TIMx Timer instance
01916   * @param  Channel This parameter can be one of the following values:
01917   *         @arg @ref LL_TIM_CHANNEL_CH1
01918   *         @arg @ref LL_TIM_CHANNEL_CH2
01919   *         @arg @ref LL_TIM_CHANNEL_CH3
01920   *         @arg @ref LL_TIM_CHANNEL_CH4
01921   * @retval None
01922   */
01923 __STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel)
01924 {
01925   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
01926   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
01927   CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]));
01928 
01929 }
01930 
01931 /**
01932   * @brief  Indicates whether fast mode is enabled for the output channel.
01933   * @rmtoll CCMR1        OC1FE          LL_TIM_OC_IsEnabledFast\n
01934   *         CCMR1        OC2FE          LL_TIM_OC_IsEnabledFast\n
01935   *         CCMR2        OC3FE          LL_TIM_OC_IsEnabledFast\n
01936   *         CCMR2        OC4FE          LL_TIM_OC_IsEnabledFast\n
01937   * @param  TIMx Timer instance
01938   * @param  Channel This parameter can be one of the following values:
01939   *         @arg @ref LL_TIM_CHANNEL_CH1
01940   *         @arg @ref LL_TIM_CHANNEL_CH2
01941   *         @arg @ref LL_TIM_CHANNEL_CH3
01942   *         @arg @ref LL_TIM_CHANNEL_CH4
01943   * @retval State of bit (1 or 0).
01944   */
01945 __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(TIM_TypeDef *TIMx, uint32_t Channel)
01946 {
01947   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
01948   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
01949   uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel];
01950   return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
01951 }
01952 
01953 /**
01954   * @brief  Enable compare register (TIMx_CCRx) preload for the output channel.
01955   * @rmtoll CCMR1        OC1PE          LL_TIM_OC_EnablePreload\n
01956   *         CCMR1        OC2PE          LL_TIM_OC_EnablePreload\n
01957   *         CCMR2        OC3PE          LL_TIM_OC_EnablePreload\n
01958   *         CCMR2        OC4PE          LL_TIM_OC_EnablePreload
01959   * @param  TIMx Timer instance
01960   * @param  Channel This parameter can be one of the following values:
01961   *         @arg @ref LL_TIM_CHANNEL_CH1
01962   *         @arg @ref LL_TIM_CHANNEL_CH2
01963   *         @arg @ref LL_TIM_CHANNEL_CH3
01964   *         @arg @ref LL_TIM_CHANNEL_CH4
01965   * @retval None
01966   */
01967 __STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
01968 {
01969   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
01970   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
01971   SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
01972 }
01973 
01974 /**
01975   * @brief  Disable compare register (TIMx_CCRx) preload for the output channel.
01976   * @rmtoll CCMR1        OC1PE          LL_TIM_OC_DisablePreload\n
01977   *         CCMR1        OC2PE          LL_TIM_OC_DisablePreload\n
01978   *         CCMR2        OC3PE          LL_TIM_OC_DisablePreload\n
01979   *         CCMR2        OC4PE          LL_TIM_OC_DisablePreload
01980   * @param  TIMx Timer instance
01981   * @param  Channel This parameter can be one of the following values:
01982   *         @arg @ref LL_TIM_CHANNEL_CH1
01983   *         @arg @ref LL_TIM_CHANNEL_CH2
01984   *         @arg @ref LL_TIM_CHANNEL_CH3
01985   *         @arg @ref LL_TIM_CHANNEL_CH4
01986   * @retval None
01987   */
01988 __STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel)
01989 {
01990   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
01991   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
01992   CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]));
01993 }
01994 
01995 /**
01996   * @brief  Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channel.
01997   * @rmtoll CCMR1        OC1PE          LL_TIM_OC_IsEnabledPreload\n
01998   *         CCMR1        OC2PE          LL_TIM_OC_IsEnabledPreload\n
01999   *         CCMR2        OC3PE          LL_TIM_OC_IsEnabledPreload\n
02000   *         CCMR2        OC4PE          LL_TIM_OC_IsEnabledPreload\n
02001   * @param  TIMx Timer instance
02002   * @param  Channel This parameter can be one of the following values:
02003   *         @arg @ref LL_TIM_CHANNEL_CH1
02004   *         @arg @ref LL_TIM_CHANNEL_CH2
02005   *         @arg @ref LL_TIM_CHANNEL_CH3
02006   *         @arg @ref LL_TIM_CHANNEL_CH4
02007   * @retval State of bit (1 or 0).
02008   */
02009 __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(TIM_TypeDef *TIMx, uint32_t Channel)
02010 {
02011   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
02012   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
02013   uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel];
02014   return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
02015 }
02016 
02017 /**
02018   * @brief  Enable clearing the output channel on an external event.
02019   * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode.
02020   * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
02021   *       or not a timer instance can clear the OCxREF signal on an external event.
02022   * @rmtoll CCMR1        OC1CE          LL_TIM_OC_EnableClear\n
02023   *         CCMR1        OC2CE          LL_TIM_OC_EnableClear\n
02024   *         CCMR2        OC3CE          LL_TIM_OC_EnableClear\n
02025   *         CCMR2        OC4CE          LL_TIM_OC_EnableClear
02026   * @param  TIMx Timer instance
02027   * @param  Channel This parameter can be one of the following values:
02028   *         @arg @ref LL_TIM_CHANNEL_CH1
02029   *         @arg @ref LL_TIM_CHANNEL_CH2
02030   *         @arg @ref LL_TIM_CHANNEL_CH3
02031   *         @arg @ref LL_TIM_CHANNEL_CH4
02032   * @retval None
02033   */
02034 __STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel)
02035 {
02036   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
02037   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
02038   SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
02039 }
02040 
02041 /**
02042   * @brief  Disable clearing the output channel on an external event.
02043   * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
02044   *       or not a timer instance can clear the OCxREF signal on an external event.
02045   * @rmtoll CCMR1        OC1CE          LL_TIM_OC_DisableClear\n
02046   *         CCMR1        OC2CE          LL_TIM_OC_DisableClear\n
02047   *         CCMR2        OC3CE          LL_TIM_OC_DisableClear\n
02048   *         CCMR2        OC4CE          LL_TIM_OC_DisableClear
02049   * @param  TIMx Timer instance
02050   * @param  Channel This parameter can be one of the following values:
02051   *         @arg @ref LL_TIM_CHANNEL_CH1
02052   *         @arg @ref LL_TIM_CHANNEL_CH2
02053   *         @arg @ref LL_TIM_CHANNEL_CH3
02054   *         @arg @ref LL_TIM_CHANNEL_CH4
02055   * @retval None
02056   */
02057 __STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel)
02058 {
02059   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
02060   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
02061   CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]));
02062 }
02063 
02064 /**
02065   * @brief  Indicates clearing the output channel on an external event is enabled for the output channel.
02066   * @note This function enables clearing the output channel on an external event.
02067   * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode.
02068   * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether
02069   *       or not a timer instance can clear the OCxREF signal on an external event.
02070   * @rmtoll CCMR1        OC1CE          LL_TIM_OC_IsEnabledClear\n
02071   *         CCMR1        OC2CE          LL_TIM_OC_IsEnabledClear\n
02072   *         CCMR2        OC3CE          LL_TIM_OC_IsEnabledClear\n
02073   *         CCMR2        OC4CE          LL_TIM_OC_IsEnabledClear\n
02074   * @param  TIMx Timer instance
02075   * @param  Channel This parameter can be one of the following values:
02076   *         @arg @ref LL_TIM_CHANNEL_CH1
02077   *         @arg @ref LL_TIM_CHANNEL_CH2
02078   *         @arg @ref LL_TIM_CHANNEL_CH3
02079   *         @arg @ref LL_TIM_CHANNEL_CH4
02080   * @retval State of bit (1 or 0).
02081   */
02082 __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(TIM_TypeDef *TIMx, uint32_t Channel)
02083 {
02084   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
02085   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
02086   uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel];
02087   return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL);
02088 }
02089 
02090 /**
02091   * @brief  Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal and the rising edge of
02092   *         the Ocx and OCxN signals).
02093   * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
02094   *       dead-time insertion feature is supported by a timer instance.
02095   * @note Helper macro @ref __LL_TIM_CALC_DEADTIME can be used to calculate the DeadTime parameter
02096   * @rmtoll BDTR         DTG           LL_TIM_OC_SetDeadTime
02097   * @param  TIMx Timer instance
02098   * @param  DeadTime between Min_Data=0 and Max_Data=255
02099   * @retval None
02100   */
02101 __STATIC_INLINE void LL_TIM_OC_SetDeadTime(TIM_TypeDef *TIMx, uint32_t DeadTime)
02102 {
02103   MODIFY_REG(TIMx->BDTR, TIM_BDTR_DTG, DeadTime);
02104 }
02105 
02106 /**
02107   * @brief  Set compare value for output channel 1 (TIMx_CCR1).
02108   * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF.
02109   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
02110   *       whether or not a timer instance supports a 32 bits counter.
02111   * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
02112   *       output channel 1 is supported by a timer instance.
02113   * @rmtoll CCR1         CCR1          LL_TIM_OC_SetCompareCH1
02114   * @param  TIMx Timer instance
02115   * @param  CompareValue between Min_Data=0 and Max_Data=65535
02116   * @retval None
02117   */
02118 __STATIC_INLINE void LL_TIM_OC_SetCompareCH1(TIM_TypeDef *TIMx, uint32_t CompareValue)
02119 {
02120   WRITE_REG(TIMx->CCR1, CompareValue);
02121 }
02122 
02123 /**
02124   * @brief  Set compare value for output channel 2 (TIMx_CCR2).
02125   * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF.
02126   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
02127   *       whether or not a timer instance supports a 32 bits counter.
02128   * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
02129   *       output channel 2 is supported by a timer instance.
02130   * @rmtoll CCR2         CCR2          LL_TIM_OC_SetCompareCH2
02131   * @param  TIMx Timer instance
02132   * @param  CompareValue between Min_Data=0 and Max_Data=65535
02133   * @retval None
02134   */
02135 __STATIC_INLINE void LL_TIM_OC_SetCompareCH2(TIM_TypeDef *TIMx, uint32_t CompareValue)
02136 {
02137   WRITE_REG(TIMx->CCR2, CompareValue);
02138 }
02139 
02140 /**
02141   * @brief  Set compare value for output channel 3 (TIMx_CCR3).
02142   * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF.
02143   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
02144   *       whether or not a timer instance supports a 32 bits counter.
02145   * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
02146   *       output channel is supported by a timer instance.
02147   * @rmtoll CCR3         CCR3          LL_TIM_OC_SetCompareCH3
02148   * @param  TIMx Timer instance
02149   * @param  CompareValue between Min_Data=0 and Max_Data=65535
02150   * @retval None
02151   */
02152 __STATIC_INLINE void LL_TIM_OC_SetCompareCH3(TIM_TypeDef *TIMx, uint32_t CompareValue)
02153 {
02154   WRITE_REG(TIMx->CCR3, CompareValue);
02155 }
02156 
02157 /**
02158   * @brief  Set compare value for output channel 4 (TIMx_CCR4).
02159   * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF.
02160   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
02161   *       whether or not a timer instance supports a 32 bits counter.
02162   * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
02163   *       output channel 4 is supported by a timer instance.
02164   * @rmtoll CCR4         CCR4          LL_TIM_OC_SetCompareCH4
02165   * @param  TIMx Timer instance
02166   * @param  CompareValue between Min_Data=0 and Max_Data=65535
02167   * @retval None
02168   */
02169 __STATIC_INLINE void LL_TIM_OC_SetCompareCH4(TIM_TypeDef *TIMx, uint32_t CompareValue)
02170 {
02171   WRITE_REG(TIMx->CCR4, CompareValue);
02172 }
02173 
02174 /**
02175   * @brief  Get compare value (TIMx_CCR1) set for  output channel 1.
02176   * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF.
02177   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
02178   *       whether or not a timer instance supports a 32 bits counter.
02179   * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
02180   *       output channel 1 is supported by a timer instance.
02181   * @rmtoll CCR1         CCR1          LL_TIM_OC_GetCompareCH1
02182   * @param  TIMx Timer instance
02183   * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
02184   */
02185 __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH1(TIM_TypeDef *TIMx)
02186 {
02187   return (uint32_t)(READ_REG(TIMx->CCR1));
02188 }
02189 
02190 /**
02191   * @brief  Get compare value (TIMx_CCR2) set for  output channel 2.
02192   * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF.
02193   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
02194   *       whether or not a timer instance supports a 32 bits counter.
02195   * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
02196   *       output channel 2 is supported by a timer instance.
02197   * @rmtoll CCR2         CCR2          LL_TIM_OC_GetCompareCH2
02198   * @param  TIMx Timer instance
02199   * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
02200   */
02201 __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH2(TIM_TypeDef *TIMx)
02202 {
02203   return (uint32_t)(READ_REG(TIMx->CCR2));
02204 }
02205 
02206 /**
02207   * @brief  Get compare value (TIMx_CCR3) set for  output channel 3.
02208   * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF.
02209   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
02210   *       whether or not a timer instance supports a 32 bits counter.
02211   * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
02212   *       output channel 3 is supported by a timer instance.
02213   * @rmtoll CCR3         CCR3          LL_TIM_OC_GetCompareCH3
02214   * @param  TIMx Timer instance
02215   * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
02216   */
02217 __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH3(TIM_TypeDef *TIMx)
02218 {
02219   return (uint32_t)(READ_REG(TIMx->CCR3));
02220 }
02221 
02222 /**
02223   * @brief  Get compare value (TIMx_CCR4) set for  output channel 4.
02224   * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF.
02225   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
02226   *       whether or not a timer instance supports a 32 bits counter.
02227   * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
02228   *       output channel 4 is supported by a timer instance.
02229   * @rmtoll CCR4         CCR4          LL_TIM_OC_GetCompareCH4
02230   * @param  TIMx Timer instance
02231   * @retval CompareValue (between Min_Data=0 and Max_Data=65535)
02232   */
02233 __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH4(TIM_TypeDef *TIMx)
02234 {
02235   return (uint32_t)(READ_REG(TIMx->CCR4));
02236 }
02237 
02238 /**
02239   * @}
02240   */
02241 
02242 /** @defgroup TIM_LL_EF_Input_Channel Input channel configuration
02243   * @{
02244   */
02245 /**
02246   * @brief  Configure input channel.
02247   * @rmtoll CCMR1        CC1S          LL_TIM_IC_Config\n
02248   *         CCMR1        IC1PSC        LL_TIM_IC_Config\n
02249   *         CCMR1        IC1F          LL_TIM_IC_Config\n
02250   *         CCMR1        CC2S          LL_TIM_IC_Config\n
02251   *         CCMR1        IC2PSC        LL_TIM_IC_Config\n
02252   *         CCMR1        IC2F          LL_TIM_IC_Config\n
02253   *         CCMR2        CC3S          LL_TIM_IC_Config\n
02254   *         CCMR2        IC3PSC        LL_TIM_IC_Config\n
02255   *         CCMR2        IC3F          LL_TIM_IC_Config\n
02256   *         CCMR2        CC4S          LL_TIM_IC_Config\n
02257   *         CCMR2        IC4PSC        LL_TIM_IC_Config\n
02258   *         CCMR2        IC4F          LL_TIM_IC_Config\n
02259   *         CCER         CC1P          LL_TIM_IC_Config\n
02260   *         CCER         CC1NP         LL_TIM_IC_Config\n
02261   *         CCER         CC2P          LL_TIM_IC_Config\n
02262   *         CCER         CC2NP         LL_TIM_IC_Config\n
02263   *         CCER         CC3P          LL_TIM_IC_Config\n
02264   *         CCER         CC3NP         LL_TIM_IC_Config\n
02265   *         CCER         CC4P          LL_TIM_IC_Config\n
02266   *         CCER         CC4NP         LL_TIM_IC_Config
02267   * @param  TIMx Timer instance
02268   * @param  Channel This parameter can be one of the following values:
02269   *         @arg @ref LL_TIM_CHANNEL_CH1
02270   *         @arg @ref LL_TIM_CHANNEL_CH2
02271   *         @arg @ref LL_TIM_CHANNEL_CH3
02272   *         @arg @ref LL_TIM_CHANNEL_CH4
02273   * @param  Configuration This parameter must be a combination of all the following values:
02274   *         @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI or @ref LL_TIM_ACTIVEINPUT_INDIRECTTI or @ref LL_TIM_ACTIVEINPUT_TRC
02275   *         @arg @ref LL_TIM_ICPSC_DIV1 or ... or @ref LL_TIM_ICPSC_DIV8
02276   *         @arg @ref LL_TIM_IC_FILTER_FDIV1 or ... or @ref LL_TIM_IC_FILTER_FDIV32_N8
02277   *         @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING or @ref LL_TIM_IC_POLARITY_BOTHEDGE
02278   * @retval None
02279   */
02280 __STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration)
02281 {
02282   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
02283   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
02284   MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]),
02285              ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S))                \
02286              << SHIFT_TAB_ICxx[iChannel]);
02287   MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
02288              (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]);
02289 }
02290 
02291 /**
02292   * @brief  Set the active input.
02293   * @rmtoll CCMR1        CC1S          LL_TIM_IC_SetActiveInput\n
02294   *         CCMR1        CC2S          LL_TIM_IC_SetActiveInput\n
02295   *         CCMR2        CC3S          LL_TIM_IC_SetActiveInput\n
02296   *         CCMR2        CC4S          LL_TIM_IC_SetActiveInput
02297   * @param  TIMx Timer instance
02298   * @param  Channel This parameter can be one of the following values:
02299   *         @arg @ref LL_TIM_CHANNEL_CH1
02300   *         @arg @ref LL_TIM_CHANNEL_CH2
02301   *         @arg @ref LL_TIM_CHANNEL_CH3
02302   *         @arg @ref LL_TIM_CHANNEL_CH4
02303   * @param  ICActiveInput This parameter can be one of the following values:
02304   *         @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI
02305   *         @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI
02306   *         @arg @ref LL_TIM_ACTIVEINPUT_TRC
02307   * @retval None
02308   */
02309 __STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiveInput)
02310 {
02311   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
02312   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
02313   MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT_TAB_ICxx[iChannel]);
02314 }
02315 
02316 /**
02317   * @brief  Get the current active input.
02318   * @rmtoll CCMR1        CC1S          LL_TIM_IC_GetActiveInput\n
02319   *         CCMR1        CC2S          LL_TIM_IC_GetActiveInput\n
02320   *         CCMR2        CC3S          LL_TIM_IC_GetActiveInput\n
02321   *         CCMR2        CC4S          LL_TIM_IC_GetActiveInput
02322   * @param  TIMx Timer instance
02323   * @param  Channel This parameter can be one of the following values:
02324   *         @arg @ref LL_TIM_CHANNEL_CH1
02325   *         @arg @ref LL_TIM_CHANNEL_CH2
02326   *         @arg @ref LL_TIM_CHANNEL_CH3
02327   *         @arg @ref LL_TIM_CHANNEL_CH4
02328   * @retval Returned value can be one of the following values:
02329   *         @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI
02330   *         @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI
02331   *         @arg @ref LL_TIM_ACTIVEINPUT_TRC
02332   */
02333 __STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel)
02334 {
02335   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
02336   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
02337   return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
02338 }
02339 
02340 /**
02341   * @brief  Set the prescaler of input channel.
02342   * @rmtoll CCMR1        IC1PSC        LL_TIM_IC_SetPrescaler\n
02343   *         CCMR1        IC2PSC        LL_TIM_IC_SetPrescaler\n
02344   *         CCMR2        IC3PSC        LL_TIM_IC_SetPrescaler\n
02345   *         CCMR2        IC4PSC        LL_TIM_IC_SetPrescaler
02346   * @param  TIMx Timer instance
02347   * @param  Channel This parameter can be one of the following values:
02348   *         @arg @ref LL_TIM_CHANNEL_CH1
02349   *         @arg @ref LL_TIM_CHANNEL_CH2
02350   *         @arg @ref LL_TIM_CHANNEL_CH3
02351   *         @arg @ref LL_TIM_CHANNEL_CH4
02352   * @param  ICPrescaler This parameter can be one of the following values:
02353   *         @arg @ref LL_TIM_ICPSC_DIV1
02354   *         @arg @ref LL_TIM_ICPSC_DIV2
02355   *         @arg @ref LL_TIM_ICPSC_DIV4
02356   *         @arg @ref LL_TIM_ICPSC_DIV8
02357   * @retval None
02358   */
02359 __STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescaler)
02360 {
02361   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
02362   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
02363   MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT_TAB_ICxx[iChannel]);
02364 }
02365 
02366 /**
02367   * @brief  Get the current prescaler value acting on an  input channel.
02368   * @rmtoll CCMR1        IC1PSC        LL_TIM_IC_GetPrescaler\n
02369   *         CCMR1        IC2PSC        LL_TIM_IC_GetPrescaler\n
02370   *         CCMR2        IC3PSC        LL_TIM_IC_GetPrescaler\n
02371   *         CCMR2        IC4PSC        LL_TIM_IC_GetPrescaler
02372   * @param  TIMx Timer instance
02373   * @param  Channel This parameter can be one of the following values:
02374   *         @arg @ref LL_TIM_CHANNEL_CH1
02375   *         @arg @ref LL_TIM_CHANNEL_CH2
02376   *         @arg @ref LL_TIM_CHANNEL_CH3
02377   *         @arg @ref LL_TIM_CHANNEL_CH4
02378   * @retval Returned value can be one of the following values:
02379   *         @arg @ref LL_TIM_ICPSC_DIV1
02380   *         @arg @ref LL_TIM_ICPSC_DIV2
02381   *         @arg @ref LL_TIM_ICPSC_DIV4
02382   *         @arg @ref LL_TIM_ICPSC_DIV8
02383   */
02384 __STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel)
02385 {
02386   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
02387   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
02388   return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
02389 }
02390 
02391 /**
02392   * @brief  Set the input filter duration.
02393   * @rmtoll CCMR1        IC1F          LL_TIM_IC_SetFilter\n
02394   *         CCMR1        IC2F          LL_TIM_IC_SetFilter\n
02395   *         CCMR2        IC3F          LL_TIM_IC_SetFilter\n
02396   *         CCMR2        IC4F          LL_TIM_IC_SetFilter
02397   * @param  TIMx Timer instance
02398   * @param  Channel This parameter can be one of the following values:
02399   *         @arg @ref LL_TIM_CHANNEL_CH1
02400   *         @arg @ref LL_TIM_CHANNEL_CH2
02401   *         @arg @ref LL_TIM_CHANNEL_CH3
02402   *         @arg @ref LL_TIM_CHANNEL_CH4
02403   * @param  ICFilter This parameter can be one of the following values:
02404   *         @arg @ref LL_TIM_IC_FILTER_FDIV1
02405   *         @arg @ref LL_TIM_IC_FILTER_FDIV1_N2
02406   *         @arg @ref LL_TIM_IC_FILTER_FDIV1_N4
02407   *         @arg @ref LL_TIM_IC_FILTER_FDIV1_N8
02408   *         @arg @ref LL_TIM_IC_FILTER_FDIV2_N6
02409   *         @arg @ref LL_TIM_IC_FILTER_FDIV2_N8
02410   *         @arg @ref LL_TIM_IC_FILTER_FDIV4_N6
02411   *         @arg @ref LL_TIM_IC_FILTER_FDIV4_N8
02412   *         @arg @ref LL_TIM_IC_FILTER_FDIV8_N6
02413   *         @arg @ref LL_TIM_IC_FILTER_FDIV8_N8
02414   *         @arg @ref LL_TIM_IC_FILTER_FDIV16_N5
02415   *         @arg @ref LL_TIM_IC_FILTER_FDIV16_N6
02416   *         @arg @ref LL_TIM_IC_FILTER_FDIV16_N8
02417   *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N5
02418   *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N6
02419   *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
02420   * @retval None
02421   */
02422 __STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter)
02423 {
02424   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
02425   __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
02426   MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ICxx[iChannel]);
02427 }
02428 
02429 /**
02430   * @brief  Get the input filter duration.
02431   * @rmtoll CCMR1        IC1F          LL_TIM_IC_GetFilter\n
02432   *         CCMR1        IC2F          LL_TIM_IC_GetFilter\n
02433   *         CCMR2        IC3F          LL_TIM_IC_GetFilter\n
02434   *         CCMR2        IC4F          LL_TIM_IC_GetFilter
02435   * @param  TIMx Timer instance
02436   * @param  Channel This parameter can be one of the following values:
02437   *         @arg @ref LL_TIM_CHANNEL_CH1
02438   *         @arg @ref LL_TIM_CHANNEL_CH2
02439   *         @arg @ref LL_TIM_CHANNEL_CH3
02440   *         @arg @ref LL_TIM_CHANNEL_CH4
02441   * @retval Returned value can be one of the following values:
02442   *         @arg @ref LL_TIM_IC_FILTER_FDIV1
02443   *         @arg @ref LL_TIM_IC_FILTER_FDIV1_N2
02444   *         @arg @ref LL_TIM_IC_FILTER_FDIV1_N4
02445   *         @arg @ref LL_TIM_IC_FILTER_FDIV1_N8
02446   *         @arg @ref LL_TIM_IC_FILTER_FDIV2_N6
02447   *         @arg @ref LL_TIM_IC_FILTER_FDIV2_N8
02448   *         @arg @ref LL_TIM_IC_FILTER_FDIV4_N6
02449   *         @arg @ref LL_TIM_IC_FILTER_FDIV4_N8
02450   *         @arg @ref LL_TIM_IC_FILTER_FDIV8_N6
02451   *         @arg @ref LL_TIM_IC_FILTER_FDIV8_N8
02452   *         @arg @ref LL_TIM_IC_FILTER_FDIV16_N5
02453   *         @arg @ref LL_TIM_IC_FILTER_FDIV16_N6
02454   *         @arg @ref LL_TIM_IC_FILTER_FDIV16_N8
02455   *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N5
02456   *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N6
02457   *         @arg @ref LL_TIM_IC_FILTER_FDIV32_N8
02458   */
02459 __STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(TIM_TypeDef *TIMx, uint32_t Channel)
02460 {
02461   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
02462   const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel]));
02463   return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U);
02464 }
02465 
02466 /**
02467   * @brief  Set the input channel polarity.
02468   * @rmtoll CCER         CC1P          LL_TIM_IC_SetPolarity\n
02469   *         CCER         CC1NP         LL_TIM_IC_SetPolarity\n
02470   *         CCER         CC2P          LL_TIM_IC_SetPolarity\n
02471   *         CCER         CC2NP         LL_TIM_IC_SetPolarity\n
02472   *         CCER         CC3P          LL_TIM_IC_SetPolarity\n
02473   *         CCER         CC3NP         LL_TIM_IC_SetPolarity\n
02474   *         CCER         CC4P          LL_TIM_IC_SetPolarity\n
02475   *         CCER         CC4NP         LL_TIM_IC_SetPolarity
02476   * @param  TIMx Timer instance
02477   * @param  Channel This parameter can be one of the following values:
02478   *         @arg @ref LL_TIM_CHANNEL_CH1
02479   *         @arg @ref LL_TIM_CHANNEL_CH2
02480   *         @arg @ref LL_TIM_CHANNEL_CH3
02481   *         @arg @ref LL_TIM_CHANNEL_CH4
02482   * @param  ICPolarity This parameter can be one of the following values:
02483   *         @arg @ref LL_TIM_IC_POLARITY_RISING
02484   *         @arg @ref LL_TIM_IC_POLARITY_FALLING
02485   *         @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE
02486   * @retval None
02487   */
02488 __STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity)
02489 {
02490   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
02491   MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]),
02492              ICPolarity << SHIFT_TAB_CCxP[iChannel]);
02493 }
02494 
02495 /**
02496   * @brief  Get the current input channel polarity.
02497   * @rmtoll CCER         CC1P          LL_TIM_IC_GetPolarity\n
02498   *         CCER         CC1NP         LL_TIM_IC_GetPolarity\n
02499   *         CCER         CC2P          LL_TIM_IC_GetPolarity\n
02500   *         CCER         CC2NP         LL_TIM_IC_GetPolarity\n
02501   *         CCER         CC3P          LL_TIM_IC_GetPolarity\n
02502   *         CCER         CC3NP         LL_TIM_IC_GetPolarity\n
02503   *         CCER         CC4P          LL_TIM_IC_GetPolarity\n
02504   *         CCER         CC4NP         LL_TIM_IC_GetPolarity
02505   * @param  TIMx Timer instance
02506   * @param  Channel This parameter can be one of the following values:
02507   *         @arg @ref LL_TIM_CHANNEL_CH1
02508   *         @arg @ref LL_TIM_CHANNEL_CH2
02509   *         @arg @ref LL_TIM_CHANNEL_CH3
02510   *         @arg @ref LL_TIM_CHANNEL_CH4
02511   * @retval Returned value can be one of the following values:
02512   *         @arg @ref LL_TIM_IC_POLARITY_RISING
02513   *         @arg @ref LL_TIM_IC_POLARITY_FALLING
02514   *         @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE
02515   */
02516 __STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel)
02517 {
02518   uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel);
02519   return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >>
02520           SHIFT_TAB_CCxP[iChannel]);
02521 }
02522 
02523 /**
02524   * @brief  Connect the TIMx_CH1, CH2 and CH3 pins  to the TI1 input (XOR combination).
02525   * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
02526   *       a timer instance provides an XOR input.
02527   * @rmtoll CR2          TI1S          LL_TIM_IC_EnableXORCombination
02528   * @param  TIMx Timer instance
02529   * @retval None
02530   */
02531 __STATIC_INLINE void LL_TIM_IC_EnableXORCombination(TIM_TypeDef *TIMx)
02532 {
02533   SET_BIT(TIMx->CR2, TIM_CR2_TI1S);
02534 }
02535 
02536 /**
02537   * @brief  Disconnect the TIMx_CH1, CH2 and CH3 pins  from the TI1 input.
02538   * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
02539   *       a timer instance provides an XOR input.
02540   * @rmtoll CR2          TI1S          LL_TIM_IC_DisableXORCombination
02541   * @param  TIMx Timer instance
02542   * @retval None
02543   */
02544 __STATIC_INLINE void LL_TIM_IC_DisableXORCombination(TIM_TypeDef *TIMx)
02545 {
02546   CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S);
02547 }
02548 
02549 /**
02550   * @brief  Indicates whether the TIMx_CH1, CH2 and CH3 pins are connectected to the TI1 input.
02551   * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not
02552   * a timer instance provides an XOR input.
02553   * @rmtoll CR2          TI1S          LL_TIM_IC_IsEnabledXORCombination
02554   * @param  TIMx Timer instance
02555   * @retval State of bit (1 or 0).
02556   */
02557 __STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(TIM_TypeDef *TIMx)
02558 {
02559   return ((READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S)) ? 1UL : 0UL);
02560 }
02561 
02562 /**
02563   * @brief  Get captured value for input channel 1.
02564   * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF.
02565   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
02566   *       whether or not a timer instance supports a 32 bits counter.
02567   * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not
02568   *       input channel 1 is supported by a timer instance.
02569   * @rmtoll CCR1         CCR1          LL_TIM_IC_GetCaptureCH1
02570   * @param  TIMx Timer instance
02571   * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
02572   */
02573 __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH1(TIM_TypeDef *TIMx)
02574 {
02575   return (uint32_t)(READ_REG(TIMx->CCR1));
02576 }
02577 
02578 /**
02579   * @brief  Get captured value for input channel 2.
02580   * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF.
02581   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
02582   *       whether or not a timer instance supports a 32 bits counter.
02583   * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not
02584   *       input channel 2 is supported by a timer instance.
02585   * @rmtoll CCR2         CCR2          LL_TIM_IC_GetCaptureCH2
02586   * @param  TIMx Timer instance
02587   * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
02588   */
02589 __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH2(TIM_TypeDef *TIMx)
02590 {
02591   return (uint32_t)(READ_REG(TIMx->CCR2));
02592 }
02593 
02594 /**
02595   * @brief  Get captured value for input channel 3.
02596   * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF.
02597   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
02598   *       whether or not a timer instance supports a 32 bits counter.
02599   * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not
02600   *       input channel 3 is supported by a timer instance.
02601   * @rmtoll CCR3         CCR3          LL_TIM_IC_GetCaptureCH3
02602   * @param  TIMx Timer instance
02603   * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
02604   */
02605 __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH3(TIM_TypeDef *TIMx)
02606 {
02607   return (uint32_t)(READ_REG(TIMx->CCR3));
02608 }
02609 
02610 /**
02611   * @brief  Get captured value for input channel 4.
02612   * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF.
02613   * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check
02614   *       whether or not a timer instance supports a 32 bits counter.
02615   * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not
02616   *       input channel 4 is supported by a timer instance.
02617   * @rmtoll CCR4         CCR4          LL_TIM_IC_GetCaptureCH4
02618   * @param  TIMx Timer instance
02619   * @retval CapturedValue (between Min_Data=0 and Max_Data=65535)
02620   */
02621 __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH4(TIM_TypeDef *TIMx)
02622 {
02623   return (uint32_t)(READ_REG(TIMx->CCR4));
02624 }
02625 
02626 /**
02627   * @}
02628   */
02629 
02630 /** @defgroup TIM_LL_EF_Clock_Selection Counter clock selection
02631   * @{
02632   */
02633 /**
02634   * @brief  Enable external clock mode 2.
02635   * @note When external clock mode 2 is enabled the counter is clocked by any active edge on the ETRF signal.
02636   * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
02637   *       whether or not a timer instance supports external clock mode2.
02638   * @rmtoll SMCR         ECE           LL_TIM_EnableExternalClock
02639   * @param  TIMx Timer instance
02640   * @retval None
02641   */
02642 __STATIC_INLINE void LL_TIM_EnableExternalClock(TIM_TypeDef *TIMx)
02643 {
02644   SET_BIT(TIMx->SMCR, TIM_SMCR_ECE);
02645 }
02646 
02647 /**
02648   * @brief  Disable external clock mode 2.
02649   * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
02650   *       whether or not a timer instance supports external clock mode2.
02651   * @rmtoll SMCR         ECE           LL_TIM_DisableExternalClock
02652   * @param  TIMx Timer instance
02653   * @retval None
02654   */
02655 __STATIC_INLINE void LL_TIM_DisableExternalClock(TIM_TypeDef *TIMx)
02656 {
02657   CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE);
02658 }
02659 
02660 /**
02661   * @brief  Indicate whether external clock mode 2 is enabled.
02662   * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
02663   *       whether or not a timer instance supports external clock mode2.
02664   * @rmtoll SMCR         ECE           LL_TIM_IsEnabledExternalClock
02665   * @param  TIMx Timer instance
02666   * @retval State of bit (1 or 0).
02667   */
02668 __STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(TIM_TypeDef *TIMx)
02669 {
02670   return ((READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE)) ? 1UL : 0UL);
02671 }
02672 
02673 /**
02674   * @brief  Set the clock source of the counter clock.
02675   * @note when selected clock source is external clock mode 1, the timer input
02676   *       the external clock is applied is selected by calling the @ref LL_TIM_SetTriggerInput()
02677   *       function. This timer input must be configured by calling
02678   *       the @ref LL_TIM_IC_Config() function.
02679   * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(TIMx) can be used to check
02680   *       whether or not a timer instance supports external clock mode1.
02681   * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check
02682   *       whether or not a timer instance supports external clock mode2.
02683   * @rmtoll SMCR         SMS           LL_TIM_SetClockSource\n
02684   *         SMCR         ECE           LL_TIM_SetClockSource
02685   * @param  TIMx Timer instance
02686   * @param  ClockSource This parameter can be one of the following values:
02687   *         @arg @ref LL_TIM_CLOCKSOURCE_INTERNAL
02688   *         @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE1
02689   *         @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE2
02690   * @retval None
02691   */
02692 __STATIC_INLINE void LL_TIM_SetClockSource(TIM_TypeDef *TIMx, uint32_t ClockSource)
02693 {
02694   MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource);
02695 }
02696 
02697 /**
02698   * @brief  Set the encoder interface mode.
02699   * @note Macro IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx) can be used to check
02700   *       whether or not a timer instance supports the encoder mode.
02701   * @rmtoll SMCR         SMS           LL_TIM_SetEncoderMode
02702   * @param  TIMx Timer instance
02703   * @param  EncoderMode This parameter can be one of the following values:
02704   *         @arg @ref LL_TIM_ENCODERMODE_X2_TI1
02705   *         @arg @ref LL_TIM_ENCODERMODE_X2_TI2
02706   *         @arg @ref LL_TIM_ENCODERMODE_X4_TI12
02707   * @retval None
02708   */
02709 __STATIC_INLINE void LL_TIM_SetEncoderMode(TIM_TypeDef *TIMx, uint32_t EncoderMode)
02710 {
02711   MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, EncoderMode);
02712 }
02713 
02714 /**
02715   * @}
02716   */
02717 
02718 /** @defgroup TIM_LL_EF_Timer_Synchronization Timer synchronisation configuration
02719   * @{
02720   */
02721 /**
02722   * @brief  Set the trigger output (TRGO) used for timer synchronization .
02723   * @note Macro IS_TIM_MASTER_INSTANCE(TIMx) can be used to check
02724   *       whether or not a timer instance can operate as a master timer.
02725   * @rmtoll CR2          MMS           LL_TIM_SetTriggerOutput
02726   * @param  TIMx Timer instance
02727   * @param  TimerSynchronization This parameter can be one of the following values:
02728   *         @arg @ref LL_TIM_TRGO_RESET
02729   *         @arg @ref LL_TIM_TRGO_ENABLE
02730   *         @arg @ref LL_TIM_TRGO_UPDATE
02731   *         @arg @ref LL_TIM_TRGO_CC1IF
02732   *         @arg @ref LL_TIM_TRGO_OC1REF
02733   *         @arg @ref LL_TIM_TRGO_OC2REF
02734   *         @arg @ref LL_TIM_TRGO_OC3REF
02735   *         @arg @ref LL_TIM_TRGO_OC4REF
02736   * @retval None
02737   */
02738 __STATIC_INLINE void LL_TIM_SetTriggerOutput(TIM_TypeDef *TIMx, uint32_t TimerSynchronization)
02739 {
02740   MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization);
02741 }
02742 
02743 /**
02744   * @brief  Set the synchronization mode of a slave timer.
02745   * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
02746   *       a timer instance can operate as a slave timer.
02747   * @rmtoll SMCR         SMS           LL_TIM_SetSlaveMode
02748   * @param  TIMx Timer instance
02749   * @param  SlaveMode This parameter can be one of the following values:
02750   *         @arg @ref LL_TIM_SLAVEMODE_DISABLED
02751   *         @arg @ref LL_TIM_SLAVEMODE_RESET
02752   *         @arg @ref LL_TIM_SLAVEMODE_GATED
02753   *         @arg @ref LL_TIM_SLAVEMODE_TRIGGER
02754   * @retval None
02755   */
02756 __STATIC_INLINE void LL_TIM_SetSlaveMode(TIM_TypeDef *TIMx, uint32_t SlaveMode)
02757 {
02758   MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode);
02759 }
02760 
02761 /**
02762   * @brief  Set the selects the trigger input to be used to synchronize the counter.
02763   * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
02764   *       a timer instance can operate as a slave timer.
02765   * @rmtoll SMCR         TS            LL_TIM_SetTriggerInput
02766   * @param  TIMx Timer instance
02767   * @param  TriggerInput This parameter can be one of the following values:
02768   *         @arg @ref LL_TIM_TS_ITR0
02769   *         @arg @ref LL_TIM_TS_ITR1
02770   *         @arg @ref LL_TIM_TS_ITR2
02771   *         @arg @ref LL_TIM_TS_ITR3
02772   *         @arg @ref LL_TIM_TS_TI1F_ED
02773   *         @arg @ref LL_TIM_TS_TI1FP1
02774   *         @arg @ref LL_TIM_TS_TI2FP2
02775   *         @arg @ref LL_TIM_TS_ETRF
02776   * @retval None
02777   */
02778 __STATIC_INLINE void LL_TIM_SetTriggerInput(TIM_TypeDef *TIMx, uint32_t TriggerInput)
02779 {
02780   MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput);
02781 }
02782 
02783 /**
02784   * @brief  Enable the Master/Slave mode.
02785   * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
02786   *       a timer instance can operate as a slave timer.
02787   * @rmtoll SMCR         MSM           LL_TIM_EnableMasterSlaveMode
02788   * @param  TIMx Timer instance
02789   * @retval None
02790   */
02791 __STATIC_INLINE void LL_TIM_EnableMasterSlaveMode(TIM_TypeDef *TIMx)
02792 {
02793   SET_BIT(TIMx->SMCR, TIM_SMCR_MSM);
02794 }
02795 
02796 /**
02797   * @brief  Disable the Master/Slave mode.
02798   * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
02799   *       a timer instance can operate as a slave timer.
02800   * @rmtoll SMCR         MSM           LL_TIM_DisableMasterSlaveMode
02801   * @param  TIMx Timer instance
02802   * @retval None
02803   */
02804 __STATIC_INLINE void LL_TIM_DisableMasterSlaveMode(TIM_TypeDef *TIMx)
02805 {
02806   CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM);
02807 }
02808 
02809 /**
02810   * @brief Indicates whether the Master/Slave mode is enabled.
02811   * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not
02812   * a timer instance can operate as a slave timer.
02813   * @rmtoll SMCR         MSM           LL_TIM_IsEnabledMasterSlaveMode
02814   * @param  TIMx Timer instance
02815   * @retval State of bit (1 or 0).
02816   */
02817 __STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(TIM_TypeDef *TIMx)
02818 {
02819   return ((READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM)) ? 1UL : 0UL);
02820 }
02821 
02822 /**
02823   * @brief  Configure the external trigger (ETR) input.
02824   * @note Macro IS_TIM_ETR_INSTANCE(TIMx) can be used to check whether or not
02825   *       a timer instance provides an external trigger input.
02826   * @rmtoll SMCR         ETP           LL_TIM_ConfigETR\n
02827   *         SMCR         ETPS          LL_TIM_ConfigETR\n
02828   *         SMCR         ETF           LL_TIM_ConfigETR
02829   * @param  TIMx Timer instance
02830   * @param  ETRPolarity This parameter can be one of the following values:
02831   *         @arg @ref LL_TIM_ETR_POLARITY_NONINVERTED
02832   *         @arg @ref LL_TIM_ETR_POLARITY_INVERTED
02833   * @param  ETRPrescaler This parameter can be one of the following values:
02834   *         @arg @ref LL_TIM_ETR_PRESCALER_DIV1
02835   *         @arg @ref LL_TIM_ETR_PRESCALER_DIV2
02836   *         @arg @ref LL_TIM_ETR_PRESCALER_DIV4
02837   *         @arg @ref LL_TIM_ETR_PRESCALER_DIV8
02838   * @param  ETRFilter This parameter can be one of the following values:
02839   *         @arg @ref LL_TIM_ETR_FILTER_FDIV1
02840   *         @arg @ref LL_TIM_ETR_FILTER_FDIV1_N2
02841   *         @arg @ref LL_TIM_ETR_FILTER_FDIV1_N4
02842   *         @arg @ref LL_TIM_ETR_FILTER_FDIV1_N8
02843   *         @arg @ref LL_TIM_ETR_FILTER_FDIV2_N6
02844   *         @arg @ref LL_TIM_ETR_FILTER_FDIV2_N8
02845   *         @arg @ref LL_TIM_ETR_FILTER_FDIV4_N6
02846   *         @arg @ref LL_TIM_ETR_FILTER_FDIV4_N8
02847   *         @arg @ref LL_TIM_ETR_FILTER_FDIV8_N6
02848   *         @arg @ref LL_TIM_ETR_FILTER_FDIV8_N8
02849   *         @arg @ref LL_TIM_ETR_FILTER_FDIV16_N5
02850   *         @arg @ref LL_TIM_ETR_FILTER_FDIV16_N6
02851   *         @arg @ref LL_TIM_ETR_FILTER_FDIV16_N8
02852   *         @arg @ref LL_TIM_ETR_FILTER_FDIV32_N5
02853   *         @arg @ref LL_TIM_ETR_FILTER_FDIV32_N6
02854   *         @arg @ref LL_TIM_ETR_FILTER_FDIV32_N8
02855   * @retval None
02856   */
02857 __STATIC_INLINE void LL_TIM_ConfigETR(TIM_TypeDef *TIMx, uint32_t ETRPolarity, uint32_t ETRPrescaler,
02858                                       uint32_t ETRFilter)
02859 {
02860   MODIFY_REG(TIMx->SMCR, TIM_SMCR_ETP | TIM_SMCR_ETPS | TIM_SMCR_ETF, ETRPolarity | ETRPrescaler | ETRFilter);
02861 }
02862 
02863 /**
02864   * @}
02865   */
02866 
02867 /** @defgroup TIM_LL_EF_Break_Function Break function configuration
02868   * @{
02869   */
02870 /**
02871   * @brief  Enable the break function.
02872   * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
02873   *       a timer instance provides a break input.
02874   * @rmtoll BDTR         BKE           LL_TIM_EnableBRK
02875   * @param  TIMx Timer instance
02876   * @retval None
02877   */
02878 __STATIC_INLINE void LL_TIM_EnableBRK(TIM_TypeDef *TIMx)
02879 {
02880   __IO uint32_t tmpreg;
02881   SET_BIT(TIMx->BDTR, TIM_BDTR_BKE);
02882   /* Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. */
02883   tmpreg = READ_REG(TIMx->BDTR);
02884   (void)(tmpreg);
02885 }
02886 
02887 /**
02888   * @brief  Disable the break function.
02889   * @rmtoll BDTR         BKE           LL_TIM_DisableBRK
02890   * @param  TIMx Timer instance
02891   * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
02892   *       a timer instance provides a break input.
02893   * @retval None
02894   */
02895 __STATIC_INLINE void LL_TIM_DisableBRK(TIM_TypeDef *TIMx)
02896 {
02897   __IO uint32_t tmpreg;
02898   CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKE);
02899   /* Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. */
02900   tmpreg = READ_REG(TIMx->BDTR);
02901   (void)(tmpreg);
02902 }
02903 
02904 /**
02905   * @brief  Configure the break input.
02906   * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
02907   *       a timer instance provides a break input.
02908   * @rmtoll BDTR         BKP           LL_TIM_ConfigBRK
02909   * @param  TIMx Timer instance
02910   * @param  BreakPolarity This parameter can be one of the following values:
02911   *         @arg @ref LL_TIM_BREAK_POLARITY_LOW
02912   *         @arg @ref LL_TIM_BREAK_POLARITY_HIGH
02913   * @retval None
02914   */
02915 __STATIC_INLINE void LL_TIM_ConfigBRK(TIM_TypeDef *TIMx, uint32_t BreakPolarity)
02916 {
02917   __IO uint32_t tmpreg;
02918   MODIFY_REG(TIMx->BDTR, TIM_BDTR_BKP, BreakPolarity);
02919   /* Note: Any write operation to BKP bit takes a delay of 1 APB clock cycle to become effective. */
02920   tmpreg = READ_REG(TIMx->BDTR);
02921   (void)(tmpreg);
02922 }
02923 
02924 /**
02925   * @brief  Select the outputs off state (enabled v.s. disabled) in Idle and Run modes.
02926   * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
02927   *       a timer instance provides a break input.
02928   * @rmtoll BDTR         OSSI          LL_TIM_SetOffStates\n
02929   *         BDTR         OSSR          LL_TIM_SetOffStates
02930   * @param  TIMx Timer instance
02931   * @param  OffStateIdle This parameter can be one of the following values:
02932   *         @arg @ref LL_TIM_OSSI_DISABLE
02933   *         @arg @ref LL_TIM_OSSI_ENABLE
02934   * @param  OffStateRun This parameter can be one of the following values:
02935   *         @arg @ref LL_TIM_OSSR_DISABLE
02936   *         @arg @ref LL_TIM_OSSR_ENABLE
02937   * @retval None
02938   */
02939 __STATIC_INLINE void LL_TIM_SetOffStates(TIM_TypeDef *TIMx, uint32_t OffStateIdle, uint32_t OffStateRun)
02940 {
02941   MODIFY_REG(TIMx->BDTR, TIM_BDTR_OSSI | TIM_BDTR_OSSR, OffStateIdle | OffStateRun);
02942 }
02943 
02944 /**
02945   * @brief  Enable automatic output (MOE can be set by software or automatically when a break input is active).
02946   * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
02947   *       a timer instance provides a break input.
02948   * @rmtoll BDTR         AOE           LL_TIM_EnableAutomaticOutput
02949   * @param  TIMx Timer instance
02950   * @retval None
02951   */
02952 __STATIC_INLINE void LL_TIM_EnableAutomaticOutput(TIM_TypeDef *TIMx)
02953 {
02954   SET_BIT(TIMx->BDTR, TIM_BDTR_AOE);
02955 }
02956 
02957 /**
02958   * @brief  Disable automatic output (MOE can be set only by software).
02959   * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
02960   *       a timer instance provides a break input.
02961   * @rmtoll BDTR         AOE           LL_TIM_DisableAutomaticOutput
02962   * @param  TIMx Timer instance
02963   * @retval None
02964   */
02965 __STATIC_INLINE void LL_TIM_DisableAutomaticOutput(TIM_TypeDef *TIMx)
02966 {
02967   CLEAR_BIT(TIMx->BDTR, TIM_BDTR_AOE);
02968 }
02969 
02970 /**
02971   * @brief  Indicate whether automatic output is enabled.
02972   * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
02973   *       a timer instance provides a break input.
02974   * @rmtoll BDTR         AOE           LL_TIM_IsEnabledAutomaticOutput
02975   * @param  TIMx Timer instance
02976   * @retval State of bit (1 or 0).
02977   */
02978 __STATIC_INLINE uint32_t LL_TIM_IsEnabledAutomaticOutput(TIM_TypeDef *TIMx)
02979 {
02980   return ((READ_BIT(TIMx->BDTR, TIM_BDTR_AOE) == (TIM_BDTR_AOE)) ? 1UL : 0UL);
02981 }
02982 
02983 /**
02984   * @brief  Enable the outputs (set the MOE bit in TIMx_BDTR register).
02985   * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by
02986   *       software and is reset in case of break or break2 event
02987   * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
02988   *       a timer instance provides a break input.
02989   * @rmtoll BDTR         MOE           LL_TIM_EnableAllOutputs
02990   * @param  TIMx Timer instance
02991   * @retval None
02992   */
02993 __STATIC_INLINE void LL_TIM_EnableAllOutputs(TIM_TypeDef *TIMx)
02994 {
02995   SET_BIT(TIMx->BDTR, TIM_BDTR_MOE);
02996 }
02997 
02998 /**
02999   * @brief  Disable the outputs (reset the MOE bit in TIMx_BDTR register).
03000   * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by
03001   *       software and is reset in case of break or break2 event.
03002   * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
03003   *       a timer instance provides a break input.
03004   * @rmtoll BDTR         MOE           LL_TIM_DisableAllOutputs
03005   * @param  TIMx Timer instance
03006   * @retval None
03007   */
03008 __STATIC_INLINE void LL_TIM_DisableAllOutputs(TIM_TypeDef *TIMx)
03009 {
03010   CLEAR_BIT(TIMx->BDTR, TIM_BDTR_MOE);
03011 }
03012 
03013 /**
03014   * @brief  Indicates whether outputs are enabled.
03015   * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not
03016   *       a timer instance provides a break input.
03017   * @rmtoll BDTR         MOE           LL_TIM_IsEnabledAllOutputs
03018   * @param  TIMx Timer instance
03019   * @retval State of bit (1 or 0).
03020   */
03021 __STATIC_INLINE uint32_t LL_TIM_IsEnabledAllOutputs(TIM_TypeDef *TIMx)
03022 {
03023   return ((READ_BIT(TIMx->BDTR, TIM_BDTR_MOE) == (TIM_BDTR_MOE)) ? 1UL : 0UL);
03024 }
03025 
03026 /**
03027   * @}
03028   */
03029 
03030 /** @defgroup TIM_LL_EF_DMA_Burst_Mode DMA burst mode configuration
03031   * @{
03032   */
03033 /**
03034   * @brief  Configures the timer DMA burst feature.
03035   * @note Macro IS_TIM_DMABURST_INSTANCE(TIMx) can be used to check whether or
03036   *       not a timer instance supports the DMA burst mode.
03037   * @rmtoll DCR          DBL           LL_TIM_ConfigDMABurst\n
03038   *         DCR          DBA           LL_TIM_ConfigDMABurst
03039   * @param  TIMx Timer instance
03040   * @param  DMABurstBaseAddress This parameter can be one of the following values:
03041   *         @arg @ref LL_TIM_DMABURST_BASEADDR_CR1
03042   *         @arg @ref LL_TIM_DMABURST_BASEADDR_CR2
03043   *         @arg @ref LL_TIM_DMABURST_BASEADDR_SMCR
03044   *         @arg @ref LL_TIM_DMABURST_BASEADDR_DIER
03045   *         @arg @ref LL_TIM_DMABURST_BASEADDR_SR
03046   *         @arg @ref LL_TIM_DMABURST_BASEADDR_EGR
03047   *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR1
03048   *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR2
03049   *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCER
03050   *         @arg @ref LL_TIM_DMABURST_BASEADDR_CNT
03051   *         @arg @ref LL_TIM_DMABURST_BASEADDR_PSC
03052   *         @arg @ref LL_TIM_DMABURST_BASEADDR_ARR
03053   *         @arg @ref LL_TIM_DMABURST_BASEADDR_RCR
03054   *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCR1
03055   *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCR2
03056   *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCR3
03057   *         @arg @ref LL_TIM_DMABURST_BASEADDR_CCR4
03058   *         @arg @ref LL_TIM_DMABURST_BASEADDR_BDTR
03059   * @param  DMABurstLength This parameter can be one of the following values:
03060   *         @arg @ref LL_TIM_DMABURST_LENGTH_1TRANSFER
03061   *         @arg @ref LL_TIM_DMABURST_LENGTH_2TRANSFERS
03062   *         @arg @ref LL_TIM_DMABURST_LENGTH_3TRANSFERS
03063   *         @arg @ref LL_TIM_DMABURST_LENGTH_4TRANSFERS
03064   *         @arg @ref LL_TIM_DMABURST_LENGTH_5TRANSFERS
03065   *         @arg @ref LL_TIM_DMABURST_LENGTH_6TRANSFERS
03066   *         @arg @ref LL_TIM_DMABURST_LENGTH_7TRANSFERS
03067   *         @arg @ref LL_TIM_DMABURST_LENGTH_8TRANSFERS
03068   *         @arg @ref LL_TIM_DMABURST_LENGTH_9TRANSFERS
03069   *         @arg @ref LL_TIM_DMABURST_LENGTH_10TRANSFERS
03070   *         @arg @ref LL_TIM_DMABURST_LENGTH_11TRANSFERS
03071   *         @arg @ref LL_TIM_DMABURST_LENGTH_12TRANSFERS
03072   *         @arg @ref LL_TIM_DMABURST_LENGTH_13TRANSFERS
03073   *         @arg @ref LL_TIM_DMABURST_LENGTH_14TRANSFERS
03074   *         @arg @ref LL_TIM_DMABURST_LENGTH_15TRANSFERS
03075   *         @arg @ref LL_TIM_DMABURST_LENGTH_16TRANSFERS
03076   *         @arg @ref LL_TIM_DMABURST_LENGTH_17TRANSFERS
03077   *         @arg @ref LL_TIM_DMABURST_LENGTH_18TRANSFERS
03078   * @retval None
03079   */
03080 __STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_t DMABurstLength)
03081 {
03082   MODIFY_REG(TIMx->DCR, (TIM_DCR_DBL | TIM_DCR_DBA), (DMABurstBaseAddress | DMABurstLength));
03083 }
03084 
03085 /**
03086   * @}
03087   */
03088 
03089 /** @defgroup TIM_LL_EF_Timer_Inputs_Remapping Timer input remapping
03090   * @{
03091   */
03092 /**
03093   * @brief  Remap TIM inputs (input channel, internal/external triggers).
03094   * @note Macro IS_TIM_REMAP_INSTANCE(TIMx) can be used to check whether or not
03095   *       a some timer inputs can be remapped.
03096   * @rmtoll TIM1_OR     ITR2_RMP          LL_TIM_SetRemap\n
03097   *         TIM2_OR     ITR1_RMP          LL_TIM_SetRemap\n
03098   *         TIM5_OR     ITR1_RMP          LL_TIM_SetRemap\n
03099   *         TIM5_OR     TI4_RMP           LL_TIM_SetRemap\n
03100   *         TIM9_OR     ITR1_RMP          LL_TIM_SetRemap\n
03101   *         TIM11_OR    TI1_RMP           LL_TIM_SetRemap\n
03102   *         LPTIM1_OR   OR                LL_TIM_SetRemap
03103   * @param  TIMx Timer instance
03104   * @param  Remap Remap param depends on the TIMx. Description available only
03105   *         in CHM version of the User Manual (not in .pdf).
03106   *         Otherwise see Reference Manual description of OR registers.
03107   *
03108   *         Below description summarizes "Timer Instance" and "Remap" param combinations:
03109   *
03110   *         TIM1: one of the following values
03111   *
03112   *            ITR2_RMP can be one of the following values
03113   *            @arg @ref LL_TIM_TIM1_ITR2_RMP_TIM3_TRGO (*)
03114   *            @arg @ref LL_TIM_TIM1_ITR2_RMP_LPTIM (*)
03115   *
03116   *         TIM2: one of the following values
03117   *
03118   *            ITR1_RMP can be one of the following values
03119   *            @arg @ref LL_TIM_TIM2_ITR1_RMP_TIM8_TRGO
03120   *            @arg @ref LL_TIM_TIM2_ITR1_RMP_OTG_FS_SOF
03121   *            @arg @ref LL_TIM_TIM2_ITR1_RMP_OTG_HS_SOF
03122   *
03123   *         TIM5: one of the following values
03124   *
03125   *            @arg @ref LL_TIM_TIM5_TI4_RMP_GPIO
03126   *            @arg @ref LL_TIM_TIM5_TI4_RMP_LSI
03127   *            @arg @ref LL_TIM_TIM5_TI4_RMP_LSE
03128   *            @arg @ref LL_TIM_TIM5_TI4_RMP_RTC
03129   *            @arg @ref LL_TIM_TIM5_ITR1_RMP_TIM3_TRGO (*)
03130   *            @arg @ref LL_TIM_TIM5_ITR1_RMP_LPTIM (*)
03131   *
03132   *         TIM9: one of the following values
03133   *
03134   *            ITR1_RMP can be one of the following values
03135   *            @arg @ref LL_TIM_TIM9_ITR1_RMP_TIM3_TRGO (*)
03136   *            @arg @ref LL_TIM_TIM9_ITR1_RMP_LPTIM (*)
03137   *
03138   *         TIM11: one of the following values
03139   *
03140   *            @arg @ref LL_TIM_TIM11_TI1_RMP_GPIO
03141   *            @arg @ref LL_TIM_TIM11_TI1_RMP_GPIO1 (*)
03142   *            @arg @ref LL_TIM_TIM11_TI1_RMP_HSE_RTC
03143   *            @arg @ref LL_TIM_TIM11_TI1_RMP_GPIO2
03144   *            @arg @ref LL_TIM_TIM11_TI1_RMP_SPDIFRX (*)
03145   *
03146   *         (*)  Value not defined in all devices. \n
03147   *
03148   * @retval None
03149   */
03150 __STATIC_INLINE void LL_TIM_SetRemap(TIM_TypeDef *TIMx, uint32_t Remap)
03151 {
03152 #if defined(LPTIM_OR_TIM1_ITR2_RMP) && defined(LPTIM_OR_TIM5_ITR1_RMP) && defined(LPTIM_OR_TIM9_ITR1_RMP)
03153   if ((Remap & LL_TIM_LPTIM_REMAP_MASK) == LL_TIM_LPTIM_REMAP_MASK)
03154   {
03155     /* Connect TIMx internal trigger to LPTIM1 output */
03156     SET_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN);
03157     MODIFY_REG(LPTIM1->OR,
03158                (LPTIM_OR_TIM1_ITR2_RMP | LPTIM_OR_TIM5_ITR1_RMP | LPTIM_OR_TIM9_ITR1_RMP),
03159                Remap & ~(LL_TIM_LPTIM_REMAP_MASK));
03160   }
03161   else
03162   {
03163     MODIFY_REG(TIMx->OR, (Remap >> TIMx_OR_RMP_SHIFT), (Remap & TIMx_OR_RMP_MASK));
03164   }
03165 #else
03166   MODIFY_REG(TIMx->OR, (Remap >> TIMx_OR_RMP_SHIFT), (Remap & TIMx_OR_RMP_MASK));
03167 #endif /* LPTIM_OR_TIM1_ITR2_RMP &&  LPTIM_OR_TIM5_ITR1_RMP && LPTIM_OR_TIM9_ITR1_RMP */
03168 }
03169 
03170 /**
03171   * @}
03172   */
03173 
03174 /** @defgroup TIM_LL_EF_FLAG_Management FLAG-Management
03175   * @{
03176   */
03177 /**
03178   * @brief  Clear the update interrupt flag (UIF).
03179   * @rmtoll SR           UIF           LL_TIM_ClearFlag_UPDATE
03180   * @param  TIMx Timer instance
03181   * @retval None
03182   */
03183 __STATIC_INLINE void LL_TIM_ClearFlag_UPDATE(TIM_TypeDef *TIMx)
03184 {
03185   WRITE_REG(TIMx->SR, ~(TIM_SR_UIF));
03186 }
03187 
03188 /**
03189   * @brief  Indicate whether update interrupt flag (UIF) is set (update interrupt is pending).
03190   * @rmtoll SR           UIF           LL_TIM_IsActiveFlag_UPDATE
03191   * @param  TIMx Timer instance
03192   * @retval State of bit (1 or 0).
03193   */
03194 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(TIM_TypeDef *TIMx)
03195 {
03196   return ((READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF)) ? 1UL : 0UL);
03197 }
03198 
03199 /**
03200   * @brief  Clear the Capture/Compare 1 interrupt flag (CC1F).
03201   * @rmtoll SR           CC1IF         LL_TIM_ClearFlag_CC1
03202   * @param  TIMx Timer instance
03203   * @retval None
03204   */
03205 __STATIC_INLINE void LL_TIM_ClearFlag_CC1(TIM_TypeDef *TIMx)
03206 {
03207   WRITE_REG(TIMx->SR, ~(TIM_SR_CC1IF));
03208 }
03209 
03210 /**
03211   * @brief  Indicate whether Capture/Compare 1 interrupt flag (CC1F) is set (Capture/Compare 1 interrupt is pending).
03212   * @rmtoll SR           CC1IF         LL_TIM_IsActiveFlag_CC1
03213   * @param  TIMx Timer instance
03214   * @retval State of bit (1 or 0).
03215   */
03216 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1(TIM_TypeDef *TIMx)
03217 {
03218   return ((READ_BIT(TIMx->SR, TIM_SR_CC1IF) == (TIM_SR_CC1IF)) ? 1UL : 0UL);
03219 }
03220 
03221 /**
03222   * @brief  Clear the Capture/Compare 2 interrupt flag (CC2F).
03223   * @rmtoll SR           CC2IF         LL_TIM_ClearFlag_CC2
03224   * @param  TIMx Timer instance
03225   * @retval None
03226   */
03227 __STATIC_INLINE void LL_TIM_ClearFlag_CC2(TIM_TypeDef *TIMx)
03228 {
03229   WRITE_REG(TIMx->SR, ~(TIM_SR_CC2IF));
03230 }
03231 
03232 /**
03233   * @brief  Indicate whether Capture/Compare 2 interrupt flag (CC2F) is set (Capture/Compare 2 interrupt is pending).
03234   * @rmtoll SR           CC2IF         LL_TIM_IsActiveFlag_CC2
03235   * @param  TIMx Timer instance
03236   * @retval State of bit (1 or 0).
03237   */
03238 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2(TIM_TypeDef *TIMx)
03239 {
03240   return ((READ_BIT(TIMx->SR, TIM_SR_CC2IF) == (TIM_SR_CC2IF)) ? 1UL : 0UL);
03241 }
03242 
03243 /**
03244   * @brief  Clear the Capture/Compare 3 interrupt flag (CC3F).
03245   * @rmtoll SR           CC3IF         LL_TIM_ClearFlag_CC3
03246   * @param  TIMx Timer instance
03247   * @retval None
03248   */
03249 __STATIC_INLINE void LL_TIM_ClearFlag_CC3(TIM_TypeDef *TIMx)
03250 {
03251   WRITE_REG(TIMx->SR, ~(TIM_SR_CC3IF));
03252 }
03253 
03254 /**
03255   * @brief  Indicate whether Capture/Compare 3 interrupt flag (CC3F) is set (Capture/Compare 3 interrupt is pending).
03256   * @rmtoll SR           CC3IF         LL_TIM_IsActiveFlag_CC3
03257   * @param  TIMx Timer instance
03258   * @retval State of bit (1 or 0).
03259   */
03260 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3(TIM_TypeDef *TIMx)
03261 {
03262   return ((READ_BIT(TIMx->SR, TIM_SR_CC3IF) == (TIM_SR_CC3IF)) ? 1UL : 0UL);
03263 }
03264 
03265 /**
03266   * @brief  Clear the Capture/Compare 4 interrupt flag (CC4F).
03267   * @rmtoll SR           CC4IF         LL_TIM_ClearFlag_CC4
03268   * @param  TIMx Timer instance
03269   * @retval None
03270   */
03271 __STATIC_INLINE void LL_TIM_ClearFlag_CC4(TIM_TypeDef *TIMx)
03272 {
03273   WRITE_REG(TIMx->SR, ~(TIM_SR_CC4IF));
03274 }
03275 
03276 /**
03277   * @brief  Indicate whether Capture/Compare 4 interrupt flag (CC4F) is set (Capture/Compare 4 interrupt is pending).
03278   * @rmtoll SR           CC4IF         LL_TIM_IsActiveFlag_CC4
03279   * @param  TIMx Timer instance
03280   * @retval State of bit (1 or 0).
03281   */
03282 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4(TIM_TypeDef *TIMx)
03283 {
03284   return ((READ_BIT(TIMx->SR, TIM_SR_CC4IF) == (TIM_SR_CC4IF)) ? 1UL : 0UL);
03285 }
03286 
03287 /**
03288   * @brief  Clear the commutation interrupt flag (COMIF).
03289   * @rmtoll SR           COMIF         LL_TIM_ClearFlag_COM
03290   * @param  TIMx Timer instance
03291   * @retval None
03292   */
03293 __STATIC_INLINE void LL_TIM_ClearFlag_COM(TIM_TypeDef *TIMx)
03294 {
03295   WRITE_REG(TIMx->SR, ~(TIM_SR_COMIF));
03296 }
03297 
03298 /**
03299   * @brief  Indicate whether commutation interrupt flag (COMIF) is set (commutation interrupt is pending).
03300   * @rmtoll SR           COMIF         LL_TIM_IsActiveFlag_COM
03301   * @param  TIMx Timer instance
03302   * @retval State of bit (1 or 0).
03303   */
03304 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_COM(TIM_TypeDef *TIMx)
03305 {
03306   return ((READ_BIT(TIMx->SR, TIM_SR_COMIF) == (TIM_SR_COMIF)) ? 1UL : 0UL);
03307 }
03308 
03309 /**
03310   * @brief  Clear the trigger interrupt flag (TIF).
03311   * @rmtoll SR           TIF           LL_TIM_ClearFlag_TRIG
03312   * @param  TIMx Timer instance
03313   * @retval None
03314   */
03315 __STATIC_INLINE void LL_TIM_ClearFlag_TRIG(TIM_TypeDef *TIMx)
03316 {
03317   WRITE_REG(TIMx->SR, ~(TIM_SR_TIF));
03318 }
03319 
03320 /**
03321   * @brief  Indicate whether trigger interrupt flag (TIF) is set (trigger interrupt is pending).
03322   * @rmtoll SR           TIF           LL_TIM_IsActiveFlag_TRIG
03323   * @param  TIMx Timer instance
03324   * @retval State of bit (1 or 0).
03325   */
03326 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_TRIG(TIM_TypeDef *TIMx)
03327 {
03328   return ((READ_BIT(TIMx->SR, TIM_SR_TIF) == (TIM_SR_TIF)) ? 1UL : 0UL);
03329 }
03330 
03331 /**
03332   * @brief  Clear the break interrupt flag (BIF).
03333   * @rmtoll SR           BIF           LL_TIM_ClearFlag_BRK
03334   * @param  TIMx Timer instance
03335   * @retval None
03336   */
03337 __STATIC_INLINE void LL_TIM_ClearFlag_BRK(TIM_TypeDef *TIMx)
03338 {
03339   WRITE_REG(TIMx->SR, ~(TIM_SR_BIF));
03340 }
03341 
03342 /**
03343   * @brief  Indicate whether break interrupt flag (BIF) is set (break interrupt is pending).
03344   * @rmtoll SR           BIF           LL_TIM_IsActiveFlag_BRK
03345   * @param  TIMx Timer instance
03346   * @retval State of bit (1 or 0).
03347   */
03348 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK(TIM_TypeDef *TIMx)
03349 {
03350   return ((READ_BIT(TIMx->SR, TIM_SR_BIF) == (TIM_SR_BIF)) ? 1UL : 0UL);
03351 }
03352 
03353 /**
03354   * @brief  Clear the Capture/Compare 1 over-capture interrupt flag (CC1OF).
03355   * @rmtoll SR           CC1OF         LL_TIM_ClearFlag_CC1OVR
03356   * @param  TIMx Timer instance
03357   * @retval None
03358   */
03359 __STATIC_INLINE void LL_TIM_ClearFlag_CC1OVR(TIM_TypeDef *TIMx)
03360 {
03361   WRITE_REG(TIMx->SR, ~(TIM_SR_CC1OF));
03362 }
03363 
03364 /**
03365   * @brief  Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set
03366   *         (Capture/Compare 1 interrupt is pending).
03367   * @rmtoll SR           CC1OF         LL_TIM_IsActiveFlag_CC1OVR
03368   * @param  TIMx Timer instance
03369   * @retval State of bit (1 or 0).
03370   */
03371 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(TIM_TypeDef *TIMx)
03372 {
03373   return ((READ_BIT(TIMx->SR, TIM_SR_CC1OF) == (TIM_SR_CC1OF)) ? 1UL : 0UL);
03374 }
03375 
03376 /**
03377   * @brief  Clear the Capture/Compare 2 over-capture interrupt flag (CC2OF).
03378   * @rmtoll SR           CC2OF         LL_TIM_ClearFlag_CC2OVR
03379   * @param  TIMx Timer instance
03380   * @retval None
03381   */
03382 __STATIC_INLINE void LL_TIM_ClearFlag_CC2OVR(TIM_TypeDef *TIMx)
03383 {
03384   WRITE_REG(TIMx->SR, ~(TIM_SR_CC2OF));
03385 }
03386 
03387 /**
03388   * @brief  Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set
03389   *         (Capture/Compare 2 over-capture interrupt is pending).
03390   * @rmtoll SR           CC2OF         LL_TIM_IsActiveFlag_CC2OVR
03391   * @param  TIMx Timer instance
03392   * @retval State of bit (1 or 0).
03393   */
03394 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(TIM_TypeDef *TIMx)
03395 {
03396   return ((READ_BIT(TIMx->SR, TIM_SR_CC2OF) == (TIM_SR_CC2OF)) ? 1UL : 0UL);
03397 }
03398 
03399 /**
03400   * @brief  Clear the Capture/Compare 3 over-capture interrupt flag (CC3OF).
03401   * @rmtoll SR           CC3OF         LL_TIM_ClearFlag_CC3OVR
03402   * @param  TIMx Timer instance
03403   * @retval None
03404   */
03405 __STATIC_INLINE void LL_TIM_ClearFlag_CC3OVR(TIM_TypeDef *TIMx)
03406 {
03407   WRITE_REG(TIMx->SR, ~(TIM_SR_CC3OF));
03408 }
03409 
03410 /**
03411   * @brief  Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set
03412   *         (Capture/Compare 3 over-capture interrupt is pending).
03413   * @rmtoll SR           CC3OF         LL_TIM_IsActiveFlag_CC3OVR
03414   * @param  TIMx Timer instance
03415   * @retval State of bit (1 or 0).
03416   */
03417 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(TIM_TypeDef *TIMx)
03418 {
03419   return ((READ_BIT(TIMx->SR, TIM_SR_CC3OF) == (TIM_SR_CC3OF)) ? 1UL : 0UL);
03420 }
03421 
03422 /**
03423   * @brief  Clear the Capture/Compare 4 over-capture interrupt flag (CC4OF).
03424   * @rmtoll SR           CC4OF         LL_TIM_ClearFlag_CC4OVR
03425   * @param  TIMx Timer instance
03426   * @retval None
03427   */
03428 __STATIC_INLINE void LL_TIM_ClearFlag_CC4OVR(TIM_TypeDef *TIMx)
03429 {
03430   WRITE_REG(TIMx->SR, ~(TIM_SR_CC4OF));
03431 }
03432 
03433 /**
03434   * @brief  Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set
03435   *         (Capture/Compare 4 over-capture interrupt is pending).
03436   * @rmtoll SR           CC4OF         LL_TIM_IsActiveFlag_CC4OVR
03437   * @param  TIMx Timer instance
03438   * @retval State of bit (1 or 0).
03439   */
03440 __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(TIM_TypeDef *TIMx)
03441 {
03442   return ((READ_BIT(TIMx->SR, TIM_SR_CC4OF) == (TIM_SR_CC4OF)) ? 1UL : 0UL);
03443 }
03444 
03445 /**
03446   * @}
03447   */
03448 
03449 /** @defgroup TIM_LL_EF_IT_Management IT-Management
03450   * @{
03451   */
03452 /**
03453   * @brief  Enable update interrupt (UIE).
03454   * @rmtoll DIER         UIE           LL_TIM_EnableIT_UPDATE
03455   * @param  TIMx Timer instance
03456   * @retval None
03457   */
03458 __STATIC_INLINE void LL_TIM_EnableIT_UPDATE(TIM_TypeDef *TIMx)
03459 {
03460   SET_BIT(TIMx->DIER, TIM_DIER_UIE);
03461 }
03462 
03463 /**
03464   * @brief  Disable update interrupt (UIE).
03465   * @rmtoll DIER         UIE           LL_TIM_DisableIT_UPDATE
03466   * @param  TIMx Timer instance
03467   * @retval None
03468   */
03469 __STATIC_INLINE void LL_TIM_DisableIT_UPDATE(TIM_TypeDef *TIMx)
03470 {
03471   CLEAR_BIT(TIMx->DIER, TIM_DIER_UIE);
03472 }
03473 
03474 /**
03475   * @brief  Indicates whether the update interrupt (UIE) is enabled.
03476   * @rmtoll DIER         UIE           LL_TIM_IsEnabledIT_UPDATE
03477   * @param  TIMx Timer instance
03478   * @retval State of bit (1 or 0).
03479   */
03480 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_UPDATE(TIM_TypeDef *TIMx)
03481 {
03482   return ((READ_BIT(TIMx->DIER, TIM_DIER_UIE) == (TIM_DIER_UIE)) ? 1UL : 0UL);
03483 }
03484 
03485 /**
03486   * @brief  Enable capture/compare 1 interrupt (CC1IE).
03487   * @rmtoll DIER         CC1IE         LL_TIM_EnableIT_CC1
03488   * @param  TIMx Timer instance
03489   * @retval None
03490   */
03491 __STATIC_INLINE void LL_TIM_EnableIT_CC1(TIM_TypeDef *TIMx)
03492 {
03493   SET_BIT(TIMx->DIER, TIM_DIER_CC1IE);
03494 }
03495 
03496 /**
03497   * @brief  Disable capture/compare 1  interrupt (CC1IE).
03498   * @rmtoll DIER         CC1IE         LL_TIM_DisableIT_CC1
03499   * @param  TIMx Timer instance
03500   * @retval None
03501   */
03502 __STATIC_INLINE void LL_TIM_DisableIT_CC1(TIM_TypeDef *TIMx)
03503 {
03504   CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1IE);
03505 }
03506 
03507 /**
03508   * @brief  Indicates whether the capture/compare 1 interrupt (CC1IE) is enabled.
03509   * @rmtoll DIER         CC1IE         LL_TIM_IsEnabledIT_CC1
03510   * @param  TIMx Timer instance
03511   * @retval State of bit (1 or 0).
03512   */
03513 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC1(TIM_TypeDef *TIMx)
03514 {
03515   return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1IE) == (TIM_DIER_CC1IE)) ? 1UL : 0UL);
03516 }
03517 
03518 /**
03519   * @brief  Enable capture/compare 2 interrupt (CC2IE).
03520   * @rmtoll DIER         CC2IE         LL_TIM_EnableIT_CC2
03521   * @param  TIMx Timer instance
03522   * @retval None
03523   */
03524 __STATIC_INLINE void LL_TIM_EnableIT_CC2(TIM_TypeDef *TIMx)
03525 {
03526   SET_BIT(TIMx->DIER, TIM_DIER_CC2IE);
03527 }
03528 
03529 /**
03530   * @brief  Disable capture/compare 2  interrupt (CC2IE).
03531   * @rmtoll DIER         CC2IE         LL_TIM_DisableIT_CC2
03532   * @param  TIMx Timer instance
03533   * @retval None
03534   */
03535 __STATIC_INLINE void LL_TIM_DisableIT_CC2(TIM_TypeDef *TIMx)
03536 {
03537   CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2IE);
03538 }
03539 
03540 /**
03541   * @brief  Indicates whether the capture/compare 2 interrupt (CC2IE) is enabled.
03542   * @rmtoll DIER         CC2IE         LL_TIM_IsEnabledIT_CC2
03543   * @param  TIMx Timer instance
03544   * @retval State of bit (1 or 0).
03545   */
03546 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC2(TIM_TypeDef *TIMx)
03547 {
03548   return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2IE) == (TIM_DIER_CC2IE)) ? 1UL : 0UL);
03549 }
03550 
03551 /**
03552   * @brief  Enable capture/compare 3 interrupt (CC3IE).
03553   * @rmtoll DIER         CC3IE         LL_TIM_EnableIT_CC3
03554   * @param  TIMx Timer instance
03555   * @retval None
03556   */
03557 __STATIC_INLINE void LL_TIM_EnableIT_CC3(TIM_TypeDef *TIMx)
03558 {
03559   SET_BIT(TIMx->DIER, TIM_DIER_CC3IE);
03560 }
03561 
03562 /**
03563   * @brief  Disable capture/compare 3  interrupt (CC3IE).
03564   * @rmtoll DIER         CC3IE         LL_TIM_DisableIT_CC3
03565   * @param  TIMx Timer instance
03566   * @retval None
03567   */
03568 __STATIC_INLINE void LL_TIM_DisableIT_CC3(TIM_TypeDef *TIMx)
03569 {
03570   CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3IE);
03571 }
03572 
03573 /**
03574   * @brief  Indicates whether the capture/compare 3 interrupt (CC3IE) is enabled.
03575   * @rmtoll DIER         CC3IE         LL_TIM_IsEnabledIT_CC3
03576   * @param  TIMx Timer instance
03577   * @retval State of bit (1 or 0).
03578   */
03579 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC3(TIM_TypeDef *TIMx)
03580 {
03581   return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3IE) == (TIM_DIER_CC3IE)) ? 1UL : 0UL);
03582 }
03583 
03584 /**
03585   * @brief  Enable capture/compare 4 interrupt (CC4IE).
03586   * @rmtoll DIER         CC4IE         LL_TIM_EnableIT_CC4
03587   * @param  TIMx Timer instance
03588   * @retval None
03589   */
03590 __STATIC_INLINE void LL_TIM_EnableIT_CC4(TIM_TypeDef *TIMx)
03591 {
03592   SET_BIT(TIMx->DIER, TIM_DIER_CC4IE);
03593 }
03594 
03595 /**
03596   * @brief  Disable capture/compare 4  interrupt (CC4IE).
03597   * @rmtoll DIER         CC4IE         LL_TIM_DisableIT_CC4
03598   * @param  TIMx Timer instance
03599   * @retval None
03600   */
03601 __STATIC_INLINE void LL_TIM_DisableIT_CC4(TIM_TypeDef *TIMx)
03602 {
03603   CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4IE);
03604 }
03605 
03606 /**
03607   * @brief  Indicates whether the capture/compare 4 interrupt (CC4IE) is enabled.
03608   * @rmtoll DIER         CC4IE         LL_TIM_IsEnabledIT_CC4
03609   * @param  TIMx Timer instance
03610   * @retval State of bit (1 or 0).
03611   */
03612 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC4(TIM_TypeDef *TIMx)
03613 {
03614   return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4IE) == (TIM_DIER_CC4IE)) ? 1UL : 0UL);
03615 }
03616 
03617 /**
03618   * @brief  Enable commutation interrupt (COMIE).
03619   * @rmtoll DIER         COMIE         LL_TIM_EnableIT_COM
03620   * @param  TIMx Timer instance
03621   * @retval None
03622   */
03623 __STATIC_INLINE void LL_TIM_EnableIT_COM(TIM_TypeDef *TIMx)
03624 {
03625   SET_BIT(TIMx->DIER, TIM_DIER_COMIE);
03626 }
03627 
03628 /**
03629   * @brief  Disable commutation interrupt (COMIE).
03630   * @rmtoll DIER         COMIE         LL_TIM_DisableIT_COM
03631   * @param  TIMx Timer instance
03632   * @retval None
03633   */
03634 __STATIC_INLINE void LL_TIM_DisableIT_COM(TIM_TypeDef *TIMx)
03635 {
03636   CLEAR_BIT(TIMx->DIER, TIM_DIER_COMIE);
03637 }
03638 
03639 /**
03640   * @brief  Indicates whether the commutation interrupt (COMIE) is enabled.
03641   * @rmtoll DIER         COMIE         LL_TIM_IsEnabledIT_COM
03642   * @param  TIMx Timer instance
03643   * @retval State of bit (1 or 0).
03644   */
03645 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_COM(TIM_TypeDef *TIMx)
03646 {
03647   return ((READ_BIT(TIMx->DIER, TIM_DIER_COMIE) == (TIM_DIER_COMIE)) ? 1UL : 0UL);
03648 }
03649 
03650 /**
03651   * @brief  Enable trigger interrupt (TIE).
03652   * @rmtoll DIER         TIE           LL_TIM_EnableIT_TRIG
03653   * @param  TIMx Timer instance
03654   * @retval None
03655   */
03656 __STATIC_INLINE void LL_TIM_EnableIT_TRIG(TIM_TypeDef *TIMx)
03657 {
03658   SET_BIT(TIMx->DIER, TIM_DIER_TIE);
03659 }
03660 
03661 /**
03662   * @brief  Disable trigger interrupt (TIE).
03663   * @rmtoll DIER         TIE           LL_TIM_DisableIT_TRIG
03664   * @param  TIMx Timer instance
03665   * @retval None
03666   */
03667 __STATIC_INLINE void LL_TIM_DisableIT_TRIG(TIM_TypeDef *TIMx)
03668 {
03669   CLEAR_BIT(TIMx->DIER, TIM_DIER_TIE);
03670 }
03671 
03672 /**
03673   * @brief  Indicates whether the trigger interrupt (TIE) is enabled.
03674   * @rmtoll DIER         TIE           LL_TIM_IsEnabledIT_TRIG
03675   * @param  TIMx Timer instance
03676   * @retval State of bit (1 or 0).
03677   */
03678 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_TRIG(TIM_TypeDef *TIMx)
03679 {
03680   return ((READ_BIT(TIMx->DIER, TIM_DIER_TIE) == (TIM_DIER_TIE)) ? 1UL : 0UL);
03681 }
03682 
03683 /**
03684   * @brief  Enable break interrupt (BIE).
03685   * @rmtoll DIER         BIE           LL_TIM_EnableIT_BRK
03686   * @param  TIMx Timer instance
03687   * @retval None
03688   */
03689 __STATIC_INLINE void LL_TIM_EnableIT_BRK(TIM_TypeDef *TIMx)
03690 {
03691   SET_BIT(TIMx->DIER, TIM_DIER_BIE);
03692 }
03693 
03694 /**
03695   * @brief  Disable break interrupt (BIE).
03696   * @rmtoll DIER         BIE           LL_TIM_DisableIT_BRK
03697   * @param  TIMx Timer instance
03698   * @retval None
03699   */
03700 __STATIC_INLINE void LL_TIM_DisableIT_BRK(TIM_TypeDef *TIMx)
03701 {
03702   CLEAR_BIT(TIMx->DIER, TIM_DIER_BIE);
03703 }
03704 
03705 /**
03706   * @brief  Indicates whether the break interrupt (BIE) is enabled.
03707   * @rmtoll DIER         BIE           LL_TIM_IsEnabledIT_BRK
03708   * @param  TIMx Timer instance
03709   * @retval State of bit (1 or 0).
03710   */
03711 __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_BRK(TIM_TypeDef *TIMx)
03712 {
03713   return ((READ_BIT(TIMx->DIER, TIM_DIER_BIE) == (TIM_DIER_BIE)) ? 1UL : 0UL);
03714 }
03715 
03716 /**
03717   * @}
03718   */
03719 
03720 /** @defgroup TIM_LL_EF_DMA_Management DMA Management
03721   * @{
03722   */
03723 /**
03724   * @brief  Enable update DMA request (UDE).
03725   * @rmtoll DIER         UDE           LL_TIM_EnableDMAReq_UPDATE
03726   * @param  TIMx Timer instance
03727   * @retval None
03728   */
03729 __STATIC_INLINE void LL_TIM_EnableDMAReq_UPDATE(TIM_TypeDef *TIMx)
03730 {
03731   SET_BIT(TIMx->DIER, TIM_DIER_UDE);
03732 }
03733 
03734 /**
03735   * @brief  Disable update DMA request (UDE).
03736   * @rmtoll DIER         UDE           LL_TIM_DisableDMAReq_UPDATE
03737   * @param  TIMx Timer instance
03738   * @retval None
03739   */
03740 __STATIC_INLINE void LL_TIM_DisableDMAReq_UPDATE(TIM_TypeDef *TIMx)
03741 {
03742   CLEAR_BIT(TIMx->DIER, TIM_DIER_UDE);
03743 }
03744 
03745 /**
03746   * @brief  Indicates whether the update DMA request  (UDE) is enabled.
03747   * @rmtoll DIER         UDE           LL_TIM_IsEnabledDMAReq_UPDATE
03748   * @param  TIMx Timer instance
03749   * @retval State of bit (1 or 0).
03750   */
03751 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_UPDATE(TIM_TypeDef *TIMx)
03752 {
03753   return ((READ_BIT(TIMx->DIER, TIM_DIER_UDE) == (TIM_DIER_UDE)) ? 1UL : 0UL);
03754 }
03755 
03756 /**
03757   * @brief  Enable capture/compare 1 DMA request (CC1DE).
03758   * @rmtoll DIER         CC1DE         LL_TIM_EnableDMAReq_CC1
03759   * @param  TIMx Timer instance
03760   * @retval None
03761   */
03762 __STATIC_INLINE void LL_TIM_EnableDMAReq_CC1(TIM_TypeDef *TIMx)
03763 {
03764   SET_BIT(TIMx->DIER, TIM_DIER_CC1DE);
03765 }
03766 
03767 /**
03768   * @brief  Disable capture/compare 1  DMA request (CC1DE).
03769   * @rmtoll DIER         CC1DE         LL_TIM_DisableDMAReq_CC1
03770   * @param  TIMx Timer instance
03771   * @retval None
03772   */
03773 __STATIC_INLINE void LL_TIM_DisableDMAReq_CC1(TIM_TypeDef *TIMx)
03774 {
03775   CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1DE);
03776 }
03777 
03778 /**
03779   * @brief  Indicates whether the capture/compare 1 DMA request (CC1DE) is enabled.
03780   * @rmtoll DIER         CC1DE         LL_TIM_IsEnabledDMAReq_CC1
03781   * @param  TIMx Timer instance
03782   * @retval State of bit (1 or 0).
03783   */
03784 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC1(TIM_TypeDef *TIMx)
03785 {
03786   return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1DE) == (TIM_DIER_CC1DE)) ? 1UL : 0UL);
03787 }
03788 
03789 /**
03790   * @brief  Enable capture/compare 2 DMA request (CC2DE).
03791   * @rmtoll DIER         CC2DE         LL_TIM_EnableDMAReq_CC2
03792   * @param  TIMx Timer instance
03793   * @retval None
03794   */
03795 __STATIC_INLINE void LL_TIM_EnableDMAReq_CC2(TIM_TypeDef *TIMx)
03796 {
03797   SET_BIT(TIMx->DIER, TIM_DIER_CC2DE);
03798 }
03799 
03800 /**
03801   * @brief  Disable capture/compare 2  DMA request (CC2DE).
03802   * @rmtoll DIER         CC2DE         LL_TIM_DisableDMAReq_CC2
03803   * @param  TIMx Timer instance
03804   * @retval None
03805   */
03806 __STATIC_INLINE void LL_TIM_DisableDMAReq_CC2(TIM_TypeDef *TIMx)
03807 {
03808   CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2DE);
03809 }
03810 
03811 /**
03812   * @brief  Indicates whether the capture/compare 2 DMA request (CC2DE) is enabled.
03813   * @rmtoll DIER         CC2DE         LL_TIM_IsEnabledDMAReq_CC2
03814   * @param  TIMx Timer instance
03815   * @retval State of bit (1 or 0).
03816   */
03817 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC2(TIM_TypeDef *TIMx)
03818 {
03819   return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2DE) == (TIM_DIER_CC2DE)) ? 1UL : 0UL);
03820 }
03821 
03822 /**
03823   * @brief  Enable capture/compare 3 DMA request (CC3DE).
03824   * @rmtoll DIER         CC3DE         LL_TIM_EnableDMAReq_CC3
03825   * @param  TIMx Timer instance
03826   * @retval None
03827   */
03828 __STATIC_INLINE void LL_TIM_EnableDMAReq_CC3(TIM_TypeDef *TIMx)
03829 {
03830   SET_BIT(TIMx->DIER, TIM_DIER_CC3DE);
03831 }
03832 
03833 /**
03834   * @brief  Disable capture/compare 3  DMA request (CC3DE).
03835   * @rmtoll DIER         CC3DE         LL_TIM_DisableDMAReq_CC3
03836   * @param  TIMx Timer instance
03837   * @retval None
03838   */
03839 __STATIC_INLINE void LL_TIM_DisableDMAReq_CC3(TIM_TypeDef *TIMx)
03840 {
03841   CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3DE);
03842 }
03843 
03844 /**
03845   * @brief  Indicates whether the capture/compare 3 DMA request (CC3DE) is enabled.
03846   * @rmtoll DIER         CC3DE         LL_TIM_IsEnabledDMAReq_CC3
03847   * @param  TIMx Timer instance
03848   * @retval State of bit (1 or 0).
03849   */
03850 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC3(TIM_TypeDef *TIMx)
03851 {
03852   return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3DE) == (TIM_DIER_CC3DE)) ? 1UL : 0UL);
03853 }
03854 
03855 /**
03856   * @brief  Enable capture/compare 4 DMA request (CC4DE).
03857   * @rmtoll DIER         CC4DE         LL_TIM_EnableDMAReq_CC4
03858   * @param  TIMx Timer instance
03859   * @retval None
03860   */
03861 __STATIC_INLINE void LL_TIM_EnableDMAReq_CC4(TIM_TypeDef *TIMx)
03862 {
03863   SET_BIT(TIMx->DIER, TIM_DIER_CC4DE);
03864 }
03865 
03866 /**
03867   * @brief  Disable capture/compare 4  DMA request (CC4DE).
03868   * @rmtoll DIER         CC4DE         LL_TIM_DisableDMAReq_CC4
03869   * @param  TIMx Timer instance
03870   * @retval None
03871   */
03872 __STATIC_INLINE void LL_TIM_DisableDMAReq_CC4(TIM_TypeDef *TIMx)
03873 {
03874   CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4DE);
03875 }
03876 
03877 /**
03878   * @brief  Indicates whether the capture/compare 4 DMA request (CC4DE) is enabled.
03879   * @rmtoll DIER         CC4DE         LL_TIM_IsEnabledDMAReq_CC4
03880   * @param  TIMx Timer instance
03881   * @retval State of bit (1 or 0).
03882   */
03883 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC4(TIM_TypeDef *TIMx)
03884 {
03885   return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4DE) == (TIM_DIER_CC4DE)) ? 1UL : 0UL);
03886 }
03887 
03888 /**
03889   * @brief  Enable commutation DMA request (COMDE).
03890   * @rmtoll DIER         COMDE         LL_TIM_EnableDMAReq_COM
03891   * @param  TIMx Timer instance
03892   * @retval None
03893   */
03894 __STATIC_INLINE void LL_TIM_EnableDMAReq_COM(TIM_TypeDef *TIMx)
03895 {
03896   SET_BIT(TIMx->DIER, TIM_DIER_COMDE);
03897 }
03898 
03899 /**
03900   * @brief  Disable commutation DMA request (COMDE).
03901   * @rmtoll DIER         COMDE         LL_TIM_DisableDMAReq_COM
03902   * @param  TIMx Timer instance
03903   * @retval None
03904   */
03905 __STATIC_INLINE void LL_TIM_DisableDMAReq_COM(TIM_TypeDef *TIMx)
03906 {
03907   CLEAR_BIT(TIMx->DIER, TIM_DIER_COMDE);
03908 }
03909 
03910 /**
03911   * @brief  Indicates whether the commutation DMA request (COMDE) is enabled.
03912   * @rmtoll DIER         COMDE         LL_TIM_IsEnabledDMAReq_COM
03913   * @param  TIMx Timer instance
03914   * @retval State of bit (1 or 0).
03915   */
03916 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_COM(TIM_TypeDef *TIMx)
03917 {
03918   return ((READ_BIT(TIMx->DIER, TIM_DIER_COMDE) == (TIM_DIER_COMDE)) ? 1UL : 0UL);
03919 }
03920 
03921 /**
03922   * @brief  Enable trigger interrupt (TDE).
03923   * @rmtoll DIER         TDE           LL_TIM_EnableDMAReq_TRIG
03924   * @param  TIMx Timer instance
03925   * @retval None
03926   */
03927 __STATIC_INLINE void LL_TIM_EnableDMAReq_TRIG(TIM_TypeDef *TIMx)
03928 {
03929   SET_BIT(TIMx->DIER, TIM_DIER_TDE);
03930 }
03931 
03932 /**
03933   * @brief  Disable trigger interrupt (TDE).
03934   * @rmtoll DIER         TDE           LL_TIM_DisableDMAReq_TRIG
03935   * @param  TIMx Timer instance
03936   * @retval None
03937   */
03938 __STATIC_INLINE void LL_TIM_DisableDMAReq_TRIG(TIM_TypeDef *TIMx)
03939 {
03940   CLEAR_BIT(TIMx->DIER, TIM_DIER_TDE);
03941 }
03942 
03943 /**
03944   * @brief  Indicates whether the trigger interrupt (TDE) is enabled.
03945   * @rmtoll DIER         TDE           LL_TIM_IsEnabledDMAReq_TRIG
03946   * @param  TIMx Timer instance
03947   * @retval State of bit (1 or 0).
03948   */
03949 __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_TRIG(TIM_TypeDef *TIMx)
03950 {
03951   return ((READ_BIT(TIMx->DIER, TIM_DIER_TDE) == (TIM_DIER_TDE)) ? 1UL : 0UL);
03952 }
03953 
03954 /**
03955   * @}
03956   */
03957 
03958 /** @defgroup TIM_LL_EF_EVENT_Management EVENT-Management
03959   * @{
03960   */
03961 /**
03962   * @brief  Generate an update event.
03963   * @rmtoll EGR          UG            LL_TIM_GenerateEvent_UPDATE
03964   * @param  TIMx Timer instance
03965   * @retval None
03966   */
03967 __STATIC_INLINE void LL_TIM_GenerateEvent_UPDATE(TIM_TypeDef *TIMx)
03968 {
03969   SET_BIT(TIMx->EGR, TIM_EGR_UG);
03970 }
03971 
03972 /**
03973   * @brief  Generate Capture/Compare 1 event.
03974   * @rmtoll EGR          CC1G          LL_TIM_GenerateEvent_CC1
03975   * @param  TIMx Timer instance
03976   * @retval None
03977   */
03978 __STATIC_INLINE void LL_TIM_GenerateEvent_CC1(TIM_TypeDef *TIMx)
03979 {
03980   SET_BIT(TIMx->EGR, TIM_EGR_CC1G);
03981 }
03982 
03983 /**
03984   * @brief  Generate Capture/Compare 2 event.
03985   * @rmtoll EGR          CC2G          LL_TIM_GenerateEvent_CC2
03986   * @param  TIMx Timer instance
03987   * @retval None
03988   */
03989 __STATIC_INLINE void LL_TIM_GenerateEvent_CC2(TIM_TypeDef *TIMx)
03990 {
03991   SET_BIT(TIMx->EGR, TIM_EGR_CC2G);
03992 }
03993 
03994 /**
03995   * @brief  Generate Capture/Compare 3 event.
03996   * @rmtoll EGR          CC3G          LL_TIM_GenerateEvent_CC3
03997   * @param  TIMx Timer instance
03998   * @retval None
03999   */
04000 __STATIC_INLINE void LL_TIM_GenerateEvent_CC3(TIM_TypeDef *TIMx)
04001 {
04002   SET_BIT(TIMx->EGR, TIM_EGR_CC3G);
04003 }
04004 
04005 /**
04006   * @brief  Generate Capture/Compare 4 event.
04007   * @rmtoll EGR          CC4G          LL_TIM_GenerateEvent_CC4
04008   * @param  TIMx Timer instance
04009   * @retval None
04010   */
04011 __STATIC_INLINE void LL_TIM_GenerateEvent_CC4(TIM_TypeDef *TIMx)
04012 {
04013   SET_BIT(TIMx->EGR, TIM_EGR_CC4G);
04014 }
04015 
04016 /**
04017   * @brief  Generate commutation event.
04018   * @rmtoll EGR          COMG          LL_TIM_GenerateEvent_COM
04019   * @param  TIMx Timer instance
04020   * @retval None
04021   */
04022 __STATIC_INLINE void LL_TIM_GenerateEvent_COM(TIM_TypeDef *TIMx)
04023 {
04024   SET_BIT(TIMx->EGR, TIM_EGR_COMG);
04025 }
04026 
04027 /**
04028   * @brief  Generate trigger event.
04029   * @rmtoll EGR          TG            LL_TIM_GenerateEvent_TRIG
04030   * @param  TIMx Timer instance
04031   * @retval None
04032   */
04033 __STATIC_INLINE void LL_TIM_GenerateEvent_TRIG(TIM_TypeDef *TIMx)
04034 {
04035   SET_BIT(TIMx->EGR, TIM_EGR_TG);
04036 }
04037 
04038 /**
04039   * @brief  Generate break event.
04040   * @rmtoll EGR          BG            LL_TIM_GenerateEvent_BRK
04041   * @param  TIMx Timer instance
04042   * @retval None
04043   */
04044 __STATIC_INLINE void LL_TIM_GenerateEvent_BRK(TIM_TypeDef *TIMx)
04045 {
04046   SET_BIT(TIMx->EGR, TIM_EGR_BG);
04047 }
04048 
04049 /**
04050   * @}
04051   */
04052 
04053 #if defined(USE_FULL_LL_DRIVER)
04054 /** @defgroup TIM_LL_EF_Init Initialisation and deinitialisation functions
04055   * @{
04056   */
04057 
04058 ErrorStatus LL_TIM_DeInit(TIM_TypeDef *TIMx);
04059 void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct);
04060 ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, LL_TIM_InitTypeDef *TIM_InitStruct);
04061 void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct);
04062 ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct);
04063 void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct);
04064 ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, LL_TIM_IC_InitTypeDef *TIM_IC_InitStruct);
04065 void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct);
04066 ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct);
04067 void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct);
04068 ErrorStatus LL_TIM_HALLSENSOR_Init(TIM_TypeDef *TIMx, LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct);
04069 void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct);
04070 ErrorStatus LL_TIM_BDTR_Init(TIM_TypeDef *TIMx, LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct);
04071 /**
04072   * @}
04073   */
04074 #endif /* USE_FULL_LL_DRIVER */
04075 
04076 /**
04077   * @}
04078   */
04079 
04080 /**
04081   * @}
04082   */
04083 
04084 #endif /* TIM1 || TIM2 || TIM3 || TIM4 || TIM5 || TIM6 || TIM7 || TIM8 || TIM9 || TIM10 || TIM11 || TIM12 || TIM13 || TIM14 */
04085 
04086 /**
04087   * @}
04088   */
04089 
04090 #ifdef __cplusplus
04091 }
04092 #endif
04093 
04094 #endif /* __STM32F4xx_LL_TIM_H */
04095 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/