```html STM32G474xx HAL 用户手册: stm32g4xx_ll_tim.h 源文件
STM32G474xx HAL 用户手册
stm32g4xx_ll_tim.h
转到此文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_ll_tim.h
00004   * @author  MCD 应用团队
00005   * @brief   TIM LL 模块的头文件。
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * 版权所有 (c) 2019 STMicroelectronics。
00010   * 保留所有权利。
00011   *
00012   * 本软件根据可在 LICENSE 文件中找到的条款进行许可
00013   * 位于此软件组件的根目录中。
00014   * 如果没有随本软件提供 LICENSE 文件,则按“原样”提供。
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* 定义以防止递归包含 -------------------------------------*/
00020 #ifndef __STM32G4xx_LL_TIM_H
00021 #define __STM32G4xx_LL_TIM_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* 包含文件 ------------------------------------------------------------------*/
00028 #include "stm32g4xx.h"
00029 
00030 /** @addtogroup STM32G4xx_LL_Driver
00031   * @{
00032   */
00033 
00034 #if defined (TIM1) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM5) || defined (TIM6) || defined (TIM7) || defined (TIM8) || defined (TIM15) || defined (TIM16) || defined (TIM17) || defined (TIM20)
00035 
00036 /** @defgroup TIM_LL TIM
00037   * @{
00038   */
00039 
00040 /* 私有类型 -------------------------------------------------------------*/
00041 /* 私有变量 ---------------------------------------------------------*/
00042 /** @defgroup TIM_LL_Private_Variables TIM 私有变量
00043   * @{
00044   */
00045 static const uint8_t OFFSET_TAB_CCMRx[] =
00046 {
00047   0x00U,   /* 0: TIMx_CH1  */
00048   0x00U,   /* 1: TIMx_CH1N */
00049   0x00U,   /* 2: TIMx_CH2  */
00050   0x00U,   /* 3: TIMx_CH2N */
00051   0x04U,   /* 4: TIMx_CH3  */
00052   0x04U,   /* 5: TIMx_CH3N */
00053   0x04U,   /* 6: TIMx_CH4  */
00054   0x04U,   /* 7: TIMx_CH4N */
00055   0x38U,   /* 8: TIMx_CH5  */
00056   0x38U    /* 9: TIMx_CH6  */
00057 
00058 };
00059 
00060 static const uint8_t SHIFT_TAB_OCxx[] =
00061 {
00062   0U,            /* 0: OC1M, OC1FE, OC1PE */
00063   0U,            /* 1: - 不适用 */
00064   8U,            /* 2: OC2M, OC2FE, OC2PE */
00065   0U,            /* 3: - 不适用 */
00066   0U,            /* 4: OC3M, OC3FE, OC3PE */
00067   0U,            /* 5: - 不适用 */
00068   8U,            /* 6: OC4M, OC4FE, OC4PE */
00069   0U,            /* 7: - 不适用 */
00070   0U,            /* 8: OC5M, OC5FE, OC5PE */
00071   8U             /* 9: OC6M, OC6FE, OC6PE */
00072 };
00073 
00074 static const uint8_t SHIFT_TAB_ICxx[] =
00075 {
00076   0U,            /* 0: CC1S, IC1PSC, IC1F */
00077   0U,            /* 1: - 不适用 */
00078   8U,            /* 2: CC2S, IC2PSC, IC2F */
00079   0U,            /* 3: - 不适用 */
00080   0U,            /* 4: CC3S, IC3PSC, IC3F */
00081   0U,            /* 5: - 不适用 */
00082   8U,            /* 6: CC4S, IC4PSC, IC4F */
00083   0U,            /* 7: - 不适用 */
00084   0U,            /* 8: - 不适用 */
00085   0U             /* 9: - 不适用 */
00086 };
00087 
00088 static const uint8_t SHIFT_TAB_CCxP[] =
00089 {
00090   0U,            /* 0: CC1P */
00091   2U,            /* 1: CC1NP */
00092   4U,            /* 2: CC2P */
00093   6U,            /* 3: CC2NP */
00094   8U,            /* 4: CC3P */
00095   10U,           /* 5: CC3NP */
00096   12U,           /* 6: CC4P */
00097   14U,           /* 7: CC4NP */
00098   16U,           /* 8: CC5P */
00099   20U            /* 9: CC6P */
00100 };
00101 
00102 static const uint8_t SHIFT_TAB_OISx[] =
00103 {
00104   0U,            /* 0: OIS1 */
00105   1U,            /* 1: OIS1N */
00106   2U,            /* 2: OIS2 */
00107   3U,            /* 3: OIS2N */
00108   4U,            /* 4: OIS3 */
00109   5U,            /* 5: OIS3N */
00110   6U,            /* 6: OIS4 */
00111   7U,            /* 7: OIS4N */
00112   8U,            /* 8: OIS5 */
00113   10U            /* 9: OIS6 */
00114 };
00115 /**
00116   * @}
00117   */
00118 
00119 /* 私有常量 ---------------------------------------------------------*/
00120 /** @defgroup TIM_LL_Private_Constants TIM 私有常量
00121   * @{
00122   */
00123 
00124 /* 用于寄存器中位位置和执行偏移的定义 */
00125 #define TIM_POSITION_BRK_SOURCE            (POSITION_VAL(Source) & 0x1FUL)
00126 
00127 /* 用于 TIMx_AF1 寄存器的通用位定义 */
00128 #define TIMx_AF1_BKINP     TIM1_AF1_BKINP     /*!< BRK BKIN 输入极性 */
00129 #define TIMx_AF1_ETRSEL    TIM1_AF1_ETRSEL    /*!< TIMx ETR 源选择 */
00130 
00131 
00132 /* 用于设置 TIMx_BDTR 寄存器 DTG 位的 TDG[x:0] 的掩码 */
00133 #define DT_DELAY_1 ((uint8_t)0x7F)
00134 #define DT_DELAY_2 ((uint8_t)0x3F)
00135 #define DT_DELAY_3 ((uint8_t)0x1F)
00136 #define DT_DELAY_4 ((uint8_t)0x1F)
00137 
00138 /* 用于设置 TIMx_BDTR 寄存器 DTG 位中 DTG[7:5] 位的掩码 */
00139 #define DT_RANGE_1 ((uint8_t)0x00)
00140 #define DT_RANGE_2 ((uint8_t)0x80)
00141 #define DT_RANGE_3 ((uint8_t)0xC0)
00142 #define DT_RANGE_4 ((uint8_t)0xE0)
00143 
00144 /** 为兼容性目的保留的旧定义
00145 @cond 0
00146   */
00147 /**
00148 @endcond
00149   */
00150 
00151 #define OCREF_CLEAR_SELECT_Pos (28U)
00152 #define OCREF_CLEAR_SELECT_Msk (0x1UL << OCREF_CLEAR_SELECT_Pos)                /*!< 0x10000000 */
00153 /**
00154   * @}
00155   */
00156 
00157 /* 私有宏 ------------------------------------------------------------*/
00158 /** @defgroup TIM_LL_Private_Macros TIM 私有宏
00159   * @{
00160   */
00161 /** @brief  将通道 ID 转换为通道索引。
00162   * @param  __CHANNEL__ 此参数可以是以下值之一:
00163   *         @arg @ref LL_TIM_CHANNEL_CH1
00164   *         @arg @ref LL_TIM_CHANNEL_CH1N
00165   *         @arg @ref LL_TIM_CHANNEL_CH2
00166   *         @arg @ref LL_TIM_CHANNEL_CH2N
00167   *         @arg @ref LL_TIM_CHANNEL_CH3
00168   *         @arg @ref LL_TIM_CHANNEL_CH3N
00169   *         @arg @ref LL_TIM_CHANNEL_CH4
00170   *         @arg @ref LL_TIM_CHANNEL_CH4N
00171   *         @arg @ref LL_TIM_CHANNEL_CH5
00172   *         @arg @ref LL_TIM_CHANNEL_CH6
00173   * @retval 无
00174   */
00175 #define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \
00176   (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\
00177    ((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\
00178    ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\
00179    ((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\
00180    ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\
00181    ((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U :\
00182    ((__CHANNEL__) == LL_TIM_CHANNEL_CH4) ? 6U :\
00183    ((__CHANNEL__) == LL_TIM_CHANNEL_CH4N) ? 7U :\
00184    ((__CHANNEL__) == LL_TIM_CHANNEL_CH5) ? 8U : 9U)
00185 
00186 /** @brief  计算死区时间采样周期(以皮秒为单位)。
00187   * @param  __TIMCLK__ 定时器输入时钟频率(以 Hz 为单位)。
00188   * @param  __CKD__ 此参数可以是以下值之一:
00189   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV1
00190   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV2
00191   *         @arg @ref LL_TIM_CLOCKDIVISION_DIV4
00192   * @retval 无
00193   */
00194 #define TIM_CALC_DTS(__TIMCLK__, __CKD__)                                                        \