Subversion Repositories DashDisplay

Rev

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

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