```html
|
STM32G474xx HAL 用户手册
|
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__) \