Subversion Repositories DashDisplay

Rev

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