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